我有一台使用 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
当 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
父目录已设置组 ID 标志,因此是 sambashare 组所有者。这个想法是,samba 用户和服务器用户都属于 sambashare 组,因此能够编辑、删除和创建文件和目录。但是,由于创建的文件夹没有为组设置写入标志,因此服务器用户无法在没有 sudo 的情况下在这些文件夹中创建新文件或文件夹。
我已经测试过添加和删除目录掩码、强制目录模式、目录安全模式和强制目录安全模式,但行为仍然存在。新创建的文件和文件夹没有获得预期的 774 权限,而是分别获得 764 和 754。
我遗漏了什么?为什么 samba 没有设置正确的权限?
答案1
我认为您需要使用以下参数:
# 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
我正在寻找一个很好的解释来解释这些设置是如何工作的,但没有找到更好的。配置文件
您必须向下滚动一点才能看到这些选项。
基本上,简而言之,windows 权限与 unix(linux)不一样,并且 samba 映射权限的方式有点奇怪。
答案2
我有同样的问题,但一切都像面具指令没有为我工作(Samba 4.3.11):
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
唯一有效的选项是在 [global] 或 share 部分下:
inherit permissions = yes
只需根据需要更改所有文件夹和文件权限,这样未来的文件夹和文件将继承相同的权限。
答案3
经过多次尝试和错误,这是使用 SGID 和 unix 组共享 samba 目录的正确代码。如果用户匿名连接,他将获得 r/o 权限,如果他登录并且是指定组的成员,他将获得 r/w 权限。
我将名为“admin”的组设置为对具有写权限的用户的主要组,其他所有人都只具有读权限。
我强制用户为 nobody,因此处理同一文件的不同人不会互相干扰。
我在共享目录上设置了 chmod 2755,因此它继承了具有相同组“admin”的创建的目录
$ chmod -R 2755 /home/shares/test
检查一切是否正常:
$ stat /home/shares/test
Access: (2755/drwxr-sr-x) Uid: (65534/ nobody) Gid: ( 1001/ admin)
/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
这篇文章让我走上了正轨,但 testparm 揭示了 4 个不正确的指令,所以我在这里分享已修复的配置。在 samba 中,指定的指令越少,效果越好。
答案4
Here add this code to the sudo nano smb.conf
and restart sudo service smbd restart and access from another local PC/computer using connect with smb://<serverhost> to create or edit files/folder html is folder name
[html]
comment = admin access
path = /var/www/html
browsable = yes
guest ok = no
writable = yes
valid users = @admin
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775