我想在哈德森自动化一项工作,但哈德森总是使用用户hudson来运行脚本。 我想要的是作为另一个用户运行脚本。
我已经查看了ServerFault的答案,但只find了一个使用su命令的解决scheme,这需要我input目标用户的密码。 这不适用于自动脚本。
任何人都可以帮助这个吗? 谢谢。
你可以使用sudo来做到这一点。 首先,您需要修改/etc/sudoers文件以添加允许hudson用户成为该问题脚本的其他用户的规则。 假设您有一个需要运行/usr/local/bin/my_script.sh的user1帐户。
运行visudo来修改sudoers文件,并添加一个像这样的:
hudson ALL=(user1) NOPASSWD: /usr/local/bin/my_script.sh
然后,使用下面的sudo命令从hudson运行脚本:
sudo -u user1 /usr/local/bin/my_script.sh
使用visudo来修改sudoers文件是非常重要的,以便在将文件放置到位之前检查文件是否存在错误。 此外,我build议快速阅读man sudoers ,以便在将其添加到configuration之前清楚地了解上述操作。
在/etc/sudoers或者其他包含的suders文件中注释Defaults requiretty条目应该有所帮助。
至于perl错误 – 你可能为这个用户使用了不同的PERL5LIB或者一个不同的perl二进制文件,并且不会在sudo中传递(除非你使用-E或者env_keep)。 检查你的环境和可能的权限。
sudo -u hudson command将以用户哈德森的方式运行命令。 它需要在sudoers文件中进行设置,在这里你可以configuration它不需要密码。