Recientemente he empezado a usar Jenkins para la integración. Todo estaba bien hasta que se ejecutan los trabajos en el nodo maestro sin comando de la shell, pero tengo que ejecutan trabajos en maestro y esclavo nodo que contiene comandos de la shell. Yo no soy capaz de ejecutar estos comandos como usuario root. He intentado

  1. Utilizando SSH Keys.
  2. Configuración de nombre de usuario en comandos de la shell.
  3. Utilizando sudo.

Estoy recibiendo permission denied de error cada vez que utilice cualquiera de los métodos anteriores.

OriginalEl autor Raj Gupta | 2015-04-28

5 Comentarios

  1. 19

    Necesita modificar el permiso para jenkins usuario, de modo que puede ejecutar los comandos de shell.
    Usted puede instalar el jenkins como servicio (descarga el paquete rpm), es posible Que necesite cambiar los puertos, porque por defecto se ejecuta http en el 8080 y AJP en puerto 8009.

    El siguiente proceso es para CentOS

    1. Abierto hasta las esta secuencia de comandos (usando VIM o cualquier otro editor):

    vim /etc/sysconfig/jenkins

    2. Encontrar este $JENKINS_USER y cambiar a «root»:

    $JENKINS_USER="root"

    3. A continuación, cambie la propiedad de Jenkins casa, webroot y registros:

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

    4) Reiniciar Jenkins y comprobar que el usuario ha cambiado:

    service jenkins restart
    ps -ef | grep jenkins

    Ahora usted debería ser capaz de ejecutar el Jenkins trabajos como el usuario root y toda la shell de comando será ejecutado como root.

    Es una idea realmente mala para ejecutar los servicios de que se exponga un interfaz web que permite ejecutar secuencias de comandos como root.
    +1 para @JamesP. Sin embargo, la instalación incorrecta de la cli de aws y Jenkins permiso de usuario pueden causar este problema.
    Cualquier idea, ¿cómo puedo hacer esto en MacOSX?
    dscl . -anexar /Grupos/admin GroupMembership jenkins

    OriginalEl autor Pulkit

  2. 26

    Yo sugeriría en contra de la ejecución de la jenkins usuario como root. Esto podría exponer el sistema operativo y todos los de la repo que jenkins se puede construir.

    La ejecución de cualquier secuencia de comandos como root es un riesgo de seguridad, pero un poco más seguro método sería conceder la jenkins usuario sudo acceso sólo a ejecutar la secuencia de comandos, sin necesidad de una contraseña.

    sudo visudo

    y agregue el siguiente:

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

    Doble compruebe la ruta de acceso a través de la consola de registro de un error en el script de compilación. La que se muestra aquí es el valor predeterminado.

    Ahora dentro de la jenkins tarea puede llamar sudo $WORKSPACE/your script

    entonces necesito anexar sudo a cada comando en mi jenkinsfile, que es realmente el enfoque correcto?
    Generalmente no, si usted puede encontrar un enfoque alternativo, a continuación, tomar. Pero si usted necesita para utilizar el acceso root, a continuación, esta es la forma más segura de hacerlo. Recuerde que si el script que se está ejecutando está comprometida también lo es el servidor Jenkins.

    OriginalEl autor oden

  3. -1

    Estoy de acuerdo w/[email protected],
    Ejecución de Jenkins como una raíz, también tendrá un problema cuando intenta ejecutar el appium, porque «Appium no funcionará si ha utilizado o instalado con sudo».

    OriginalEl autor Menglong Li

  4. -1

    Otra opción es la creación de una jenkins «Esclavo» que realmente se está ejecutando como root en el maestro y restringir a los atados de puestos de trabajo, a continuación, seleccione su trabajo esclavo. Lejos de ser ideal, pero sin duda una solución rápida.

    OriginalEl autor softwaresupervillain

  5. -2

    Sólo necesita ejecutar el comando de shell en la máquina Linux usando privilegios de Root de Jenkins.

    Pasos :

    1) sudo vi /etc/sudoers

    2) Agregar la línea :

    jenkins ALL=NOPASSWD:/path of script/

    3) De Jenkins,ejecute la secuencia de comandos de shell remoto usando sudo .
    por ejemplo : sudo ps -ef

    4) Construir Jenkins trabajo ahora.
    Este trabajo se ejecuta la secuencia de comandos en Linux máquina con privilegios de root.

    OriginalEl autor himanshu chhabra

Dejar respuesta

Please enter your comment!
Please enter your name here