2012-05-28 18 views
5

devo usare sudo per eseguire il mio programma:Come si esegue un comando come utente originale da un programma sudo?

sudo ./my_program 

Sto cercando di eseguire git clone dal mio programma, ma si cerca di utilizzare le chiavi SSH dell'utente root invece di mine. Esiste un modo per eseguire questo singolo comando come utente che ha originariamente invocato il mio programma?

Credo di poter fare:

su - original_user -c "git --version" 

Ma come faccio a capire il nome utente dell'utente originale? O c'è un'altra soluzione elegante?

risposta

3

Il manuale sudo mostra che $SUDO_USER dovrebbe fornire il nome utente dell'utente originale e $SUDO_UID fornisce l'UID dell'utente originale.

+0

E '$ SUDO_UID' l'UID dell'utente originale. –

0

Ho riscontrato questo problema con Samba su un NAS durante la creazione di file da un'applicazione Web.

In questo caso ho recuperato i processi in esecuzione e ho determinato quale utente stava eseguendo samba. Dopo aver isolato quel nome, ho avuto l'account utente corretto. Forse funzionerà anche per la tua situazione?

In questo caso, immagino sia necessario filtrare attraverso l'output ps e cercare il nome del programma. Vedi se funziona provandolo su bash.

+0

Scusa, è il contrario. Usa ** ps -u ** per determinare gli utenti attivi e valuta il valore sotto ** comando ** per determinare quale processo hanno iniziato. – Digitalis

Problemi correlati