2012-08-09 35 views
39

Necesito ejecutar un script de shell en Jenkins como root en lugar del usuario predeterminado. ¿Qué necesito cambiar?¿Cómo ejecutar un script como root en Jenkins?

Mi sudoers es así:

# User privilege specification 
root ALL=(ALL) ALL 
igx  ALL=(ALL) ALL 
%wheel ALL=(ALL) ALL 

# Allow members of group sudo to execute any command 
# (Note that later entries override this, so you might need to move 
%sudo ALL=(ALL) ALL 
# 
#includedir /etc/sudoers.d 

# Members of the admin group may gain root privileges 
%admin ALL=(ALL) NOPASSWD:ALL 
root ALL=(ALL) ALL 
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/ing00112/trunk/source/ 
jenkins ALL=(ALL) NOPASSWD:ALL 
#Defaults:jenkins !requiretty 
+0

posible duplicado de [cómo ejecutar Jenkins como superusuario?] (Http://stackoverflow.com/questions/ 11841140/how-to-run-jenkins-as-super-user) –

Respuesta

67

debe ejecutar el script utilizando sudo:

sudo /path/to/script 

Pero antes de tener que permitir que jenkins tun a la secuencia de comandos en /etc/sudoers.

jenkins ALL = NOPASSWD: /path/to/script 
+0

@Igore Gracias ... Estás 100% correcto ... Y utilicé el comando expect para ejecutar script como superusuario :) – Mahesh

+2

Si quieres Ejecute el script de shell cambie a: "jenkins ALL = NOPASSWD:/bin/sh,/path/to/script" y luego puede ejecutar "sudo sh/path/to/script" –

+2

para usar solo un comando en el enlace http://www.atrixnet.com/allow-un-unprivileged-user-to-run-a-certain-command-with-sudo/ puede ayudar; en mi caso, necesitaba usar no un script, sino un comando 'scp'; tus consejos también fueron útiles; thx – Yauhen

4

Soy consciente de que llego tarde a la fiesta sobre esta cuestión, pero por el bien de la referencia que pensé en tirar mi 2c aquí: Yo uso el plugin SSH para Jenkins para lograr esto (simplemente configurar una objetivo localhost). De esta manera, puedo contener el script directamente dentro de Jenkins (como un paso normal de "Ejecutar shell"), en lugar de usar sudo para invocar un script externo.

7

@Igor La respuesta de Chubin es 100% correcta, pero nunca abre el archivo sudoer con un editor normal. utilice siempre visudo

sólo tiene que escribir

sudo visudo 

esto le llevará a /etc/sudoers y sobre el ahorro que se asegurará de que no hay ningún error en el formato.

si se comete un error en el archivo sudoer, perderá el acceso sudo, por lo que siempre utilice visudo

Cuestiones relacionadas