我正在尝试挂载一个 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=krb5
或sec=krb5i
。)
但是,您可以通过此配置在一定程度上解决该问题。我没有对其进行广泛的测试,特别是我只进行了粗略的访问权限审查。
smb.conf
[global] unix extensions = no [multiuser_test] comment = Temporary multiuser access path = /samba/tmp guest ok = no read only = no
客户。确保您的用户在
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
在这种情况下(请记住这是一种解决方法)客户端用户将仅被服务器视为对安装进行身份验证的单个用户。本地客户端权限控制对共享的访问。