2012-08-09 16 views
39

Ho bisogno di eseguire uno script di shell in Jenkins come root invece che come utente predefinito. Cosa devo cambiare?Come eseguire uno script come root in Jenkins?

Il mio file sudoers è come questo:

# 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

possibile duplicato di [come eseguire Jenkins come Super utente?] (Http://stackoverflow.com/questions/ 11841140/how-to-run-jenkins-as-super-user) –

risposta

67

è necessario eseguire lo script usando sudo:

sudo /path/to/script 

Ma prima è necessario consentire jenkins al tun lo script in /etc/sudoers.

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

@Igore Grazie ... Sei corretto al 100% ... E ho usato il comando expect per eseguire script come super user :) – Mahesh

+2

Se vuoi eseguire la modifica dello script della shell in: "jenkins ALL = NOPASSWD:/bin/sh,/percorso/per/script" e quindi è possibile eseguire "sudo sh/percorso/per/script" –

+2

per utilizzare solo un comando il collegamento http://www.atrixnet.com/allow-an-unprivileged-user-to-run-a-certain-command-with-sudo/ può aiutare; nel mio caso avevo bisogno di usare non uno script ma un comando 'scp'; anche i tuoi consigli erano utili; grazie – Yauhen

4

mi rendo conto che sono in ritardo alla festa su questa questione, ma per l'amor di riferimento ho pensato di buttare il mio 2c qui: Io uso il plugin SSH per Jenkins per ottenere questo risultato (semplicemente configurare un target localhost). In questo modo, posso contenere lo script direttamente all'interno di Jenkins (come un normale passaggio "Execute shell"), invece di usare sudo per richiamare uno script esterno.

7

@Igor La risposta di Chubin è corretta al 100%, ma mai aprire il file sudoer con un normale editor. utilizzare sempre visudo

basta digitare

sudo visudo 

questo vi porterà a /etc/sudoers e su salvandolo farà in modo che non v'è alcun errore nella formattazione.

se si commette un errore nel file di sudoer, si perde l'accesso a sudo, in modo da utilizzare sempre visudo

Problemi correlati