我已经在属于用户的文件夹上设置了 SUID 和 SGID 位富和sudo chmod g+s myfolder
&sudo chmod u+s myfolder
drwsr-sr-x 24 foo www-data 4,0K Okt 25 16:17 myfolder
然后我进去并创建了一个文件夹sudo mkdir xyz
,但该文件夹的用户被覆盖,root
而组被成功保护。
drwxr-sr-x 2 root www-data 4,0K Okt 25 16:24 xyz
我希望用户受到保护,它应该foo
在执行后保持在sudo mkdir xyz
.我错过了什么?
答案1
xyz
这看起来不是问题,因为您使用了sudo
- 这当然应该
root
代替foo
,并且您设置chmod g+s myfolder
为www-data
sudo
仅在需要时使用,并不是每个命令都使用,你可以尝试mkdir xyz
答案2
如果您是用户foo
,那么没有 SUID/SGID 位,权限将完全按照您想要的方式工作:
ls -ld myfolder myfolder/xyz
drwxr-xr-x 3 foo www-data 4096 Oct 25 16:00 myfolder
drwxr-xr-x 2 foo www-data 4096 Oct 25 16:00 myfolder/xyz/
SUID 不适用于目录,因此将以您作为所有者创建该目录。使用 SGID,即使创建者/所有者不是该组的成员,组也会继续执行。
但是,如果 ACL 在目标文件系统上可用,您可以使用它们来允许用户foo
和/或组成员www-data
访问目录,而不管可见的所有者和组如何。