以下是相关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。
您看到的权限被拒绝消息只是同意您看到的针对文件记录的权限。不过,您看到的额外错误消息我不太确定。