我在 Linux 下工作,我有一个目录,/data/history/export
其中有用户captain
和组crew
。我希望用户mike
、joe
和steve
始终以用户身份写入此目录captain
。我知道我可以使用通用组来执行此操作,但我可以这样做,以便写入此目录的所有内容都变成吗captain
?
答案1
Linux 忽略目录 suid,我始终不明白为什么。其他系统(fbsd、hpux、solaris)足够智能,可以处理后续的安全问题(例如二进制 suid strip)。
如果约翰的回答(chmod g+s /data/history/export
)不够充分,您可以尝试setfacl -RP -m d:u:captain:rwX /data/history/export
始终允许 captain 访问其中创建的文件和目录,只要粘滞位(o+s)未设置。
setfacl选项解释:
-R apply recursively,
-P physical only, do not exit physical tree via symlink,
-m modify/create,
d: add an inherited default to directories,
u: user specific ACL,
rwX add read and write privs to everything and execute for directories
答案2
chmod g+s <dirname>
您无法预先确定文件的用户所有者,但是您可以通过在该目录上设置 guid 位或其功能等效项来强制对给定目录中所有新创建的文件进行组所有权。