GNU/Linux >> Linux Esercitazione >  >> Linux

Comprendere la differenza tra il comando sudo e su su Linux

In uno dei nostri articoli precedenti, abbiamo discusso in dettaglio il comando "sudo". Verso la fine di quel tutorial, c'era una menzione di un altro comando simile 'su' in una piccola nota. Bene, in questo articolo discuteremo in dettaglio il comando 'su' e come differisce dal comando 'sudo'.

Ma prima di farlo, tieni presente che tutte le istruzioni e gli esempi menzionati in questo tutorial sono stati testati su Ubuntu 18.04 LTS e Debian 10.

Il comando su in Linux

Il lavoro principale del comando su è quello di consentire di passare a un altro utente durante una sessione di accesso. In altre parole, lo strumento ti consente di assumere l'identità di un altro utente senza dover disconnettersi e quindi accedere (come tale utente).

Il comando su viene utilizzato principalmente per passare all'account di superutente/root (poiché i privilegi di root sono spesso richiesti mentre si lavora sulla riga di comando), ma, come già accennato, puoi usarlo per passare a qualsiasi altro utente non root come bene.

Ecco come puoi usare questo comando per passare all'utente root:

La password richiesta da questo comando è anche dell'utente root. Quindi, in generale, il comando su richiede di inserire la password dell'utente di destinazione. Dopo aver inserito la password corretta, lo strumento avvia una sottosessione all'interno della sessione esistente sul terminale.

su -

C'è un altro modo per passare all'utente root:eseguire il comando 'su -':

