![Samba 权限需要执行 attrib 来列出文件夹内容吗?](https://linux22.com/image/984978/Samba%20%E6%9D%83%E9%99%90%E9%9C%80%E8%A6%81%E6%89%A7%E8%A1%8C%20attrib%20%E6%9D%A5%E5%88%97%E5%87%BA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E5%AE%B9%E5%90%97%EF%BC%9F.png)
好的,我的服务器上运行着 Samba,我注意到它无法显示文件夹内容,除非使用 chmod 700 设置文件夹,为所有内容赋予 rwx 属性,而不是使用 chmod 600 仅赋予 rw 属性。我很好奇为什么会这样。我有几个文件夹里面有媒体,我想使用“chmod -R 644”设置它们,据我所知,这将赋予所有者读/写访问权限,而其他所有人都只读访问权限。但是,如果我使用这些设置,当我使用 samba 登录时(我的 Linux 用户名和 Samba 用户名相同),它会显示文件夹是空的。
这是我的 smb.conf
[3TB]
writeable = yes
force directory mode = 744
valid users = jack,kodi,technovore
case sensitive = yes
user = jack,kodi,technovore
force create mode = 744
create mode = 744
comment = Root 3TB on IACON
delete readonly = yes
path = /media/3TB
如果我使用电影文件夹的属性,那么一切都很好,我甚至可以使用 700 而不是 777。但是,如果我使用该设置看电视,它将显示文件夹但不显示内容。777 对 644。有人能解释为什么会发生这种情况吗?
答案1
这在目录上执行位用于允许用户进入目录(遍历)。如果不设置执行位,您将无法读取或操作目录的内容。默认情况下,目录权限为 0775。这意味着每个人都可以查看和操作其中的文件。创建的文件具有默认权限 0664。这意味着用户和组具有读写权限,而其他所有人都具有读取权限。
例外情况是 root 用户创建权限设置。目录的权限为 0755,文件的权限为 0644。这仍然允许所有用户查看目录中的文件,同时仅允许 root 用户具有读写权限。
您需要允许用户以目录权限访问目录,并以文件权限操作文件。
这需要在共享目录上进行初始设置。然后,您可以使用此设置提供共享文件和目录创建权限
[share] ... create mask = 0664 directory mask = 0775
这创建掩码用于文件权限和目录掩码用于目录权限。由于所有权限均由最新的 umask 设置定义,因此您可以将掩码配置视为 Samba 的共享 umask 设置。