是否以root用户身份在jenkins中运行shell命令?

rqenqsqc  于 2022-11-02  发布在  Jenkins
关注(0)|答案(6)|浏览(463)

我最近开始使用Jenkins进行集成。一切都很好,直到我在没有shell命令的主节点上运行作业,但我必须在主节点和包含shell命令的从节点上运行作业。我无法以root用户身份运行这些shell命令。我尝试过
1.使用SSH Keys
1.在shell命令中设置用户名。
1.使用sudo
每次使用上述任何方法时,我都会收到permission denied错误。

mu0hgdu0

mu0hgdu01#

我建议不要以root用户的身份运行jenkins用户,这会暴露操作系统和jenkins可以构建的所有repo。
以root用户身份运行任何脚本都存在安全风险,但稍微安全一点的方法是授予jenkins用户sudo访问权限,使其仅运行一个脚本,而无需输入密码。

sudo visudo

并增加以下内容:

jenkins    ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script

通过失败的构建脚本的控制台日志仔细检查您的路径。此处显示的是默认路径。
现在在jenkins任务中,您可以调用sudo $WORKSPACE/your script

t1rydlwq

t1rydlwq2#

您需要修改jenkins用户的权限,以便运行shell命令。您可以安装jenkins as as service(下载rpm包),您可能需要更改端口,因为默认情况下它在8080端口上运行http,在8009端口上运行AJP。
以下流程适用于CentOS
1.打开以下脚本(使用VIM或其他编辑器):

vim /etc/sysconfig/jenkins

2.找到此$JENKINS_USER并更改为“root”:

$JENKINS_USER="root"

3.然后更改Jenkins主目录、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身份执行。

3bygqnnd

3bygqnnd3#

对于Linux,请尝试执行以下步骤:-

这对我很有效。
更改Jenkins用户:$JENKINS_USER="root"
更改root用户或用于访问文件的用户:$JENKINS_USER="root"
使用之前设置的用户执行:

sudo chown -R root:root /var/lib/jenkins
sudo chown -R root:root /var/cache/jenkins
sudo chown -R root:root /var/log/jenkins

1.作为服务运行:
service jenkins restart
systemctl jenkins restart
您可以执行jenkins有一个进程,并使用UI禁用Linux的无头模式。

/etc/alternatives/java -Djava.awt.headless=false -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20

验证Jenkins当前是否正在运行:ps -ef | grep jenkins

sirbozc5

sirbozc54#

另一个选择是设置一个jenkins“从”,它实际上是以root身份在主服务器上运行,并将其限制为绑定作业,然后将您的作业指向该从服务器。虽然远不理想,但肯定是一个快速的解决方案。

cfh9epnr

cfh9epnr5#

或者,您可以更改docker.sock的权限。

docker exec <jenkinsContainerID> chmod 777 /var/run/docker.sock
laawzig2

laawzig26#

您只需要使用Jenkins提供的Root权限在Linux机器上运行shell命令。
操作步骤:
1)sudo ps -ef
2)添加行:

jenkins ALL=NOPASSWD:/path of script/

3)在Jenkins中,使用sudo在远程shell上运行脚本。例如:sudo ps -ef
4)立即生成Jenkins作业。此作业使用root权限在Linux计算机上运行脚本。

相关问题