我无法让samba在创建的目录上设置适当的权限


17

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

父目录具有set group id标志,因此是sambashare组所有者。这个想法是,samba用户和服务器用户都属于sambashare组,因此能够编辑,删除和创建文件和目录。但是,由于创建的文件夹没有组的写标志,因此服务器用户无法在没有sudo的情况下在这些文件夹中创建新文件或文件夹。

我已经测试过添加和删除目录掩码,强制目录模式,目录安全模式和强制目录安全模式,但是行为仍然存在。新创建的文件和文件夹未获得预期的774许可,而是分别获得764和754许可。

我想念什么?为什么samba没有设置正确的权限?

Answers:


19

我认为您需要使用以下参数:

# 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

我一直在寻找有关这些设置如何工作的很好的解释,但找不到比man smb.conf更好的东西了。

您将不得不向下滚动这些选项。

简而言之,Windows权限与UNIX(Linux)不同,并且samba映射权限的方式有点奇怪。


1
是的,这似乎与我查看的samba.org/samba/docs/man/manpages-3/smb.conf.5.html大致相同。设置的值,我仍然在创建的文件或文件夹上获得相同的权限。
Zaz 2012年

您设置了我给您的所有选项吗?如果是这样,请更新您的第一篇文章,那时候我建议您提交一个错误报告。

1
它已经说了..但是在更仔细的检查和测试中,将2添加到目录掩码中确实解决了该问题。非常感谢。:D
Zaz 2012年

太好了,谢谢您将此标记为可接受的答案,它可以帮助其他有类似问题的人。
Panther

Samba配置过于复杂,确实很难理解。例如,强制创建和仅创建...之间的逻辑区别是没有意义的。您的提示虽然可以节省生命-谢谢!
Matthias Hryniszak '16

8

经过反复试验,这是使用SGID和UNIX组共享samba目录的正确代码。如果用户匿名连接,则他得到r / o;如果他登录并是指定组的成员,则他得到r / w。

我将名为“ admin”的组设置为具有写权限的用户的主要组,其他所有人都获得了只读权限。

我将用户强加给任何人,因此在同一文件上工作的不同人员不会互相干扰。

我在共享目录上设置了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中,您指定的指令越少越好。


6

我有同样的问题,但像面具指令都没有为我工作(桑巴4.3.11):

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

唯一可行的选择是在[global]或share部分下:

 inherit permissions = yes

只需根据需要更改所有文件夹和文件权限,这样以后的文件夹和文件将继承相同的权限。


我正在使用Samba 4.7.6-Ubuntu版本。这也为我工作。
Andi S.

也是4.8.11on的正确答案freebsd:)
抖动

3

从其他Unix / Linux / OSX / MacOS设备连接时,存在非常相似的问题:除非您指定,否则所有设置都将被忽略。

[global]

unix extensions = no

并用smb://<serverhost>代替cifs://<serverhost>


0
 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.