Sei un amministratore, ma non root
. L' root
utente può fare qualsiasi cosa. Gli amministratori possono eseguire azioni comeroot
, ma di solito ciò che gli amministratori non fanno root
. In questo modo, hai il pieno controllo del tuo sistema, ma solo quando scegli di usarlo.
Ubuntu ti chiede la password quando tenti di fare cose come root
, per assicurarti di essere davvero tu.
Account utente: umani e in caso contrario
Gli utenti umani reali hanno account utente per rappresentarli. Hai creato uno di questi account quando hai installato Ubuntu. Ma non tutti gli account utente rappresentano utenti umani reali .
Agli utenti umani reali vengono concesse (e negate) le capacità attraverso i loro account utente. Devono utilizzare i loro account utente per utilizzare il sistema; pertanto, le abilità e le limitazioni dei loro account utente si applicano a loro.
Gli account utente vengono anche utilizzati per codificare set di abilità e limitazioni. Alcuni account utente - la maggior parte, in realtà, a meno che tu non abbia molti utenti umani della macchina - esistono in modo che determinati programmi o comandi possano essere eseguiti con la loro identità, un'identità con le giuste capacità e limitazioni per il lavoro.
Ad esempio, l' www-data
utente esiste in modo tale che se si esegue un server Web, possiede i dati resi accessibili dal server. Nessun utente umano reale deve avere il potere di apportare modifiche non controllate a tali dati e il server Web non deve essere autorizzato a eseguire azioni non necessarie per servire il web. Di conseguenza, sia i dati Web che il resto del sistema sono più sicuri contro rotture accidentali o intenzionali, rispetto a se il server Web fosse gestito da un utente umano che avrebbe tutti i poteri del server Web (e i cui poteri il server Web avrebbe possedere).
L'account utente non umano più importante
Il superutente , il cui nome utente è root
, è un account utente non umano con una combinazione molto specifica di abilità e limitazioni: tutte le abilità e nessuna limitazione .
root
È permesso fare qualsiasi cosa. Ci sono ancora cose che root
non si possono fare perché il sistema stesso non può funzionare o dare un senso a esse. Quindi root
non è possibile uccidere un processo che si trova in un sonno ininterrotto o rendere una roccia troppo pesante per muoversi, quindi spostarlo .
Molti processi di sistema importanti, come ad esempio init
, vengono eseguiti come root
ed root
è utilizzato per eseguire attività amministrative.
Posso accedere come root
?
È possibile configurare l' root
account in modo che sia possibile accedere con una password, ma questo non è abilitato di default in Ubuntu. Invece, si può pensare root
di essere come www-data
, lp
, nobody
, e altri conti non umani. (Corri cat /etc/passwd
o getent passwd
per vederli tutti.)
Gli utenti umani accedono con i propri account utente, quindi se un'attività deve essere eseguita con un altro account utente, fanno sì che l'attività venga eseguita con tale identità , senza aver effettivamente effettuato l'accesso come tale utente.
È possibile configurare gli altri utenti non umani, come www-data
, quindi si può accedere anche come loro. È piuttosto raro, tuttavia, mentre in alcuni altri sistemi operativi simili a Unix è comune accedere come root
in un terminale . I rischi associati all'esecuzione di un'intera interfaccia grafica in quanto root
, combinati con quanti programmi grafici non sono progettati per funzionare come root
e potrebbero non funzionare correttamente, significano che non si dovrebbe mai tentare di ottenere una sessione desktop diroot
proprietà .
Si noti che durante l'accesso come root
è disabilitato di default in Ubuntu, ci sono modi per ottenere una root
shell senza autenticare come root
, che producono un effetto simile: i più comuni sono sudo -s
o-i
, modalità di recupero e tecniche simili . (Non preoccuparti se non sai quali sono queste cose.) In realtà non si sta effettuando il login: in modalità di recupero, diventi root
prima che si verifichi qualsiasi accesso; con i sudo
metodi basati su, stai semplicemente eseguendo una shell come root.
Amministratori
In Ubuntu, gli amministratori sono gli utenti che possono fare quello che vogliono root
, quando scelgono di farlo .
Impostazioni di sistema> Account utente. "Eliah Kagan" è un amministratore, quindi può fare cose come root
, ma non lo èroot
.
Sono un amministratore sul mio sistema Ubuntu. Quando eseguo programmi, di solito vengono eseguiti come ek
("Eliah Kagan" è il nome completo che corrisponde al ek
nome utente.)
Quando eseguo AbiWord o LibreOffice, viene eseguito come ek
. Quando eseguo Firefox, Chromium, Empathy o Pidgin, funziona come ek
. I programmi eseguiti per fornire l'interfaccia desktop vengono eseguiti come ek
.
Tuttavia, sono un amministratore, quindi se devo eseguire un'attività amministrativa, posso farlo.
sudo
Sulla riga di comando, normalmente userei sudo
per eseguire un comando come root
:
sudo command...
Questo mi chiederà la mia password. (Non root
è una password; root
non ne ha una.)
- Poiché sono un amministratore, posso eseguire azioni come
root
. Nella configurazione predefinita, devo inserire la mia password per farlo.
- Gli utenti che non sono amministratori non possono eseguire azioni come
root
, anche inserendo la loro password. sudo
i comandi falliranno se l'utente che li esegue non è un amministratore.
Poiché gli amministratori sono utenti perfettamente ordinari ad eccezione della possibilità di eseguire azioni come root
, l'esecuzione di un comando che richiede root
privilegi continuerà comunque a fallire, tranne quando il comando viene eseguito comeroot
.
Schermata che illustra la necessità di utilizzare sudo
per eseguire attività amministrative. (Basato su "Sandwich" di Randall Munroe .)
sudo, graficamente
Programmi grafici possono essere eseguiti come root
attraverso interfacce grafiche persudo
, ad esempio gksu
/gksudo
e kdesudo
. Ad esempio, per eseguire GParted come root
potrei correre gksudo gparted
. Quindi verrebbe richiesto graficamente la mia password.
Dato che sono richiesto graficamente, non ci deve essere un terminale. Questo è uno dei modi in cui vengono eseguiti gli strumenti di amministrazione root
.
polkit
Polkit (una volta noto come PolicyKit) è un altro modo per gli amministratori di fare le cose come root
. Un programma accede a un servizio che esegue l'azione. A volte, l'azione esegue un intero programma; a volte l'azione è più limitata.
Al giorno d'oggi, molte utility di amministrazione grafica del sistema sono configurate per usare polkit di default, piuttosto che per usarlo sudo
.
Un esempio di tale utilità è il Software Center. Sfrutta appieno polkit, richiedendo all'utente di inserire la password solo quando desidera fare qualcosa che richiede root
privilegi. (Ciò è possibile anche con l' sudo
autenticazione basata su, ma è più difficile e brutto da realizzare.)
Nel Software Center, posso trovare e leggere un'applicazione; quindi mi viene chiesta la password quando voglio installarla.
Come Polkit è diverso
Qualsiasi programma grafico può essere eseguito come root
con gksudo
e altri sudo
frontend grafici . (Il programma potrebbe non funzionare molto bene, a seconda che sia progettato o meno per essere utilizzato come root
. Ma il comando per avviare il programma verrà eseguito come root
.)
Mentre polkit è ora più comune delle sudo
interfacce della GUI come il modo in cui le applicazioni su Ubuntu eseguono azioni come root
dietro le quinte, polki eseguirà solo un'applicazione grafica come root
se ci fosse un file di configurazione che lo consenta e che indica quali azioni possono essere eseguite .
Polkit, non graficamente
pkexec
è il comando usato per eseguire un programma con polkit.
Ad esempio sudo
, pkexec
può eseguire comandi non grafici. (E non richiede un file di configurazione che definisca le capacità del comando - esegue semplicemente il comando come root
.)
pkexec command...
pkexec
richiede una password graficamente, anche se viene eseguita da un Terminale (questo è uno dei modi in cui il suo comportamento è più simile a gksudo
quello della semplice esecuzione sudo
).
(Se non è presente alcuna GUI, ad esempio se si è effettuato l'accesso da una console virtuale o da una sessione SSH di solo testo o la GUI non funziona correttamente, pkexec
si degraderà con grazia e verrà richiesta la password dalla riga di comando .)
Una volta eseguita correttamente l'autenticazione, il comando viene eseguito nel terminale.
Esecuzione di comandi come altri utenti Inoltre root
root
è speciale perché può fare tutto ciò che può essere fatto. Ma è un account utente come qualsiasi account, e le modalità di esecuzione di comandi come root
con sudo
(direttamente o con un'interfaccia grafica) o polkit può essere leggermente modificato per eseguire un comando come qualsiasi altro utente:
sudo -u username command...
gksudo -u username command...
pkexec --user username command...
Che cosa? Digiti sudo
prima? Come è quella sicurezza ?!
Eseguire comandi con sudo
è un po 'come invocare l'infallibilità papale .
Quando esegui un comando consudo
[invoca l'infallibilità papale] , Ubuntu [gente cattolica] si impegna a fondo per assicurarti di essere davvero tu [davvero il Papa].
Sì, so che l'infallibilità papale (anche quando normativa) è dichiarativa; il parallelo non è perfetto.
Cercare di fare qualcosa come root
con sudo
(o polkit) è un grosso problema: Ubuntu non lascerà che questa diapositiva passi come tutte le altre volte che esegui un programma.
Ti viene richiesta la password. (Quindi, ciò che hai fatto viene ricordato per un breve periodo, quindi non devi inserire costantemente la tua password mentre gestisci il tuo sistema.)
Oltre a ricordarti di stare attento , questo salvaguarda due scenari:
- Qualcuno usa il tuo computer (o dispositivo mobile), forse con il pretesto di controllare la propria e-mail o un simile scopo innocuo. Qui, è ancora possibile che facciano del male, ad esempio potrebbero modificare o eliminare i tuoi documenti. Tuttavia, non possono amministrare il sistema, poiché non possono inserire la password.
- I programmi che non devono amministrare il sistema non possono farlo, a meno che non si inserisca la password. Ad esempio, se il tuo browser web è compromesso da un bug di sicurezza ed esegue codice dannoso, non può ancora eseguire attività amministrative. Non può creare ed eliminare utenti, modificare i programmi installati come
root
(che include tutto ciò che è installato dal gestore pacchetti, come LibreOffice) o alterare il sistema a un livello profondo.
Ne ho sentito parlare su
. Cos'è quello? Posso usarlo?
su
si autentica come un altro utente ed esegue un comando (o avvia una shell interattiva). È possibile limitare chi è autorizzato a utilizzare su
, ma si su
autentica con la password dell'account di destinazione , non con la password dell'utente in esecuzione.
Ad esempio, viene eseguito come nome utente , proprio come .su username -c 'command...'
command...
sudo -u username command...
Ma quando si esegue un comando come username
con sudo
, si immette la password . Quando si esegue un comando come username
con su
, si immette username
la password .
Poiché su
esegue l'autenticazione per l'utente di destinazione , con su
te puoi solo eseguire comandi come utenti i cui account sono abilitati .
L' root
account (come www-data
e nobody
) è disabilitato per impostazione predefinita. Non esiste una password che funzionerà per accedere come root
. Quindi non puoi usare su
per eseguire comandi come root
.
È possibile utilizzare su
per eseguire comandi come un altro utente che può accedere (che in genere include tutti gli account utente sul proprio sistema che rappresentano gli esseri umani).
Una volta effettuato l'accesso come ospite, non è possibile utilizzarlo su
affatto.
Combinando su
esudo
Qualcuno che non è un amministratore può anche utilizzare su
per eseguire sudo
come amministratore. (Questo è però OK, in quanto hanno bisogno la password dell'amministratore per eseguire comandi come amministratore.) Ciò significa che un utente limitato può utilizzare su
per eseguire sudo
per eseguire un comando come root
. Questo può apparire come:
su username -c 'sudo command...'
(L'esecuzione di programmi grafici in questo modo richiede un'attenzione speciale .)
Non su
sarebbe un modo più sicuro per eseguire comandi come root
?
Probabilmente no.
Che cosa succede se a un utente non dovrebbe essere consentito di agire come root
?
Renderli un utente limitato anziché un amministratore.
Cosa succede se un programma in esecuzione come amministratore tenta di sudo
farlo root
?
A meno che tu non abbia riconfigurato sudo
per farlo funzionare senza una password, fallirà.
Non può un programma che non dovrebbe essere eseguito come root
due vie su un recente sudo
di comando, quindi è richiesta alcuna password?
È molto improbabile che ciò abbia successo. Al giorno d'oggi, la maggior parte dei sistemi operativi (incluso Ubuntu) sono sudo
configurati di default in modo tale che i suoi timestamp si applichino solo in un contesto specifico.
Ad esempio, se eseguo sudo ...
in una scheda Terminale e eseguo l'autenticazione correttamente, sudo
in un'altra scheda (o eseguito da un programma GUI non correlato o che eseguo da una console virtuale o sessione SSH) verrà comunque richiesta la password. Anche se viene eseguito immediatamente dopo.
Un programma in esecuzione come utente X non ha accesso alla password dell'utente X?
No.
Se un programma dannoso è in grado di funzionare come amministratore, non può "ascoltare" ciò che viene digitato quando l'amministratore esegue l'autenticazione con sudo
o polkit?
Potenzialmente sì. Ma poi potrebbe "ascoltare" una password digitata per su
.
Se dico a qualcuno la mia password—
Non dire alle persone la tua password.
Cosa succede se qualcuno deve conoscere la mia password per fare qualcosa per mio conto, ma non voglio lasciargli amministrare il sistema?
Idealmente, dovrebbero avere un account utente separato che consenta loro di fare ciò che devono fare. Ad esempio, può condividere file tra account, consentendo a più utenti di scrivere su di essi, negando comunque l'accesso ad altri utenti.
Tuttavia, in una situazione in cui una persona meno fidata può essere autorizzata a condividere il tuo account, dovrebbe essere un account utente limitato. A questo scopo potresti creare un account separato (il che ha senso: se si tratta di un account per te e per qualcun altro che desideri avere capacità diverse, dovrebbe essere un account diverso).
Quindi, sarebbe la cosa più sicura è quello di non consentire sia sudo
e su
e rendere le persone come il log-in root
, manualmente?
No, perché ci sono seri svantaggi associati al consentire alle persone di accedere come del root
tutto. Ove possibile, dovrebbe essere intrapreso il minor numero possibile di azioni root
. Anche la maggior parte degli atti che riguardano direttamente l'amministrazione di un sistema (ad esempio, guardando quali utenti sono configurati e leggendo i registri) di solito non richiedono root
privilegi.
Inoltre, proprio come potenzialmente un programma dannoso potrebbe guardare ciò che qualcuno digita durante l'esecuzione sudo
o su
, o creare una richiesta di falsa sudo
/ su
password, potenzialmente un programma dannoso potrebbe anche creare una schermata di accesso falsa.
Cosa rende un utente un amministratore?
Appartenenza al gruppo.
In Ubuntu 12.04 e versioni successive , gli amministratori sono membri del gruppo chiamato sudo
.
In Ubuntu 11.10 e precedenti , gli amministratori sono membri del gruppo chiamato admin
.
Quando un sistema Ubuntu precedente a 12.04 viene aggiornato a 12.04 o successivo, il admin
gruppo viene mantenuto per compatibilità con le versioni precedenti (e continua a conferire potere amministrativo agli utenti al suo interno), ma sudo
viene utilizzato anche il gruppo.
Account utente limitato
Posso usare un account utente limitato anziché un account amministratore?
Se ti piace, certo. Crea un account utente limitato in Impostazioni di sistema > Account utente e accedi come tale utente.
Posso rendere il mio account amministratore un account utente limitato?
Sì, rimuovilo dai gruppi sudo
e admin
(vedi sopra).
Ma dovresti assicurarti che ci sia almeno un altro account amministratore, in modo da poter amministrare il tuo sistema. In caso contrario, dovrai avviare la modalità di ripristino o un CD live e rendere di nuovo un utente un amministratore . (È simile al ripristino di una password dell'amministratore persa .)
Gli strumenti grafici per amministrare utenti e gruppi di solito ti impediranno di creare un sistema senza amministratori o almeno ti avvertiranno. Gli strumenti da riga di comando in genere non lo fanno (confidando di sapere cosa stai facendo).