我和一位同事就棘手问题的性质进行了一场善意的争论。
我的论点chmod
是,根据手册页,如果设置了粘滞位,则只允许所有者删除或重命名文件:
RESTRICTED DELETION FLAG OR STICKY BIT
The restricted deletion flag or sticky bit is a single bit, whose
interpretation depends on the file type. For directories, it prevents
unprivileged users from removing or renaming a file in the directory
unless they own the file or the directory; this is called the restricted
deletion flag for the directory, and is commonly found on world-writable
directories like /tmp. For regular files on some older systems, the
bit saves the program's text image on the swap device so it will load more
quickly when run; this is called the sticky bit.
(也可以看看:https://en.wikipedia.org/wiki/Sticky_bit)
我的同事坚持认为权威答案是1996 年耶鲁论坛上的一篇文章指示如何使用粘性位来设置目录的组继承权限。
因此,我已经安装setafcl
并设置acl
为安装时的选项(详情请参阅超级用户)。
有人愿意帮忙解决这个争端吗?
答案1
您和您的同事正在谈论两个不同的部分,因此你们不同意他们所做的事情是可以理解的。
粘性位、setuid 位和 setgid 位是文件(或目录)模式中的三个不同位。例如,参见chmod(2)
请参阅手册页。
你们都对,你对粘性位的引用是准确的,你同事对 SGID 位的引用也是如此。
答案2
setgid 位正是您所需要的。
sudo chmod g+s /foldername
不要使用 -R 选项进行递归,除非您希望该目录/子目录中的现有文件也设置该位。通常,您不希望文件的 setgid 位处于打开状态,因为目录已设置该位。
下面是如何递归地设置文件夹及其子文件夹的 gid 位。
sudo find /foldername -type d -exec echo chmod g+s {} \;