如何以没有密码的其他用户身份运行脚本?

时间:2011-08-01 23:33:23

标签: linux bash sudo su sudoers

我有必须以user2身份运行的script.sh。但是,此脚本只能在我的应用程序中的user1下运行。

我想运行以下命令:

su user2 -C script.sh

但能够在没有密码的情况下运行。

我也希望这是非常严格的,因为在user1中只能在user2下运行script.sh而不是其他。

我尝试用sudoers文件做这个,并且在经过几个小时的尝试后无休止地感到困惑。

如果有人可以提供一个明确的例子来说明如何实现这一点(而不是像使用sudoers这样的通用),我们将非常感激。

3 个答案:

答案 0 :(得分:190)

尝试跑步:

su -c "Your command right here" -s /bin/sh username

如果你有权使用sudo作为该用户,这将以命令用户名运行该命令。

答案 1 :(得分:111)

致电visudo并添加:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

命令路径必须是绝对的!然后从sudo -u user2 /home/user2/bin/test.sh shell中调用user1。完成。

答案 2 :(得分:0)

`su -c "Your command right here" -s /bin/sh username`

以上命令是正确的,但是在Red Hat上,如果selinux强制执行,它将不允许cron以另一个用户身份执行脚本。例; execl: couldn't exec /bin/sh execl: Permission denied

我必须安装setroubleshoot和setools并运行以下命令以允许它:

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p