Samba - 用户无法写入非自己创建的目录

Samba - 用户无法写入非自己创建的目录

以下是相关smb.conf部分:

[someshare]
        path = /somewhere
        read only = No
        writeable = Yes
        guest ok = Yes
        create mask = 0777
        security mask = 0777
        directory mask = 0777
        force create mode = 0777
        directory security mask = 0777

假设用户 1 在该共享上创建了一个目录。它的权限为:drwxr-xr-x且所有者为用户 1。

虽然 user2 可以访问 user1 创建的目录,但是当他尝试在该目录上创建文件时,却收到权限错误。

对我来说,user1 创建的目录的权限不是 smb.conf 中指定的 777,这似乎很奇怪...

编辑:我忘了提及当权限被拒绝时在客户端日志中弹出的一个奇怪错误:

[2009/06/24 03:02:18,  0] smbd/trans2.c:unix_filetype(1130)
  unix_filetype: unknown filetype 0

我错过了什么?

答案1

你缺少的是:

force directory mode = 0777

另外,您确实想使用 0666 来强制创建掩码。可能没有充分的理由强制执行位。

答案2

即使这是一个家庭项目,将权限更改为 777 也总是让我感到紧张。相反,将所有 Samba 用户添加到一个组(如 samba_user),然后在 smb.conf 中添加以下行:

force group = samba_user

当然,您还必须对所有必要的文件夹执行 chgrp 操作。然后,您可以设置更细粒度的权限,允许人们在其他人的文件夹中执行操作,并且您的服务器不会变成自由的。有人想要一个私人文件夹?只需将该文件夹的组从 samba_user 更改回用户的私人组即可。

答案3

我猜测这是 smb.conf 中的权限与用户配置文件中指定的权限一起用作掩码,两者将进行“与”运算而不是“或”运算,因此如果 samba 说 777 而用户的掩码是 755 那么结果会是 755。

您看到的权限被拒绝消息只是同意您看到的针对文件记录的权限。不过,您看到的额外错误消息我不太确定。

相关内容