在 `mkdir` 上设置 setuid 而不将其设为可执行文件

在 `mkdir` 上设置 setuid 而不将其设为可执行文件

我正在设置 setuid,mkdir但没有将其设置为可执行文件。

chmod u+s /usr/bin/mkdir

chmod u-x /usr/bin/mkdir

[root@rhel-85 /]# ls -l /usr/bin/mkdir 
-rwSr-xr-x. 1 root root 84664 Jul  9  2021 /usr/bin/mkdir

现在,当我以另一个用户身份登录时"user1"

我仍然able to create directory even when the "mkdir" binary is non-executable.

我的理解是“user1”不应该能够创建目录,因为mkdir它是不可执行的。

答案1

您已清除文件所有者的可执行权限,但尚未清除其组成员或其他用户的可执行权限。结果,唯一的用户被拒绝访问通过权限是根;所有其他用户都被授予权限。 (root 仍然可以执行二进制文件,因为 root 可以执行任何设置了任一可执行位的二进制文件。)

setuid 位不会影响授予或拒绝权限的方式;它只影响进程执行二进制文件时的有效 uid。

了解 UNIX 权限和文件类型限制“组”权限但开放“世界”权限?了解详情。

相关内容