Ora, qual è la differenza tra 'su' e 'su -' ? Ebbene, il primo mantiene l'ambiente dell'utente vecchio/originale anche dopo che è stato effettuato il passaggio a root, mentre il secondo crea un nuovo ambiente (come dettato dal ~/.bashrc dell'utente root), simile al caso in cui accedi esplicitamente come utente root dalla schermata di accesso.

IMPORTANTE per gli utenti Debian 10. La variabile PATH dell'utente root differisce su Debian 10 quando si usa 'su' vs 'su -', le directory come /sbin mancano quando si usa solo 'su', il che significa che potresti ricevere errori di comando non trovato anche per l'amministrazione di base del sistema comandi. Quindi usa sempre 'su -' su Debian 10 per diventare utente root.

Anche la pagina man di 'su' chiarisce:

The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.

Quindi, sarai d'accordo sul fatto che l'accesso con "su -" ha più senso. Ma poiché esiste anche il comando 'su', ci si potrebbe chiedere quando è utile. Il seguente estratto, tratto dal sito web della wiki di ArchLinux, fornisce una buona idea dei vantaggi e delle insidie ​​del comando 'su':

  • A volte può essere vantaggioso per un amministratore di sistema utilizzare l'account shell di un utente normale anziché il proprio. In particolare, occasionalmente il modo più efficiente per risolvere il problema di un utente è accedere all'account di quell'utente per riprodurre o eseguire il debug del problema.
  • Tuttavia, in molte situazioni non è desiderabile, o può anche essere pericoloso, che l'utente root operi dall'account shell di un utente ordinario e con le variabili ambientali di quell'account piuttosto che dal proprio. Mentre si utilizza inavvertitamente l'account shell di un utente normale, root potrebbe installare un programma o apportare altre modifiche al sistema che non avrebbero lo stesso risultato come se fossero state apportate durante l'utilizzo dell'account root. Ad esempio, potrebbe essere installato un programma che potrebbe fornire all'utente ordinario il potere di danneggiare accidentalmente il sistema o ottenere l'accesso non autorizzato a determinati dati.

Nota:nel caso in cui desideri passare più argomenti dopo - in 'su -', dovresti utilizzare l'opzione della riga di comando -l offerta dal comando (invece di -). Ecco la definizione di - e l'opzione della riga di comando -l:

-, -l, --login
Provide an environment similar to what the user would expect had the user logged in directly.

When - is used, it must be specified as the last su option. The other forms (-l and --login) do not have this restriction.

su -c

C'è un'altra opzione del comando 'su' che vale la pena menzionare:-c. Ti consente di fornire un comando che desideri eseguire dopo essere passato all'utente di destinazione.

La pagina man di 'su' lo spiega come:

-c, --command COMMAND
Specify a command that will be invoked by the shell using its -c.

The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.

Considera il seguente modello di esempio:

su [target-user] -c [command-to-run]

Quindi, in questo caso, il "comando di esecuzione" verrà eseguito come:

[shell] -c [command-to-run]

Dove 'shell' verrebbe sostituito da 'target-user' shell definita in /etc/passwd file.

Sudo vs Su

Ora, poiché abbiamo discusso le basi del comando 'su', è ora di discutere le differenze tra i comandi 'sudo' e 'su'.

Password

La differenza principale tra i due è la password che richiedono:mentre 'sudo' richiede la password dell'utente corrente, 'su' richiede l'inserimento della password dell'utente root.

Abbastanza chiaramente, "sudo" è un'alternativa migliore tra i due per quanto riguarda la sicurezza. Si consideri, ad esempio, il caso di un computer utilizzato da più utenti che richiedono anche l'accesso come root. Usare "su" in uno scenario del genere significa condividere la password di root con tutti loro, il che non è una buona pratica in generale.

Inoltre, nel caso in cui desideri revocare l'accesso di superutente/root di un determinato utente, l'unico modo è modificare la password di root e quindi ridistribuire la nuova password di root tra tutti gli altri utenti.

Con Sudo, invece, puoi gestire entrambi questi scenari senza sforzo. Dato che "sudo" richiede agli utenti di inserire la propria password, non è necessario condividere la password di root, ma tutti gli utenti in primo luogo. E per impedire a un particolare utente di accedere ai privilegi di root, tutto ciò che devi fare è modificare la voce corrispondente nel file 'sudoers'.

Comportamento predefinito

L'altra differenza tra i due comandi è nel loro comportamento predefinito. Mentre "sudo" ti consente solo di eseguire un singolo comando con privilegi elevati, il comando "su" avvia una nuova shell, consentendoti di eseguire tutti i comandi che desideri con privilegi di root fino a quando non esci esplicitamente da quella vendita.

Quindi il comportamento predefinito del comando 'su' è potenzialmente pericoloso data la possibilità che l'utente possa dimenticare il fatto che stanno lavorando come root e potrebbe inavvertitamente apportare alcune modifiche irrecuperabili (come eseguire il comando 'rm -rf' in modo errato directory). Per una discussione dettagliata sul motivo per cui non è consigliabile funzionare sempre come root, vai qui.

Registrazione

Sebbene i comandi eseguiti tramite "sudo" vengano eseguiti come utente di destinazione (che è "root" per impostazione predefinita), vengono contrassegnati con il nome utente di sudoer. Ma in caso di 'su', non è possibile tracciare direttamente ciò che un utente ha fatto dopo aver eseguito l'operazione sull'account root.

Flessibilità

Il comando "sudo" è molto più flessibile in quanto puoi persino limitare i comandi a cui desideri che i sudo-er abbiano accesso. In altre parole, gli utenti con accesso a 'sudo' possono avere accesso solo ai comandi necessari per il loro lavoro. Tuttavia, con "su" non è possibile:o hai il privilegio di fare tutto o niente.

Sudo su

Presumibilmente a causa dei potenziali rischi connessi all'utilizzo di "su" o alla registrazione direttamente come root, alcune distribuzioni Linux, come Ubuntu, disabilitano l'account utente root per impostazione predefinita. Gli utenti sono incoraggiati a utilizzare "sudo" ogni volta che necessitano dei privilegi di root.

Tuttavia, puoi ancora fare 'su' con successo, cioè senza inserire la password di root. Tutto quello che devi fare è eseguire il seguente comando:

sudo su

Poiché stai eseguendo il comando con 'sudo', ti verrà richiesto solo di inserire la tua password. Quindi, una volta fatto, il comando 'su' verrà eseguito come root, il che significa che non richiederà alcuna password.

PS :Nel caso in cui desideri abilitare l'account di root sul tuo sistema (sebbene sia fortemente sconsigliato perché puoi sempre usare 'sudo' o 'sudo su'), dovrai impostare la password di root manualmente, cosa che puoi fare usando il seguente comando:

sudo passwd root

Conclusione

Sia questo che il nostro tutorial precedente (incentrato su 'sudo') dovrebbero darti una buona idea degli strumenti disponibili che ti consentono di eseguire attività che richiedono privilegi elevati (o un insieme completamente diverso di). Nel caso in cui tu abbia qualcosa da condividere su 'su' o 'sudo', o desideri condividere la tua esperienza, puoi farlo nei commenti qui sotto.


Linux
  1. Scopri la differenza tra i comandi "su" e "su -" in Linux

  2. Differenza tra i comandi "su" e "su -" in Linux

  3. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  4. La differenza tra account utente e account di servizio?

  5. Linux:differenza tra spazio utente e spazio kernel?

La differenza tra sudo e su spiegata

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra il comando apt e apt-get?

Comprendere il comando dell'ora in Linux

Qual è la differenza tra "trova" e "trova" in Linux?

Qual è la differenza tra &> e >&in bash?