我有一个名为“somescript”的脚本,它对每个人都具有可执行权限(755),但当我尝试使用非 root 用户运行它时,它一直询问 root 密码。我甚至尝试将其设置为 4755,但没有成功。目前只有管理员用户和具有 root 密码的用户运行该脚本。
我怎样才能让任何用户都能运行该脚本(但不能更改它)
-rwxr-xr-x 1 root group1 2841 Jul 8 2014 somescript
user@node:~> somescript
root's password:
编辑:在尝试 Setuid 和 Setgid 后发现它们不起作用,我通过脚本进行了更多检查,发现脚本正在检查用户名是否为 root,如果不通过 sudo 执行,则会强制使用 root 密码。注释掉此脚本应该可以通过将 setuid 设置为 root 来使其工作。
if [ "$uid" != "root" ]
then
exec sudo /someplace/somescript
else
答案1
脚本可能要求执行某些具有root
特权的操作,这与权限无关(在这种情况下),因为此操作将由当前用户执行,并且您没有启用SETUID
或SETGID
位。
但是,您可以激活SETUID
脚本上的位。这将使脚本以所有者用户的身份运行(在您的情况下)root
,但运行脚本的用户无需执行任何特权提升。
您可以通过运行以下命令来执行此操作:
chmod u+s somescript
更多关于SETUID/SETGID
:了解 setuid 和 setgid 权限以提高安全性