所以我有一个 Samba 共享,其中有多个组和用户。就我而言:
名为CEO将成为团体的成员伙伴和用户,
虽然用户办事员只是团体的一员用户。
有 2 个共享文件夹,Common
和Partners-only
。 公共文件夹归用户所有,合作伙伴专属文件夹归合作伙伴所有。 因此CEO可以访问Common
和Partners-Only
,而办事员只能访问Common
。
现在的问题是,当 CEO 复制某些内容时Partners-Only
,Common
文件仍然归属于伙伴组和任何常规用户都无法访问该文件。
我使用 crontab 修复了这个问题,如下所示:
*/5 * * * * /usr/bin/chgrp -R Users /mnt/Common/ >> /var/log/permissions/Common.log 2>&1
*/5 * * * * /usr/bin/chmod -R g+rw /mnt/Common >> /var/log/permissions/partners.log 2>&1
并且它起作用了,但是问题在于,由于有许多不同的组和共享,我有太多次类似的 cronjob,这会给服务器带来太大的压力。
有没有办法让 Samba 在复制文件时自行调整权限?谢谢
答案1
那么像这样...假设我在 /mnt/Common 有一个文件夹:
更改所有权并将 setgid 位应用到该文件夹:
sudo chown :users /mnt/Common
sudo chmod 2775 /mnt/Common
setgid 位将强制服务器本身添加到此目录的每个新文件继承父级的组。
然后在 smb.conf 中创建一个如下所示的共享定义:
[Common]
path = /mnt/Common
valid users = @users @partners
force group = users
writeable = yes
create mask = 0664
force directory mode = 2775
当任一组的成员将文件添加到共享时,它将以组 = 用户和权限 664 保存。添加的任何新子目录都将以组 = 用户保存,将文件夹权限设置为 775,并将 setgid 位应用于该子目录。