GNU/Linux >> Linux Esercitazione >  >> Linux

Eseguire script con argomenti come utente?

Sto cercando di assicurarmi che quando uno script viene eseguito, venga eseguito come un utente specifico senza dover chiedere a quell'utente prima che lo script venga eseguito. Inoltre lo script viene eseguito con un paio di flag per esempio

./myscript.sh -e dev -v 1.9

Ho provato quanto segue

[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"

Ma il flag -v che dovrebbe essere un input per il mio script viene inviato come input a su. Quindi si lamenta di un'opzione non valida, c'è un modo per correggere quanto sopra?

NB:La persona che esegue lo script ha i privilegi sudo.

Risposta accettata:

L'utente corrente è già nella variabile $USER . Quindi tutto ciò di cui hai bisogno è:

[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"

Non è necessario sudo su , sudo può fare tutto ciò di cui hai bisogno. Inoltre non hai bisogno di pwd o basename , il $0 la variabile ha già il percorso completo dello script.

Il tuo comando originale stava avviando una shell di accesso (su - ). Se è davvero necessario (il che sembra strano), puoi fare:

[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"

Linux
  1. Come eseguire uno script??

  2. Controlla quanto tempo impiega uno script Bash per essere eseguito con il comando Time

  3. Come eseguire lo script come un altro utente senza password?

  4. Autorizzazione negata con bash.sh per eseguire cron

  5. Eseguire nuovamente il comando precedente con argomenti diversi

Comando runuser Linux - Esegui Shell con l'ID utente/gruppo specificato

Come eseguire uno script Bash

Script all'avvio?

Ubuntu - Esegui il comando all'avvio con sudo

Come eseguire un comando come utente specifico in uno script init?

Controlla la password dell'utente con uno script di shell