sudo: impersonare un utente


8

Sto cercando di utilizzare correttamente il comando sudo e il file sudoers in modo da poter eseguire un comando come un altro utente.

Ho il mio file sudoers impostato come segue:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

root, apache e bean fanno parte dei bean di gruppo.
Inoltre / opt ha 755 permessi, mentre la directory / opt / renovations e le sue sottodirectory sono di proprietà dell'utente e del gruppo bean.

Il comando che sto cercando di eseguire come bean è:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n: è così che non mi viene richiesta una password, poiché questa verrà eseguita da un cron
-u: è così che posso impersonare l'utente apache
-i: è così che simulo un login e il mio .profile è caricato. Ne ho bisogno per accedere alle variabili d'ambiente in .profile.

Il problema è che quando eseguo il comando sudo, ricevo il seguente messaggio:

sudo: scusa, per eseguire sudo è necessaria una password

Ho provato a eseguirlo sia su AIX che su Ubuntu, ma il problema è su entrambi i sistemi. Funziona se corro:

sudo -n -u apache /opt/renovations/var/script-test.sh

Ma senza -i, il mio ambiente non contiene tutte le variabili di ambiente di cui ho bisogno per essere lì.

C'è qualcosa che devo aggiornare nel mio file sudoers in modo che ciò sia possibile?


Cosa visudo -crestituisce (controlla gli errori dei sudoers). Inoltre, puoi confermare la versione completa di AIX ( oslevel -s) e la versione di sudo installata?
EightBitTony,

1
Inoltre, funziona se si elenca esplicitamente il nome dello script in sudo anziché nel carattere jolly (e il nome file è un collegamento simbolico?).
EightBitTony,

Grazie @EightBitTone. Quindi ho trovato la soluzione per questo problema di configurazione di sudoers: quando l'opzione -i è in uso, il comando reale è beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh e beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.shMa ora ho il nuovo errore, ad esempio:ksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto

L'analisi del file di registro / var / log / sudolog è stata molto utile per eseguire il debug del problema precedente (su AIX).
Krzyszto,

Risposte:


4

Quindi, come hai detto tu stesso @krzysto, la soluzione è aggiungere quanto segue al file sudoers

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

Il prossimo pezzo mancante è assicurarsi che il gruppo disponga delle autorizzazioni di esecuzione degli script, in modo da poterle eseguire.


si, è la soluzione corretta. L'errore ksh si verifica solo nel test dell'ambiente creato per indagare sul problema della rappresentazione; in realtà, la produzione funziona correttamente
krzyszto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.