Zaz*_*Zaz 24 permissions samba file-sharing
我有一个使用 samba 共享一些文件夹的 ubuntu 服务器。当客户端创建新文件夹或文件时,权限不会根据 smb.conf 中的设置进行设置。
我对特定共享的当前设置:
[share]
path = /mnt/share
browsable = yes
guest ok = no
writable = yes
read only = no
create mask = 0774
directory mask = 0774
write list = netuser
Run Code Online (Sandbox Code Playgroud)
当 samba 客户端(Windows 7 机器)使用“netuser”帐户创建文件或目录时,权限变为
drwxr-sr-- 2 netuser sambashare 4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare 0 2012-01-22 21:07 New Text Document.txt
Run Code Online (Sandbox Code Playgroud)
父目录设置了组 id 标志,因此是 sambashare 组所有者。这个想法是 samba 用户和服务器用户都属于 sambashare 组,因此能够编辑、删除和创建文件和目录。但是,由于创建的文件夹没有组设置的写入标志,服务器用户无法在没有 sudo 的情况下在这些文件夹中创建新文件或文件夹。
我已经测试了添加和删除目录掩码、强制目录模式、目录安全模式和强制目录安全模式,但行为仍然存在。新创建的文件和文件夹没有获得预期的 774 权限,而是分别获得 764 和 754 权限。
我错过了什么?为什么 samba 没有设置正确的权限?
Pan*_*her 21
我认为您需要使用以下参数:
# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
Run Code Online (Sandbox Code Playgroud)
我正在寻找有关这些设置如何工作的很好的解释,但找不到比man smb.conf更好的方法
您将不得不向下滚动一些选项。
基本上,简而言之,windows 权限与 unix (linux) 不同,samba 映射权限的方式有点奇怪。
小智 11
我遇到了同样的问题,但是像掩码指令这样的所有内容对我都不起作用(Samba 4.3.11):
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
Run Code Online (Sandbox Code Playgroud)
唯一有效的选项是在 [global] 或 share 部分下:
inherit permissions = yes
Run Code Online (Sandbox Code Playgroud)
只需根据需要更改所有文件夹和文件权限,以便以后的文件夹和文件将继承相同的权限。
小智 9
经过大量试验和错误,这是使用 SGID 和 unix 组共享 samba 目录的正确代码。如果用户匿名连接,他将获得 r/o,如果他登录并且是指定组的成员,他将获得 r/w。
我将名为“admin”的组设置为具有写入权限的用户的主要组,其他所有人都获得只读权限。
我强迫用户没有人,所以不同的人处理相同的文件不会相互干扰。
我在共享目录上设置了 chmod 2755,因此它继承了具有相同组“admin”的创建目录
$ chmod -R 2755 /home/shares/test
Run Code Online (Sandbox Code Playgroud)
检查一切是否正常:
$ stat /home/shares/test
Access: (2755/drwxr-sr-x) Uid: (65534/ nobody) Gid: ( 1001/ admin)
Run Code Online (Sandbox Code Playgroud)
/etc/samba/smb.conf 的相关部分:
[test]
comment = test
path = /home/shares/test
force user = nobody
read only = No
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
Run Code Online (Sandbox Code Playgroud)
这篇文章让我走上了正轨,但 testparm 显示了 4 个不正确的指令,所以我在这里分享固定配置。在 samba 中,您指定的指令越少,它的效果就越好。