我有一个Shell脚本,想要设置uid位。 我把所有者设置成了root并设置了uid位。 我在脚本中添加了'whoami'来检查它是否正常工作, 但是当我执行脚本时,whoami返回的是用户的名字,而不是root。 那么这就是错误的,对吗?如果uid正确设置,我应该得到root,对吗?
不,setuid位并不改变登录用户,它改变的是脚本运行时的有效用户(euid)。 此外,setuid位不适用于脚本。 如果您希望让脚本在权限较低的用户下以root身份执行,建议使用"su"或"sudo"。
您不能将 setuid 位与 shell 脚本一起使用。shell 解析 shebang 行以确定要执行的程序,然后启动该程序,而不会关心设置在脚本上的 setuid 位。请参见 https://serverfault.com/questions/8449/cannot-set-uid-on-shell-scripts。