suid 脚本无法正常工作

suid 脚本无法正常工作

我的操作系统是 Fedora 24,我尝试测试 suid 位功能。

我在下面将 bash 写为 Setuid.bash:

#!/bin/bash
if [ $USER = 'root' ]
then
    echo "Like Root Run"
    echo "Root User Add in " $(date) >> /etc/SetUid
else
    echo "Other User Run"
    echo $USER "User Add in " $(date) >> /etc/SetUid
fi

-rwsrw-r-x. 1 root root 249 May 21 14:45 /bin/Setuid.bash许可并-rwx------. 1 root root 432 May 21 14:45 /etc/SetUid

现在,当我尝试/bin/Setuid.bash以 root 身份时,我得到:

就像根运行一样

但是当运行它时测试我遇到的用户:

其他用户运行

bin/Setuid.bash:第 8 行:/etc/SetUid:权限被拒绝

如果有人告诉我,我的方法错在哪里,我将不胜感激?

答案1

很久以前,bash(和其他 shell 解释器)已经添加了针对 suid(滥用)使用的内置安全措施,因为它是危险的。SUID Shell 脚本的危险

为什么 Bash 是这样的:suid

Bash 脚本无法在设置了 suid 位的情况下运行。首先,Linux 不允许任何脚本设置 uid,但其他一些操作系统允许。其次,bash 将检测到以 setuid 身份运行,并立即删除权限。

这是因为 shell 脚本的安全性极大地依赖于环境,比常规的 C 应用程序更依赖于环境。

最终,现在 suid 位对于可执行二进制文件最有用。运行这样的脚本/bash 的一种方法是从 suid 编译的二进制文件中调用它。

相关内容