Linux 以root用户身份在jenkins中运行shell命令?
我最近开始使用Jenkins进行集成。在没有shell命令的情况下在主节点上运行作业之前,一切都很好,但我必须在主节点和从节点上运行作业,从节点包含要运行的shell命令。我无法以root用户身份运行这些shell命令。我试过了Linux 以root用户身份在jenkins中运行shell命令?,linux,shell,jenkins,root,Linux,Shell,Jenkins,Root,我最近开始使用Jenkins进行集成。在没有shell命令的情况下在主节点上运行作业之前,一切都很好,但我必须在主节点和从节点上运行作业,从节点包含要运行的shell命令。我无法以root用户身份运行这些shell命令。我试过了 使用SSH密钥 在shell命令中设置用户名 使用sudo 每次使用上述任何一种方法时,我都会收到权限被拒绝错误。您需要修改jenkins用户的权限,以便可以运行shell命令。 您可以安装jenkins as服务(下载rpm包),您可能需要更改端口,因为默认情况下,它
SSH密钥
李>
sudo
每次使用上述任何一种方法时,我都会收到
权限被拒绝
错误。您需要修改jenkins
用户的权限,以便可以运行shell命令。
您可以安装jenkins as服务(下载rpm包),您可能需要更改端口,因为默认情况下,它在8080上运行http,在8009端口上运行AJP
以下流程适用于
CentOS
1.打开此脚本(使用VIM或其他编辑器): 二,。找到此
$JENKINS\u用户
并更改为“root”:
$JENKINS_USER="root"
三,。然后更改Jenkins home、webroot和日志的所有权:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4) 重新启动Jenkins并检查用户是否已更改:
service jenkins restart
ps -ef | grep jenkins
现在,您应该能够以root用户身份运行Jenkins作业,所有shell命令都将以
root
身份执行。我建议不要以root用户身份运行Jenkins用户。这可能会暴露操作系统和jenkins可以构建的所有回购协议
以root用户身份运行任何脚本都存在安全风险,但更安全的方法是授予jenkins用户sudo访问权限,使其只运行一个脚本,而不需要密码
sudo visudo
并添加以下内容:
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
通过失败构建脚本的控制台日志仔细检查您的路径。这里显示的是默认值
现在,在jenkins任务中,您可以调用
sudo$WORKSPACE/your script
另一个选项是设置一个jenkins“Slave”,该Slave实际上作为根用户在主服务器上运行,并将其限制为绑定作业,然后将作业指向该Slave。远非理想,但肯定是一个快速的解决方案。您只需要使用Jenkins的Root权限在Linux机器上运行shell命令
步骤:
1) sudo vi/etc/sudoers
2) 添加行:
jenkins ALL=NOPASSWD:/path of script/
3) 从Jenkins开始,使用sudo在远程shell上运行脚本。
例如:sudo ps-ef
4) 现在就做詹金斯的工作。
此作业使用root权限在Linux计算机上运行脚本。对于Linux,请尝试执行以下步骤:- 这对我有用
运行公开webinterface的服务是一个非常糟糕的主意,它允许您以root.+1的身份运行@JamesP脚本。但是,aws cli和Jenkins用户权限的不正确安装可能会导致此问题。您知道,在MacOSX?dscl中如何执行此操作吗-append/Groups/admin GroupMembership Jenkins这看起来很有希望,但是后来我又回复了,我无法使用上面的命令,还没有找到更好的解决方案。然后我需要将
sudo
附加到我的Jenkins文件中的每个命令中,这真的是正确的方法吗?@JulioMarins通常不会,如果你能找到替代方法,那么就采用它。但是如果您需要使用root访问,那么这是更安全的方法。请记住,如果您正在运行的脚本被破坏,那么Jenkins服务器也会被破坏。
jenkins ALL=NOPASSWD:/path of script/