我无法让 Samba 对创建的目录设置适当的权限

我无法让 Samba 对创建的目录设置适当的权限

我有一台使用 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

相关内容