![如何设置 Samba 的写权限?](https://linux22.com/image/1152560/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20Samba%20%E7%9A%84%E5%86%99%E6%9D%83%E9%99%90%EF%BC%9F.png)
我已经搜索了大约 6 个小时来尝试设置我的 samba(版本 4.6.7)服务器,但我无法让我的用户创建具有-rw-rw----
权限的文件。
首先,让我解释一下我的最终目标(也许有比我目前正在研究的更简单的解决方案,如果有的话告诉我):我想要有 1 个无需身份验证即可使用的共享、1 个仅可由用户“foo”访问的共享以及 1 个仅可由用户“bar”访问的共享。
以下是我目前所做的工作:我创建了 UNIX 用户“main”、“foo”和“bar”,他们都在 UNIX 组“smbusers”中。我还将用户“nobody”添加到组“smbusers”。然后我在中创建了共享/tmp/testshare
,具有以下权限:
> ls -la /tmp/testshare
drwxrws--- 5 main smbusers 4096 Dec 24 17:29 .
drwxrwxrwt 12 root root 4096 Dec 24 17:28 ..
drwxrws--- 2 main smbusers 4096 Dec 24 17:29 bar
drwxrws--- 2 main smbusers 4096 Dec 24 17:29 foo
drwxrws--- 2 main smbusers 4096 Dec 24 17:28 Public
这是我的配置smb.conf
:
[global]
server string = %h server (Samba, Ubuntu)
server role = standalone server
os level = 20
workgroup = WORKGROUP
writeable = yes
security = user
map to guest = bad password
force user = main
force group = smbusers
create mask = 0660
force create mode = 0660
directory mask = 0770
force directory mode = 0770
encrypt passwords = yes
unix password sync = yes
passdb backend = tdbsam
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
pam password change = yes
obey pam restrictions = yes
panic action = /usr/share/samba/panic-action %d
max log size = 1000
log file = /var/log/samba/log.%m
dns proxy = no
socket options = TCP_NODELAY
[Public]
path = /tmp/testshare/public
guest ok = yes
[bar]
path = /tmp/testshare/bar
valid users = bar
[foo]
path = /tmp/testshare/foo
valid users = foo
更新:现在,在 Windows 中,如果我以访客身份(又名“nobody:nogroup”)创建文件,这些文件将被赋予我设置的正确权限,但是,只要我连接到任何帐户“foo”或“bar”,它就会拒绝为该组设置写权限(或者甚至拒绝为任何人设置写权限,正如我稍后尝试的那样create mask = 0222
):
#I created these two without authenticating myself
> ls -lA /tmp/testshare/public
-rw-rw---- 1 main smbusers 0 Dec 24 19:43 New Text Document.txt
drwxrwx--- 2 main smbusers 4096 Dec 24 19:43 New Folder
#I created these two after I succesfully authenticated myself as "foo".
> ls -lA /tmp/testshare/public
-rw-r----- 1 main smbusers 0 Dec 24 19:43 New Text Document.txt
drwxr-x--- 2 main smbusers 4096 Dec 24 19:43 New Folder
如您所见,一旦我验证了自己的身份,它就拒绝向该组授予写权限,因此我无法从 Windows 编辑文件。
我需要做哪些更改才能使其按预期工作?我怀疑帐户配置不正确,但我不知道我做错了什么。
注意:我还应该提到,testshare
我用于测试的文件夹位于运行我的Ubuntu 服务器 17.10,而我的真实设置将使用安装在 ntfs-3g 中的外部驱动器。
更新2:我尝试在 ntfs-3g 中安装的外部驱动器上进行相同的设置,一切正常。不过我仍然很好奇为什么它在我的文件夹中不起作用/tmp/testshare
...