Samba共享CIFS挂载后组无写入权限问题求助
解决Samba CIFS挂载后组无写入权限的问题
你的问题核心出在Samba配置的权限强制参数,以及CIFS挂载选项的设置上,咱们一步步来排查修复:
1. 修正Samba共享配置(smb.conf)
你设置的force directory mode=2000是关键问题——这个值只开启了setgid位(对应八进制的2000,也就是chmod g+s),但没有给组分配读写执行权限。同时force create mode=0777权限过于宽松,不符合你的组权限管控需求。
修改smb.conf中的相关参数:
[share_name] path=/home/samba read only=no writeable=yes public=no # 让新建文件的组拥有读写权限,其他用户无权限 force create mode=0660 # 让新建目录保留setgid位,同时组拥有读写执行权限 force directory mode=2770 force group=group1 valid users=@group1 browseable=no guest ok=no # 注释掉该参数,避免和force类权限参数冲突 # inherit permissions=yes
说明:
inherit permissions=yes会让Samba继承系统目录的原有权限设置,这可能会覆盖你配置的force系列参数,所以先注释掉,等权限正常后再根据实际需求调整。
2. 调整CIFS挂载选项
你的挂载命令缺少明确指定目录和文件权限的选项,导致挂载后权限被默认的rwxr-xr-x覆盖。修改挂载命令如下:
sudo mount -t cifs //server_name/share_name /mnt/share_name -o user=user1,gid=group1,dir_mode=0770,file_mode=0660,nounix
选项解释:
dir_mode=0770:强制挂载后的目录权限为组读写执行file_mode=0660:强制挂载后的文件权限为组读写nounix:避免CIFS客户端与Samba服务器的Unix权限映射冲突(针对Linux/Unix客户端非常有用)
3. 重启服务并验证
- 重启Samba服务生效配置:
sudo systemctl restart smbd nmbd - 卸载现有挂载并重新挂载:
sudo umount /mnt/share_name # 用修改后的命令重新挂载 sudo mount -t cifs //server_name/share_name /mnt/share_name -o user=user1,gid=group1,dir_mode=0770,file_mode=0660,nounix - 查看挂载后的权限:
此时应该看到目录权限为ls -ld /mnt/share_name /mnt/share_name/subdir*drwxrws---,文件权限为-rw-rw----,group1组的用户可以正常执行写入操作。
额外检查点
- 确认
user1确实属于group1:执行id user1查看用户组信息 - 检查Samba服务器上的SELinux/AppArmor设置(如果启用),确保它们没有阻止Samba的写入操作
- 查看Samba日志(通常在
/var/log/samba/目录下),若仍有问题,日志会提供更详细的错误线索
内容的提问来源于stack exchange,提问作者Albert Greinöcker
相关产品推荐
相关产品推荐

