Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 以root用户身份在jenkins中运行shell命令?_Linux_Shell_Jenkins_Root - Fatal编程技术网

Linux 以root用户身份在jenkins中运行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包),您可能需要更改端口,因为默认情况下,它

我最近开始使用Jenkins进行集成。在没有shell命令的情况下在主节点上运行作业之前,一切都很好,但我必须在主节点和从节点上运行作业,从节点包含要运行的shell命令。我无法以root用户身份运行这些shell命令。我试过了

  • 使用
    SSH密钥
  • 在shell命令中设置用户名
  • 使用
    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,请尝试执行以下步骤:-

    这对我有用

  • sudo vi/etc/default/jenkins

  • $JENKINS\u 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

  • 服务jenkins重启ps-ef | grep jenkins


  • 运行公开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/