![在 `mkdir` 上设置 setuid 而不将其设为可执行文件](https://linux22.com/image/201435/%E5%9C%A8%20%60mkdir%60%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%20setuid%20%E8%80%8C%E4%B8%8D%E5%B0%86%E5%85%B6%E8%AE%BE%E4%B8%BA%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
我正在设置 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。