除非文件具有 777 权限,否则与“强制用户”的 Samba 共享仍然不可写

Bri*_*Bri 2 permissions samba

我有一个运行 Debian 10 和 Samba 4.9.5 的无头服务器。我想在其中共享一个任何用户都具有完全读/写访问权限的文件夹。这是我的整个 smb.conf 文件:

[global]
workgroup = WORKGROUP
netbios name = MyServerName
security = user
map to guest = bad user
guest account = myuser
dns proxy = no
log level = 4

[Stuff]
path = /home/myuser/share
force user = myuser
force group = myuser
browseable = yes
guest ok = yes
write list = myuser
read only = no
Run Code Online (Sandbox Code Playgroud)

myuser具有对所有文件的读/写访问权限以及对/home/myuser/share. 但是,某些文件对其组没有写访问权限或其他权限。即他们的权限是755、644等。

无论出于何种原因,即使我已设置force usermyuser.

我也刚刚注意到这map to guest似乎也无法正常工作。如果我使用无效的用户名连接,它会拒绝它,而不是将其映射到帐户myuser并允许访问Stuff.

有人可以帮我弄清楚为什么这不起作用吗?

我确实搜索了类似的问题,发现了这个:How to create a Samba share that is writable from Windows without 777 requests,但公认的解决方案是使用force user,这正是我正在做的,但由于某种原因它仍然不工作。

小智 7

我想我遇到了和你一样的问题。由于某种原因force user似乎需要组写权限。不过,它似乎不需要全局写入权限,因此作为一种解决方法,您应该能够摆脱 660/770 权限而不是 777 权限。这不会降低安全性;在 samba 之外将文件移入其中很烦人,因为您需要使它们可组写。

将其放入您的 smb.conf 下[Stuff]

force user = myuser
create mask = 0660
directory mask = 0770
Run Code Online (Sandbox Code Playgroud)

然后在您的共享文件夹上运行:

sudo chown -R myuser:myuser /home/myuser/share
sudo chmod -R 0660 /home/myuser/share
sudo chmod -R ug+X /home/myuser/share
Run Code Online (Sandbox Code Playgroud)

然后重新启动smbd。对于当前存在的文件和通过 samba 新创建的文件,上面的命令会将所有文件设置为 660,将所有目录设置为 770。请注意,您不需要force group; 默认情况下,它与 的主要组匹配force user。另请注意,我在这里完全拒绝世界权限。如果您希望全世界都可读,您可以使用 0664、0775 和 ugw+X。

不幸的是,如果没有组写权限,我无法使其工作。我怀疑这是 samba 的一个错误。最近的samba bug #14617阻止通过force user. 这可能是另一个相关的错误,但我对此了解不够,无法报告它。如果您知道如何让它与 0644/0755 一起工作,请告诉我!