晚会晚了一点,但是万一以后的读者偶然发现了这个问题;)如其他人所述,在标准的OS-X文件系统上,目录的setUID被忽略了-似乎没有一种简便的方法(mount -o
....或其他什么)。通常,手册页实际上不符合其字面陈述的OS-X行为:
4000(执行时设置用户ID)位设置了用户ID的目录将强制所有在其中创建的文件和子目录归目录所有者而非所有者所有创建过程的uid [...]
但它也列出了在不放弃原始所有权的情况下达到相同效果的可能性。Linux使用'[g /] setfacls'来达到类似的效果(乍一看,它们的权限并不真正可见,因此有时可能会令人讨厌)。
关于“如何实现类似的效果”,请阅读整个手册页并摆弄:
chmod +a 'guest allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' ./[DIRECTORY]
你可以通过检查
ls -le
如果一切都很好。其他选项包括在特定位置插入规则,删除或替换特定规则。这里的两个值得注意的选项是“ file_inherit
和directory_inherit
”,允许将规则附加到新目录/文件。
我不太喜欢使用setUID,但是setGID在文件服务器上非常方便,在文件服务器上,仅设置'main'组不起作用,或者客户端具有禁止组写的文件掩码。可以通过以下方法解决:
chmod +a 'mygroup allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' /fileserver/groupfolders/mygroup