我可以禁止创建具有某些权限的文件吗?

我可以禁止创建具有某些权限的文件吗?

我有一个具有特定组 ID 的目录,并且我只希望具有相同 ID 的文件位于该目录中。

因此,我在该目录上设置了 SGID 位,以便每次在其中创建文件时,它都会获得正确的 ID。像 cp 或 touch 这样的命令现在就可以了。问题是,如果有人使用 mv 在目录内移动文件,则其组 ID 不会设置为该目录的组 ID。

我不希望这种情况发生。

答案1

我不知道有什么方法可以仅使用文件/目录上的普通读/写/执行权限来完成此操作。但是,您可以使用访问控制列表 (acls) - 请参阅人访问控制列表了解它们如何工作以及设定值特别是设置权限的命令。

例如:

$ setfacl -Rm u:foo:rwX,d:u:foo:rwX test

修改当前 ACL 以及默认 ACL。我相信“d:”仅影响目录的(d)默认ACL,并且文件不受影响。然后,如果您在该目录中创建新文件,它将默认继承其父目录的 ACL。

参考

答案2

只是一个想法,在这种情况下 FTP 会如何表现?仅仅使用 FTP 传输文件应该是不可能的move,它们总是copied. FTP 可以作为解决方案吗?

答案3

chown root $MYDIR
chmod ug+rw,o=- $MYDIR

现在你需要观察 $MYDIR - 如果那里的文件被更改,你应该注意到:

您可以将其放入循环中:

sleep 60
touch --reference $MYDIR /dev/shm/lastcheck_mydir
find $MYDIR -type f -anewer /dev/shm/lastcheck_mydir 

现在,如果find找到新文件,您可以对其采取行动 - 就像

find $MYDIR -type f -anewer /dev/shm/lastcheck_mydir -exec chgrp $MYGID {} \;

相关内容