在 Ubuntu 中配置 Samba 实现「特定用户可写,其他用户只读」的共享目录

需求目标

  • 所有认证用户可访问 Samba 共享目录 /path/to/home
  • **仅特定用户(如 developer)**拥有写权限;
  • 其他用户仅允许读取;
  • 禁止匿名访问

配置步骤

1. 设置文件系统权限

将目录 /home3/guest 的所有权设为 developer 用户和所属组,并设置权限:

sudo chown -R developer:developer /path/to/home
sudo chmod -R 755 /path/to/home
  • 755 权限:
    • 所有者(developer)可读写执行;
    • 其他用户仅可读和执行。

说明:此配置确保文件系统权限与 Samba 配置一致,避免权限冲突。


2. 配置 Samba 共享目录

编辑 Samba 配置文件(通常位于 /etc/samba/smb.conf),添加以下内容:

[public]
path = /path/to/home
public = no
browseable = yes
writable = no
write list = developer
create mask = 0644
directory mask = 0755
配置参数详解
参数作用
path共享目录的物理路径
public = no禁止匿名访问
browseable = yes允许用户浏览目录
writable = no默认所有用户不可写
write list = developerdeveloper 用户可写
create mask = 0644新建文件的权限(所有者可读写,其他用户只读)
directory mask = 0755新建目录的权限(所有者可读写执行,其他用户只读执行)

3. 重启 Samba 服务

应用配置更改:

sudo systemctl restart smbd

关键原理说明

1. Samba 的默认行为

  • 未设置 valid users:Samba 默认允许所有认证用户访问共享目录;
  • writable = no + write list:通过白名单控制写权限,避免手动维护 valid users 列表。

2. 权限优先级

  • Samba 配置 > 文件系统权限:即使文件系统允许组写入(如 755),Samba 的 writable = nowrite list 会覆盖这一限制,确保仅白名单用户可写。

3. 安全性设计

  • 禁止匿名访问:通过 public = no 和全局默认配置 map to guest = Bad User 实现;
  • 最小权限原则:默认只读,通过白名单授予写权限。

注意事项

1. 配置一致性

  • 确保文件系统权限与 Samba 配置一致,避免权限冲突。
  • 若发现权限异常,检查 Samba 日志:/var/log/samba/smbd.log

2. 扩展场景

  • 限制特定用户组访问
    添加 valid users = @group_name 限制仅某组用户可访问;
  • 更细粒度控制
    使用 ACL(setfacl)实现更复杂的权限管理。

总结

通过上述配置,你可以实现:

  • 所有认证用户可读共享目录;
  • 仅特定用户(如 developer 可写;
  • 无需频繁维护用户列表,适应用户频繁变动的场景;
  • 安全可控,避免匿名访问和权限泄露风险。

此方案适用于开发团队协作、自动化构建目录等场景,确保数据安全的同时提升协作效率。

### 解决 Windows 系统通过 Samba 访问 Linux 文件夹无写权限问题 为了使 Windows 用户能够成功获取对 Samba 共享文件夹的写入权限,需确保两个方面都已妥善处理: #### 一、修改 `/etc/samba/smb.conf` 中共享部分配置项 对于特定共享目录,在 `[SambaSharedFolder]` 下应设置 `writable = yes` 和 `create mask = 0775` 来允许创建新文件并赋予适当权限[^3]。 ```ini [SambaSharedFolder] comment = Network Shared Folder by Samba Server on Ubuntu path = /home/qinxk8/SambaSharedFolder valid users = @users, root ; 指定哪些用户有访问权 write list = @users ; 明确指出谁拥有写的权利 force create mode = 0664 ; 新建文件默认权限模式 directory mask = 0775 ; 创建的新目录默认权限模式 public = no ; 不公开此分享给所有人 browseable = yes ; 浏览网络邻居可见 read only = no ; 设置为读/写而非只读 ``` #### 二、调整 Linux 主机上的本地磁盘权限结构 除了上述 SMB 配置外,还需保证实际存储数据的位置具有足够的 Unix/Linux 文件系统级权限。假设共享位置位于 `/home/qinxk8/SambaSharedFolder` ,则可通过如下命令来设定合适的属组关系以及相应的 rwx 属性: ```bash sudo chown -R qinxk8:users /home/qinxk8/SambaSharedFolder/ sudo chmod -R g+rws /home/qinxk8/SambaSharedFolder/ ``` 这里 `-R` 参数表示递归应用更改;`g+rws` 表示给予所属组成员读取(`r`)、写入(`w`)和执行(`x`)的权利,并启用 setgid 位使得新建子项目继承父目录相同的 group ownership[^1]。 完成以上两步之后重启 Samba 服务以加载新的配置: ```bash sudo systemctl restart smbd.service ``` 最后建议运行测试工具验证配置的有效性: ```bash testparm -s ``` 如果一切正常,则 Windows 应该能顺利连接至指定路径下的资源并且具备完整的读写能力了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值