脚本要求输入 root 密码,即使它对每个人都具有可执行权限

脚本要求输入 root 密码,即使它对每个人都具有可执行权限

我有一个名为“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特权的操作,这与权限无关(在这种情况下),因为此操作将由当前用户执行,并且您没有启用SETUIDSETGID位。

但是,您可以激活SETUID脚本上的位。这将使脚本以所有者用户的身份运行(在您的情况下)root,但运行脚本的用户无需执行任何特权提升。

您可以通过运行以下命令来执行此操作:

chmod u+s somescript

更多关于SETUID/SETGID了解 setuid 和 setgid 权限以提高安全性

相关内容