Risposte:
In pratica, entrambi ti renderanno il superutente. Tuttavia, fanno cose leggermente diverse, in modi leggermente diversi.
Innanzitutto, su -
passa a una shell di accesso, mentre sudo -s
non lo fa. In pratica, ciò spesso significa che le variabili di ambiente non passeranno a root
"per" sudo -s
. Si noti che è possibile eseguire solo su
per non ottenere una shell di accesso o sudo -i
per ottenere una shell di accesso [non in tutte le versioni].
In secondo luogo, su
e su -
passare a un nuovo utente che chiede di autenticarsi come il nuovo utente. sudo -s
e sudo -i
(e solo regolarmente sudo foo
) ti permettono di eseguire un comando per il quale sei pre-autorizzato [vedi /etc/sudoers
], possibilmente chiedendoti di confermare il tuo ID corrente .
Se vuoi essere davvero carino, puoi anche eseguire sudo su -
, che richiederà di accedere come root ( su -
) eseguito dall'utente root (la sudo
parte).
Se l'utente root è bloccato (come su Ubuntu), non sarà possibile accedere come root usando su
. In questo caso, dovrai usare sudo -s
osudo -i
su -s
Passerà a un utente (in questo caso root) e avvierà la shell specificata o uno dei pochi altri metodi per determinare la shell. Questo è utile se vuoi usare zsh o un'altra shell come root molto velocemente ... e per qualche ragione non stai usando sudo.
sudo -s
Esegue solo una shell usando sudo, che ti darebbe una shell root. Puoi passarci anche una shell.
su -s è più vecchio, molto più vecchio del comando sudo -s. La mia ipotesi è che lo sviluppatore stia cercando di rendere il più semplice possibile passare all'utilizzo di sudo.
su è un comando per passare a un altro utente, per eseguire una shell o eseguire un comando specifico. Devi autenticarti come l'altro utente. Se vuoi fare il root su root, hai bisogno della password di root.
sudo è un comando per eseguire un altro comando (facoltativamente una shell) come utente diverso. È necessario autenticarsi come proprio utente . Il permesso di usare sudo (e le cose specifiche che puoi fare con esso) sono specificati da un amministratore nel file sudoers.
Se si dà a qualcuno l'accesso a su (ad esempio, assegnando loro la password di root), allora possono farci qualsiasi cosa: eseguire altri comandi, aprire una shell, cambiare la password, accedere da remoto tramite ssh e così via. In sostanza stai dando loro l'accesso all'altro account, con "su" è solo una cosa che possono farci.
sudo è molto più fine. È possibile concedere privilegi a un utente o a un gruppo. Puoi consentire a un utente o un gruppo di eseguire sudo entro un determinato periodo di tempo (ad esempio, dal lunedì al venerdì, dalle 9:00 alle 17:00). Puoi specificare un elenco specifico di comandi che possono eseguire (ad es. Solo / usr / local / bin / run_backup) oppure puoi specificare un utente specifico a cui possono eseguire comandi come (ad es. Www, backup, personale, ecc. ).
Oltre alla sua flessibilità, sudo è una soluzione migliore in tutti i casi, perché non richiede l'accesso a tutto ciò che l'utente non ha già. Se si concede a qualcuno l'accesso sudo, è possibile revocarlo rimuovendo la riga nel file sudoers o rimuovendolo dal gruppo sudoers. Se elimini il loro account, il loro accesso è sparito.
Se dai loro la password di root, anche supponendo che non facciano nulla di spiacevole, lo sapranno per sempre. Se hai più persone che hanno bisogno dell'accesso root per le attività amministrative, ciò significa o cambiare tutte le password di root ogni volta che qualcuno lascia, o supporre che sia giusto per loro avere pieno accesso ai tuoi sistemi dopo che te ne sei andato.
Da Wikipedia :
su (abbreviazione di utente sostitutivo o switch user) è un comando Unix utilizzato per eseguire la shell di un altro utente senza disconnettersi.
Un comando correlato chiamato sudo esegue un comando come un altro utente ma osserva una serie di vincoli su quali utenti possono eseguire quali comandi quali altri utenti (generalmente in un file di configurazione chiamato / etc / sudoers, modificabile al meglio dal comando visudo). A differenza di su, sudo autentica gli utenti rispetto alla propria password anziché a quella dell'utente di destinazione (per consentire la delega di comandi specifici a utenti specifici su host specifici senza condividere le password tra loro e mitigando il rischio di eventuali terminali non presidiati).
Una cosa che non viene detto completamente è questa: quale puoi usare spesso dipende dalla distribuzione che stai usando e da chi la esegue. L'uno o l'altro ( su
o sudo
) probabilmente non è impostato per l'uso completo per impostazione predefinita. Ad esempio, come alcuni hanno già detto, OS X e Ubuntu disabilitano l'account root ( su
) per impostazione predefinita. Allo stesso modo, Debian non offre agli utenti regolari alcun privilegio predefinito sudo
. (Su tutti questi sistemi, è possibile modificare questi valori predefiniti, ma solo se si dispone di una sorta di privilegi amministrativi per cominciare. Suppongo che stiamo parlando di una situazione non server e amministrare la macchina poiché siamo su SU piuttosto di SF, ma per ogni evenienza.)
Infine, se si desidera utilizzare sudo
in modo più dettagliato, è necessario cercare man sudoers
come modificare il file / etc / sudoers . Tuttavia, non dovresti mai modificarlo a mano. Utilizza il programma visudo : ti impedirà di salvare le tue modifiche a meno che non siano almeno minimamente sane. È un'ottima protezione contro semplici errori che potrebbero bloccarti dai privilegi di amministratore del tuo sistema.
Sui sistemi in cui l'account superutente è disabilitato, come Mac OS X, su
non funzionerà; sudo -s
volontà.
Inoltre, sembra che non ci sia su -s
disponibile, almeno sulla mia macchina.
sudo
(che non è nemmeno sempre installato).
Questa introduzione può aiutarti. su
è una scorciatoia per su root
e mantieni i tuoi diritti come l'altro utente a tempo indeterminato. Più pericoloso, ma anche più conveniente se si eseguono molti comandi di accesso alla radice per un periodo di tempo.
su creerà fondamentalmente una nuova shell di login con un altro privilegio utente (login) sudo ti consentirà temporaneamente di eseguire il comando usando l'utente che hai specificato. Su alcuni UNIX come FreeBDS non ci sono opzioni '-s'.
sudo
non offre privilegi di default agli utenti regolari. Su tali sistemi,su
è l'unica opzione.