如何运行脚本作为另一个用户没有密码?

我有 script.sh,它必须作为 user2运行。但是,在我的应用程序中,这个脚本只能在 user1下运行。

我希望运行以下命令:

su user2 -C script.sh

但不需要密码也能运行。

我还希望这个限制非常严格,因为在 user1中,只能在 user2下运行 script.sh,而不能运行其他任何内容。

我试过用 sudoers 文件做这件事,但是经过几个小时的尝试之后,我总是感到困惑。

如果有人能够提供一个明确的例子,说明如何实现这一点(而不是使用 sudoers 之类的通用方法) ,我们将非常感激。

286680 次浏览

拨打 visudo并添加以下内容:

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

然后从 user1 shell 调用 sudo -u user2 /home/user2/bin/test.sh,完成。

试试跑步:

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

如果您具有作为该用户进行 sudo 的权限,那么这将以用户名的形式运行该命令。

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

上面的命令是正确的,但是在 Red Hat 上,如果 selinux 强制执行,它将不允许 cron 以另一个用户的身份执行脚本。例子; 不能执行/bin/sh 拒绝权限

我不得不安装 sebug 和 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