创建文件/目录时忽略 SUID 位

创建文件/目录时忽略 SUID 位

我已经在属于用户的文件夹上设置了 SUID 和 SGID 位sudo chmod g+s myfoldersudo 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 myfolderwww-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访问目录,而不管可见的所有者和组如何。

相关内容