如何在不输入密码的情况下在另一个用户中运行 shell 脚本

zjf*_*fdu 4 linux shell

我想在 hudson 中自动化一项工作,但 hudson 总是使用用户hudson来运行脚本。我想要的是以另一个用户身份运行脚本。

我查看了 ServerFault 的答案,但只找到了一个使用该su命令的解决方案,该命令要求我输入目标用户的密码。这不适用于自动脚本。

有人可以帮忙解决这个问题吗?谢谢。

Kyl*_*ith 9

您可以使用它sudo来执行此操作。首先,您需要修改该/etc/sudoers文件以添加一条规则,该规则允许该hudson用户成为相关脚本的其他用户。假设您有一个user1需要运行/usr/local/bin/my_script.sh.

运行visudo修改sudoers文件,并添加一个like:

hudson ALL=(user1) NOPASSWD: /usr/local/bin/my_script.sh
Run Code Online (Sandbox Code Playgroud)

然后,使用以下sudo命令从 hudson 运行脚本:

sudo -u user1 /usr/local/bin/my_script.sh
Run Code Online (Sandbox Code Playgroud)

这是非常,你使用的重要visudo修改sudoers文件,以便把它在发生之前检查错误文件。此外,我建议您快速通读一遍man sudoers,以便在将其添加到您的配置之前清楚地了解上述内容。