我知道在一个设置了GID位的目录中创build的文件将inheritance指挥组的所有权。 然而,这对于移动到https://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories中指定的目录的文件不起作用
用户将文件移动到共享文件夹而不是复制文件或创build新文件时,共享文件夹中现在有文件不能被所有人访问。
有一个shread文件夹
john:/home/common$ ls -l drwxrws--- 15 john users 4096 Feb 11 09:14 shared
和一个私人文件夹中的文件。
john:/home/john$ ls -l -rw-rw---- 1 john john 512 Feb 11 09:14 test.txt
该文件被移动到共享文件夹。 它保持组的所有权。
john:/home/common/shared$ mv /home/john/test.txt . john:/home/common/shared$ ls -l -rw-rw---- 1 john john 512 Feb 11 09:14 test.txt
当文件移动到shared ,该组保留john并且不会更改为users 。 如果文件被复制 ,则该组更改为users 。
即使从系统的angular度来看,这种行为是合乎逻辑的,但从用户的angular度来看并不是这样。
有没有办法configurationshared目录,以便该组也自动更改为移动的文件? 达到这个目标的最佳做法是什么?
setgid会影响新创build的文件(使用touch , cp ),并且不会影响已经创build的文件(使用mv )。
有像这里发布的几个解决scheme。 此外,您可以添加一个cron作业来定期chgrp共享文件夹下的所有文件/文件夹。
另一种可能的解决scheme是使用incrontab -e在文件移动到共享文件夹时修复组的所有权。 小心,这只会触发事件共享文件夹本身没有任何其他子文件夹。
/path/to/shared/dir IN_MOVED_TO /bin/chgrp users $@/$#