Sei un amministratore, ma non root. L' rootutente 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-datautente 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 rootnon si possono fare perché il sistema stesso non può funzionare o dare un senso a esse. Quindi rootnon è 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 rooted rootè utilizzato per eseguire attività amministrative.
Posso accedere come root?
È possibile configurare l' rootaccount in modo che sia possibile accedere con una password, ma questo non è abilitato di default in Ubuntu. Invece, si può pensare rootdi essere come www-data, lp, nobody, e altri conti non umani. (Corri cat /etc/passwdo getent passwdper 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 roote 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 rootshell senza autenticare come root, che producono un effetto simile: i più comuni sono sudo -so-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 rootprima che si verifichi qualsiasi accesso; con i sudometodi 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 eknome 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 sudoper eseguire un comando come root:
sudo command...
Questo mi chiederà la mia password. (Non rootè una password; rootnon 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. sudoi 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 rootprivilegi continuerà comunque a fallire, tranne quando il comando viene eseguito comeroot .

Schermata che illustra la necessità di utilizzare sudoper eseguire attività amministrative. (Basato su "Sandwich" di Randall Munroe .)
sudo, graficamente
Programmi grafici possono essere eseguiti come rootattraverso interfacce grafiche persudo , ad esempio gksu/gksudo e kdesudo. Ad esempio, per eseguire GParted come rootpotrei 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 rootprivilegi. (Ciò è possibile anche con l' sudoautenticazione 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 rootcon gksudoe altri sudofrontend 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 sudointerfacce della GUI come il modo in cui le applicazioni su Ubuntu eseguono azioni come rootdietro 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, pkexecpuò 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...
pkexecrichiede una password graficamente, anche se viene eseguita da un Terminale (questo è uno dei modi in cui il suo comportamento è più simile a gksudoquello 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, pkexecsi 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 rootcon 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 sudoprima? 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 rootcon 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?
susi autentica come un altro utente ed esegue un comando (o avvia una shell interattiva). È possibile limitare chi è autorizzato a utilizzare su, ma si suautentica 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 usernamecon sudo, si immette la password . Quando si esegue un comando come usernamecon su, si immette usernamela password .
Poiché suesegue l'autenticazione per l'utente di destinazione , con sute puoi solo eseguire comandi come utenti i cui account sono abilitati .
L' rootaccount (come www-datae nobody) è disabilitato per impostazione predefinita. Non esiste una password che funzionerà per accedere come root. Quindi non puoi usare super eseguire comandi come root.
È possibile utilizzare super 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 suaffatto.
Combinando suesudo
Qualcuno che non è un amministratore può anche utilizzare super eseguire sudocome 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 super eseguire sudoper 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 susarebbe 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 sudofarlo root?
A meno che tu non abbia riconfigurato sudoper farlo funzionare senza una password, fallirà.
Non può un programma che non dovrebbe essere eseguito come rootdue vie su un recente sudodi comando, quindi è richiesta alcuna password?
È molto improbabile che ciò abbia successo. Al giorno d'oggi, la maggior parte dei sistemi operativi (incluso Ubuntu) sono sudoconfigurati 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, sudoin 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 sudoo 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 sudoe sue rendere le persone come il log-in root, manualmente?
No, perché ci sono seri svantaggi associati al consentire alle persone di accedere come del roottutto. 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 rootprivilegi.
Inoltre, proprio come potenzialmente un programma dannoso potrebbe guardare ciò che qualcuno digita durante l'esecuzione sudoo su, o creare una richiesta di falsa sudo/ supassword, 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 admingruppo viene mantenuto per compatibilità con le versioni precedenti (e continua a conferire potere amministrativo agli utenti al suo interno), ma sudoviene 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 sudoe 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).