GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eseguire una serie di comandi in una subshell bash come un altro utente usando sudo?

Esegui una shell all'interno di sudo :sudo bash -c 'whoami; whoami'

Puoi usare qualsiasi carattere tranne ' stessa all'interno delle virgolette singole. Se vuoi davvero avere una singola virgoletta in quel comando, usa '\'' (che tecnicamente è:end single-virgoletta letterale, letterale ' carattere, inizio letterale tra virgolette singole; ma effettivamente questo è un modo per inserire un apice singolo in una stringa letterale a apice singolo).


Puoi passare i comandi come input standard in sudo'ed bash con un here document:

sudo bash <<"EOF"
whoami
id
EOF

In questo modo non c'è bisogno di giocherellare con la citazione corretta, specialmente se hai più livelli, ad esempio:

sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF

Produce:

root
root /root
apache
apache /usr/share/httpd

(Nota che non puoi indentare il terminatore interno — deve essere solo sulla sua riga. Se vuoi usare l'indentazione in un here document, puoi usare <<- invece di << , ma devi rientrare con le tabulazioni, non con gli spazi.)


per esempio prova questo, l'ho provato:

sudo bash -c "cd /;ls;ls|grep o"

In questo esempio devi prima cambiare dir in /root, quindi elencare la directory root e infine per la directory root filtrare solo le directory con nome con la lettera 'o'.

Ma la cosa migliore è scrivere uno script che faccia tutto ciò di cui hai bisogno e fornisca il codice di uscita per tutte le azioni complesse. Quindi puoi sudo script invece di un gruppo di singoli comandi come nell'esempio sopra.


Linux
  1. Come posso usare i comandi con alias con xargs?

  2. Come eseguire il comando bash con privilegi sudo in Java?

  3. Come eseguire uno script bash?

  4. Come eseguo più comandi quando utilizzo find?

  5. Come posso cambiare tutti i file appartenenti a un utente a un altro utente?

Esegui i comandi come un altro utente tramite Sudo in Linux

Come controllare Vagrant Box usando i comandi Vagrant

Come posso aggiungere un utente normale al file sudoers?

Come elencare le cartelle usando i comandi bash?

Esegui automaticamente lo script bash con i privilegi di un altro utente

Come consentire all'utente di eseguire un comando contenente virgolette in sudoers?