我有 samba 服务器,其中域中的每个用户都可以写入和删除文件。但我想在这个共享上设置以下权限。
每个人都可以在此共享中创建文件或文件夹。所有其他用户仅对该文件夹具有读取和执行访问权限,他们不应删除其他用户创建的文件夹(只有所有者才可以删除此文件夹)
答案1
假设您已配置/etc/samba/smb.conf
文件以允许“每个人”适当访问您的共享,则您可以使用以下参数来控制文件/目录访问:
create mask = 0755
与使用的数字格式类似chmod
,“创建掩码“0755”将允许您的用户创建的文件对其自己的文件具有完全访问权限。其他所有人将只具有读取和执行访问权限,但没有写入访问权限。请注意,默认值为 0744,它允许所有者具有完全控制权,但其他所有人仅具有读取访问权限。
directory mask = 0755
虽然“创建掩码”仅适用于文件,“目录掩码“将相同的逻辑应用于目录。当然,0755(所有者的完全控制权,组和其他人的读取+执行权)的特定设置是默认设置。
虽然已经过时了,此链接提供了这些选项的更详细描述,以及数值背后含义的细分(如果您需要的话)。
答案2
使用 create mask = 0755 和 directory mask = 0755 仅对子目录内的文件有效。
假设我们有/share
一个组内所有成员共享的目录。该目录/share
以 775 Unix 权限创建(如果我们使用 755,则只有所有者可以创建/删除文件)。
smb.conf
[Share]
path = /share
read only = No
valid users = +group
create mask = 0755
directory mask = 0755
通过上述配置,所有直接文件和目录将能够按组成员删除,但子目录中的其他文件和目录将不能按组删除。
我通过使用粘滞位解决了这个问题chmod +t /share
。