GNU/Linux >> Linux Esercitazione >  >> AlmaLinux

Esegui i comandi come un altro utente tramite Sudo in Linux

Immagina questo scenario. Stai gestendo un server Linux a cui accedono più utenti. Tutti gli utenti hanno sudo diritti. Vuoi testare determinati comandi Linux con utenti diversi. Come lo faresti? Accedere come un utente e testare i comandi, quindi disconnettersi e riconnettersi come un altro utente e testare i comandi? Sì, è un modo per farlo. Tuttavia, esiste un modo semplice per eseguire comandi come un altro utente tramite sudo in Linux. Continua a leggere per scoprirlo.

Ai fini di questa guida, ho creato due account utente:"senthil" e "kumar" nella mia macchina di prova AlmaLinux 8. Userò "senthil" come utente corrente e "kumar" come utente di destinazione.

Voglio che l'utente "senthil" sia in grado di eseguire qualsiasi comando come utente "kumar" su qualsiasi host, senza effettivamente accedere come "kumar". Inteso? Bene, lascia che ti mostri un esempio.

Esegui comandi come un altro utente tramite Sudo

Attualmente ho effettuato l'accesso come utente "senthil". Lascia che ti mostri l'utente attualmente connesso con whoami comando.

$ whoami
senthil

Ora eseguirò un semplice "echo " comando con sudo come utente di destinazione "kumar" mentre ha effettuato l'accesso come "senthil":

$ sudo -u kumar bash -c 'echo "My Username is $USER, and my user ID is $UID"'

Ti verrà chiesto di inserire la password dell'utente corrente (cioè "senthil" in questo caso). Una volta autenticato, il echo il comando verrà eseguito come utente "kumar" e visualizzerà il nome utente e l'ID utente di "kumar".

Risultato di esempio:

[sudo] password for senthil: 
My Username is kumar, and my user ID is 1001

Quello che in realtà abbiamo appena fatto è eseguire il comando "echo " comando come utente "kumar" mentre abbiamo effettuato l'accesso come "senthil". Questo è il motivo per cui vedi il nome utente e l'ID utente di kumar, ma non di senthil.

Verifichiamo se l'uid dell'utente "kumar" è corretto con id comando.

$ id kumar
uid=1001(kumar) gid=1001(kumar) groups=1001(kumar),10(wheel)

Sì, l'uid di kumar è corretto in entrambe le uscite.

Qui, il -u flag viene utilizzato per eseguire il comando fornito come un altro utente (ad esempio kumar in questo caso) e bash -c viene utilizzato per menzionare il nome del comando. Dovresti menzionare il comando tra virgolette singole.

Se non usi bash -c opzione, l'echo il comando restituirà il nome utente e l'uid dell'utente corrente invece dell'utente di destinazione.

$ sudo -u kumar echo "My Username is $USER, and my user ID is $UID"
My Username is senthil, and my user ID is 1000

Allo stesso modo, puoi eseguire qualsiasi comando come utente diverso.

Tieni presente che nel nostro precedente comando di esempio non ho inserito sudo password per l'utente di destinazione. Come mai? Perché, l'echo il comando non richiede sudo parola d'ordine.

Se esegui un comando che richiede sudo autorizzazione come un altro utente, è necessario inserire la password. Ecco un altro esempio.

$ sudo -u kumar bash -c 'sudo dnf --refresh update'

Risultato di esempio:

[sudo] password for senthil: 
[sudo] password for kumar: 
AlmaLinux 8 - BaseOS                                                                                                                                                               344  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            388  B/s | 4.7 kB     00:12    
AlmaLinux 8 - Extras                                                                                                                                                               316  B/s | 3.9 kB     00:12    
Dependencies resolved.
Nothing to do.
Complete!

Hai notato che ho inserito sudo password per entrambi gli utenti? Sì. Perché eseguiamo "sudo dnf update ", che richiede privilegi elevati. Ecco perché è necessario inserire il sudo password per l'utente di destinazione. Per comandi normali ad es. ls , uname ecc., non è necessario inserire la password dell'utente di destinazione.

