挂载 samba 共享,使其归 root 所有并且组中的用户可以读/写

挂载 samba 共享,使其归 root 所有并且组中的用户可以读/写

我正在尝试挂载一个 samba 共享,该共享由root名为 的组所拥有,并且该组的用户smbshare可以访问它、读取和写入其中的文件。

我尝试将其放入我的/etc/fstab

//fs/myshare /media/share cifs credentials=/root/.cifs,rw,user,iocharset=utf8,sec=ntlmssp,gid=smbshare,dir_mode=0770,file_mode=0660,vers=3.0 0 0

这会按预期安装,除了我的用户(位于 group 中smbshare)获取Permission denied

user1@myhost:/media$ id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(smbshare)

user1@myhost:/media$ ll
total 8
drwxr-xr-x  3 root root     4096 Jan 25 15:23 ./
drwxr-xr-x 19 root root     4096 Jan 18 10:11 ../
drwxrwxr-x  2 root smbshare    0 Jan 25 16:39 share/

user1@myhost:/media$ ls share/
ls: cannot open directory 'share/': Permission denied

如果我更改dir_mode=0770,file_mode=0660为更宽松的内容,则用户可以访问该文件夹...即使它不在组中smbshare

/etc/samba/smb.conf对于它的价值,这里是来自服务器的部分fs

[myshare]
    comment = my share
    path = /share/myshare
    read only = no
    browsable = yes
    create mask = 0664
    directory mask = 0775

编辑:

smbshare如果我安装的不是一个新组,gid=user1它就可以工作

/etc/fstab:

//fs/myshare /media/share cifs credentials=/root/.cifs,rw,user,iocharset=utf8,sec=ntlmssp,gid=user1,dir_mode=0770,file_mode=0660,vers=3.0 0 0

答案1

实现此目的的正确方法是使用基于 Kerberos 的身份验证并将标志multiuser与选项一起传递mount。然后,服务器将看到您的客户端用户并将其作为个人进行身份验证。(请注意,这不能与 一起使用sec=ntlmssp;您确实需要能够使用sec=krb5sec=krb5i。)

但是,您可以通过此配置在一定程度上解决该问题。我没有对其进行广泛的测试,特别是我只进行了粗略的访问权限审查。

  1. smb.conf

    [global]
        unix extensions = no
    
    [multiuser_test]
        comment = Temporary multiuser access
        path = /samba/tmp
        guest ok = no
        read only = no
    
  2. 客户。确保您的用户在smbshare组中:

    mkdir -p /mnt/net
    mount -t cifs -o credentials=/root/.smb_credentials,rw,gid=smbshare,dir_mode=0775,file_mode=0664 //server/multiuser_test/try /mnt/net
    

在这种情况下(请记住这是一种解决方法)客户端用户将仅被服务器视为对安装进行身份验证的单个用户。本地客户端权限控制对共享的访问。

相关内容