我正在设置一个带有共享目录的文件服务器。内部有每个用户都可以读取的按用户文件夹,以及任何用户都可以读取和写入的共享目录。每个用户的文件夹非常简单。但是,共享文件夹存在一些问题。我执行了用于设置GID文件夹的标准过程:
# chown root shared
# chmod -R ug+rwX shared
# chgrp -R users shared
# find shared -type d -exec chmod g+s "{}" \;
# find shared -type d -exec setfacl -m "default:group::rwx" "{}" \;
在确保所有用户都在“用户”组中之后,这可以通过直接控制台登录,ssh,rsync等完美实现。但是,samba存在一些问题。
使用默认的samba配置,将传播SGID位和GID,但新文件和文件夹未设置组写入位。这似乎是因为ACL被忽略了。根据https://serverfault.com/questions/459479/samba-ignoring-posix-acls,解决方案是添加vfs objects = acl_xattr
到smb.conf中。设置完该选项后,将正确设置组写权限。但是,该组然后被设置为用户的主要组,而不是父目录的组,这违背了设置GID位的目的。我试图在链接(注意其他的smb.conf调整map acl inherit = yes
,store dos attributes = yes
和inherit acls = yes
),但这些都没有效果。使这项工作正确的方法是什么?