Non solo i comandi Linux, puoi applicare questo metodo anche per eseguire script. Diciamo che vuoi eseguire uno script di backup che viene salvato in $HOME directory di un altro utente. Puoi semplicemente eseguire lo script dall'utente corrente come un altro utente usando questo comando:

$ sudo -u kumar bash -c '~/backup_script_name'

Esegui comandi senza password Sudo

A volte, potresti trovarti in una situazione in cui non vuoi inserire la password sudo per ogni comando. In questi casi, puoi saltare la richiesta di password per comandi specifici aggiungendo NOPASSWD opzione in /etc/sudoers file.

Supponiamo che tu voglia consentire a determinati utenti di eseguire qualsiasi dnf comando senza password sudo. Per farlo, trova prima il percorso del dnf comando usando which o whereis comandi.

$ which dnf
/usr/bin/dnf
$ whereis dnf
dnf: /usr/bin/dnf /etc/dnf /usr/share/man/man8/dnf.8.gz

Come puoi vedere, il percorso eseguibile di dnf il comando è /usr/bin/dnf .

Ora, modifica /etc/sudoers file usando il comando:

$ sudo visudo

Avviso: Tieni presente che non dovresti modificare manualmente i sudoers file utilizzando qualsiasi editor di testo. Usa sempre visudo comando per modificare in sicurezza i sudoers file.

Aggiungi la riga seguente alla fine del file per consentire all'utente chiamato "kumar" di eseguire dnf comandi senza sudo password.

kumar ALL=NOPASSWD:/usr/bin/dnf

Salva il file ed esci.

D'ora in poi, l'utente "kumar" può eseguire dnf comandi senza sudo password.

[[email protected] ~]$ sudo -u kumar bash -c 'sudo dnf --refresh update'
[sudo] password for senthil: 
AlmaLinux 8 - BaseOS                                                                                                                                                               358  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            324  B/s | 4.7 kB     00:14    
AlmaLinux 8 - Extras                                                                                                                                                               302  B/s | 3.9 kB     00:13    
Dependencies resolved.
Nothing to do.
Complete!

Vedere? Non è necessario inserire sudo password per "kumar".

Per revocare questo comportamento, rimuovi semplicemente la riga sopra.

Disclaimer: Dovresti stare molto attento mentre applichi questo metodo. Questo metodo può essere utilizzato sia per scopi produttivi che distruttivi. Ad esempio, se consenti agli utenti di eseguire 'rm' comando senza sudo password, potrebbero eliminare accidentalmente o intenzionalmente file importanti. Non farlo a meno che non sia veramente necessario.

Conclusione

In questo breve tutorial, abbiamo discusso di come consentire agli utenti di eseguire comandi come un altro utente tramite sudo in Linux. Abbiamo anche imparato come disabilitare la richiesta della password sudo per determinati utenti durante l'esecuzione di comandi specifici modificando sudoers file.

Come ho avvertito, è necessario prestare attenzione durante il test di questo metodo su un sistema di produzione. Potresti inconsapevolmente consentire a un utente di eseguire un comando dannoso (ad es. rm ) senza dover inserire la password sudo. Dovresti sempre fare attenzione durante il test di questo tipo di suggerimenti per Linux.

Lettura correlata:

  • Esegui comandi su sistemi Linux remoti tramite SSH
  • Come eseguire comandi particolari senza password Sudo in Linux

AlmaLinux
  1. Esegui container su Linux senza sudo in Podman

  2. 20 comandi Linux essenziali per ogni utente

  3. Esplorazione delle differenze tra i comandi sudo e su in Linux

  4. Come creare un utente Sudo in Rocky Linux 8

  5. Controllo dell'account utente di Windows rispetto a sudo di Linux

Digita i comandi Linux in lettere maiuscole per eseguirli come utente Sudo

Come eseguire comandi particolari senza password Sudo in Linux

Come creare un utente Sudo in Ubuntu Linux

Come eseguire comandi Sudo senza password

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password