Perché è male accedere come root?


192

Mi sono imbattuto spesso in post su forum o altri siti Web in cui vedi persone che scherzano in modo tale da eseguire / accedere come root come se fosse qualcosa di terribile e tutti dovrebbero saperlo. Tuttavia, non c'è molto che una ricerca rivela sulla questione.

Potrebbe essere ampiamente noto agli esperti di Linux, ma non so davvero perché. Ricordo di aver sempre funzionato come root quando ho provato Linux per la prima volta anni fa (Redhat e Mandrake) e non ricordo di essermi imbattuto in alcun problema a causa di ciò.

In realtà ci sono alcune distro che hanno uno sfondo rosso brillante con segni di avviso su di esso come sfondo per l'utente root (SuSe?). Uso ancora l'account "Amministratore" per un uso regolare nella mia installazione di Windows e non ho mai riscontrato problemi.


15
Penso che non ci siano problemi nell'esecuzione di un programma come root. È solo che, potresti danneggiare il nucleo del tuo sistema operativo (anche i sudoer possono farlo) se non sei molto saggio in Linux. a parte questo, non credo che ci siano problemi. Ma questo è solo il mio punto di vista.
Gaurav Butola,

1
Domanda correlata qui .
loevborg,

La difficoltà di entrare in modalità root varia tra le distro. Personalmente sono infastidito dal fatto che Fedora non ti permetta di "sudo" fin dall'inizio. OpenSUSE e Ubunto hanno sudo preconfigurato però ... e quindi se si sceglie la giusta distribuzione, è possibile ridurre al minimo i fastidi per non poter accedere ai file.
Djangofan,

4
@GauravButola anche se sei un esperto, è comunque una cattiva idea nel caso in cui un'applicazione venga compromessa.
strugee,

2
@DaboRoss commenta l'OP che lavora in Windows come amministratore; per la mia (piccola) esperienza in quel sistema operativo, mi sembra che sia più simile a Ubuntu: è un account privilegiato nel senso che può fare quello che vuoi, ma chiede il permesso prima di installare, ad esempio, un nuovo software. Quindi probabilmente l'equivalente dell'uso dell'utente "amministratore" in Windows tradotto in Ubuntu sarebbe quello di eseguire l'utente principale con sudo configurato in modo che non richieda il pass --- eseguire direttamente come root è molto più pericoloso.
Rmano,

Risposte:


154

Sconfigge il modello di sicurezza che esiste da anni. Le applicazioni sono pensate per essere eseguite con sicurezza non amministrativa (o come semplici mortali), quindi è necessario elevare i loro privilegi per modificare il sistema sottostante. Ad esempio, non vorrai che il recente arresto anomalo di Rhythmbox spazzasse via l'intera /usrdirectory a causa di un bug. O quella vulnerabilità appena pubblicata in ProFTPD per consentire a un utente malintenzionato di ottenere una shell ROOT.

È buona norma su qualsiasi sistema operativo eseguire le applicazioni a livello di utente e lasciare attività amministrative all'utente root e solo per necessità.


5
... e ti protegge dalla trasformazione di errori insignificanti in catastrofi. Sono un utente / amministratore di Unix dal 1990, ma posso sicuramente scivolare uno spazio nell'esatto posto sbagliato facendo un rm -rf tmp/tests/*...
Rmano

9
1.) La maggior parte delle persone considererà la propria directory home più importante delle directory root, poiché la prima non può essere reinstallata. Quindi non vedo il tuo punto. 2.) In termini di sicurezza, hai ragione. Ma provenendo da Windows (dove c'è MODO più malware in giro), dove uso l'account admin da sempre (come molti fanno), faccio fatica a considerare questo un vero pericolo. Sono troppo pigro per digitare sudoe la mia password per ogni secondo comando in Linux. Gli utenti Linux non dovrebbero essere pigri ?????
phil294

in disaccordo -_-: ~: |
Edgy1

@LazyPower grazie per aver modificato la tua risposta, ma ora non lo capisco più. Per modificare la mia cartella privata Ubuntu ~, i programmi non hanno bisogno dei diritti sudo. Rhythmbox PU w cancellare tutta la mia directory $ HOME / Music! E questo è tutto ciò che mi interessa! In che modo è correlato ai permessi di root?
phil294

1
È una bella chiamata @Blauhirn. Ho appena inviato una modifica di follow-up per riflettere che non vogliamo che elimini l'intero / usr. In termini di protezione delle cartelle $ HOME, niente come un buon backup può aiutarti. Non credo che questo particolare scenario sarebbe legato alla sicurezza tanto quanto alle buone pratiche. Grazie ancora per il callout.
lazyPower

79

Solo una parola: sicurezza.

  1. Sei registrato come root = tutte le applicazioni sono in esecuzione con i privilegi di root: ogni vulnerabilità in Firefox, Flash, OpenOffice ecc. Ora può distruggere il tuo sistema, perché possibili virus ora hanno accesso ovunque. Sì, ci sono solo pochi virus per Ubuntu / Linux, ma è anche a causa della buona sicurezza e dell'utente predefinito senza privilegi.
  2. Non si tratta solo di virus: un piccolo bug in un'applicazione potrebbe cancellare alcuni file di sistema o ...
  3. Quando sei loggato come root, puoi fare tutto - il sistema non lo chiederà! Vuoi formattare questo disco? Ok, basta un clic e il gioco è fatto, perché sei root e sai cosa stai facendo ...

16
I file di dati, che sono tutti di proprietà del mio account utente, sono molto più preziosi per me dei file di sistema. Tutti gli esempi sopra riportati continuano a presentare problemi quando si accede come utente, tranne per il fatto che i file di sistema facilmente sostituibili sono protetti.
kbeta,

5
@kbeta stai assumendo di essere in esecuzione su un computer in cui gli unici oggetti di valore sono i tuoi dati e file di sistema. In realtà linux è spesso usato in un sistema in cui ci sono molti utenti che usano un sistema contemporaneamente. In questo caso la stabilità del sistema (e quindi dei file di sistema) è molto più preziosa e anche altri file utente sono importanti.
Eric Pauley,

2
@kbeta Abbastanza equo, ma una configurazione di sistema danneggiata può anche rappresentare un rischio per i tuoi dati ... e ovviamente avere backup sarebbe una buona idea se il tuo sistema è attualmente a rischio o meno. Il funzionamento del backup corrente con un piano di ripristino di emergenza sarebbe ancora meglio.
Pryftan,

47

L'esecuzione come root è negativa perché:

  1. Stupidità: nulla ti impedisce di fare qualcosa di stupido. Se si tenta di modificare il sistema in qualsiasi modo che potrebbe essere dannoso, è necessario eseguire sudo che garantisce una pausa durante l'immissione della password per rendersi conto che si sta per effettuare una modifica grande / costosa.
  2. Sicurezza: è già stato menzionato alcune volte in questa domanda, ma sostanzialmente è la stessa cosa, più difficile da hackerare se non si conosce l'account di accesso dell'utente amministratore. root significa che hai già la metà del set funzionante di credenziali di amministratore.
  3. Non ne hai davvero bisogno: se devi eseguire diversi comandi come root e sei infastidito dal dover inserire la password più volte quando sudo è scaduto, tutto quello che devi fare è sudo -ie ora sei root. Vuoi eseguire alcuni comandi utilizzando le pipe? Quindi utilizzare sudo sh -c "comand1 | command2".
  4. Puoi sempre usarlo nella console di ripristino: la console di ripristino ti consente di provare a recuperare facendo qualcosa di stupido o risolvendo un problema causato da un'app (che dovevi ancora eseguire come sudo :)) Ubuntu non ha una password per l'account root in questo caso, ma puoi cercare online per modificarlo, questo renderà più difficile per chiunque abbia accesso fisico alla tua scatola essere in grado di fare del male.

Il motivo per cui non è stato possibile trovare informazioni sul motivo per cui è negativo è perché, beh, ci sono troppi dati in Internet :) e che molte persone che usano Linux da molto tempo pensano come te. Questo modo di pensare all'account di root è abbastanza nuovo (forse un decennio?) E molte persone sono ancora infastidite dal dover usare sudo. Soprattutto se stanno lavorando su un server, il che significa che sono entrati con l'intenzione di apportare modifiche al sistema. Probabilmente derivato da precedenti esperienze negative e standard di sicurezza che molti amministratori di sistema conoscono meglio, ma ancora non gli piace :).


"forse un decennio?" Molto più lungo di quello anche da quando hai scritto questo. Anche senza sudo c'è su per non parlare del gruppo di ruote (per esempio). La separazione dei privilegi è sempre importante ed è sempre stata importante e lo sarà sempre. Otoh non molte persone hanno usato il sistema operativo basato su Unix come molti anni fa e molti di loro sono abituati a essere sempre amministratori.
Pryftan,

36

Questa è una buona domanda Penso che la risposta sia leggermente diversa a seconda che tu stia parlando di un server o di un'installazione desktop.

Su un desktop, è raro usare l' rootaccount. In effetti, Ubuntu viene fornito con l'accesso root disabilitato. Tutte le modifiche che richiedono i privilegi di superutente vengono eseguite sudoe i suoi affini grafici gksudoe kdesudo. Dato che è facile impostare una rootpassword, tuttavia, perché le persone non lo fanno?

Uno dei motivi è che ti dà un ulteriore livello di sicurezza. Se si esegue un programma roote viene sfruttato un difetto di sicurezza, l'attaccante ha accesso a tutti i dati e può controllare direttamente l'hardware. Ad esempio, potrebbe installare un trojan o un key-logger nel kernel. In pratica, tuttavia, un attacco può causare una grande quantità di danni anche senza i privilegi di superutente. Dopotutto, tutti i dati dell'utente, inclusi documenti e password archiviate, sono accessibili senza accesso root.

Un punto più valido, su un sistema a utente singolo, è che all'utente viene impedito di rendere il sistema accidentalmente inutilizzabile. Se l'utente invia involontariamente un comando che elimina tutti i file, sarà comunque in grado di avviare il sistema, anche se i dati vengono persi.

Inoltre, la maggior parte delle applicazioni rivolte all'utente (X11) oggi si basa sul presupposto che vengano eseguite come account utente normale e senza diritti di amministratore. Pertanto, alcuni programmi potrebbero comportarsi in modo errato quando vengono eseguiti come root.

Su un sistema multiutente con solo accesso alla shell non grafico, molti di questi motivi non si applicano. Tuttavia, Ubuntu è ancora ragionevolmente impostato su un rootaccount inaccessibile . Per prima cosa, c'è una vera differenza tra ottenere l'accesso a un account utente (con sudodiritti) attraverso una falla di sicurezza e ottenere l'accesso root, poiché nel primo caso sarà necessario eseguire altri utenti che interromperanno l'esecuzione sudoe richiederanno comunque la password dell'account come ulteriore passaggio di sicurezza. Per un altro, è utile eseguire molte attività amministrative da un account utente e invocare solo sudoquando i privilegi di superutente sono assolutamente richiesti. Pertanto, quando si installa un programma dal sorgente, è consigliabile creare il sorgente - in esecuzione configureemake- all'interno della directory dell'utente e usando solo sudo make installnel passaggio finale. Ancora una volta ciò rende più difficile sparare a se stessi (e agli altri utenti del sistema multiutente) ai piedi, e diminuisce la probabilità di creare script che causino il caos con il sistema. Pertanto, anche su un server, è consigliabile attenersi all'amministrazione sudo basata su Ubuntu .


2
he will still be able to boot the system, even if the data will be lost.- Qual è il punto di questo? Se i miei dati vengono persi, i miei dati vengono persi e basta. Il software di sistema Linux può essere reinstallato se eliminato, perché dovrei preoccuparmi della perdita di dati in tali directory? D'altra parte, la perdita di dati ~è negativa. E sudonon mi protegge da quello.
phil294

2
Un'altra buona pratica è il backup dei dati importanti. Se si cancella la home directory, è comunque possibile avviare e copiare solo i file dal backup. Oppure, supponiamo che tu abbia un piccolo laptop per viaggiare. Potrebbe avere alcune foto, appunti di viaggio, orari dei treni - ma niente di troppo cruciale. Se cancelli i file utente, puoi comunque avviare il sistema e verificare il tuo volo o scoprire quale autobus prendere.
Richlv,

@Blauhirn Backups. E c'è una possibilità di recupero anche se sembra desolante.
Pryftan,

34

Un motivo per non funzionare come root che (finora) non è stato identificato da altre risposte è la tracciabilità. Probabilmente importa meno sulle macchine che sono principalmente macchine a utente singolo (desktop o laptop), ma sulle macchine server, se qualcuno ha effettuato l'accesso come root, non sai a chi dare la colpa per le azioni intraprese. Pertanto, la maggior parte delle organizzazioni professionali con più sistemi e più amministratori che necessitano di rootprivilegi richiedono alle persone di accedere utilizzando il proprio ID utente (e password), quindi utilizzare sudoo programmi simili per operare con rootprivilegi quando necessario.

Altrimenti, i motivi principali per non funzionare come root sono:

  • Ridurre al minimo il rischio di danni da incidenti. Se corri rm -fr / home/me/my-subdircome root, hai semplicemente eliminato drammaticamente tutto ciò che è importante dalla tua macchina a causa di quello spazio dopo la (prima) barra - perché le cose che vanno per prime sono le cose che sono state aggiunte per prime - piccole cose come il kernel, the /bine la /etcdirectory. Unix si arrabbia se li perdi.

  • Ridurre al minimo il rischio di danni da siti esterni dannosi. Se navighi come root, sei più quasi vulnerabile ai download drive-by di materiale dannoso.

Uso MacOS X più di Ubuntu, ma lì, il root è disabilitato di default, ed è ancora sul mio computer. Aggiorna regolarmente il kernel e altre operazioni simili - usando sudo(dietro le quinte). Tecniche simili si applicano a Linux in generale.

Fondamentalmente, dovresti usare i privilegi onnipotenti solo rootper periodi di lavoro abbreviati per evitare il rischio di errori.


1
Non si tratta di incolpare qualcuno, si tratta di riuscire a capire perché qualcuno ha apportato una modifica.
jippie,

2
@jippie: intendo "colpa" nello stesso modo in cui un VCS tiene traccia di chi ha fatto cosa in modo che alla persona corretta sia attribuita la responsabilità del cambiamento, nel bene e nel male, e uno dei nomi per il comando che esegue quel tracciamento è "colpa". Ti dà una persona con cui parlare per scoprire perché è successo qualcosa. Non è sempre "colpa" (anche se spesso deprimente, il motivo per cui è necessario sapere è perché qualcosa non funziona come previsto e c'è bisogno di sapere perché no). Quindi, si tratta di responsabilità e tracciabilità piuttosto che criticare necessariamente la persona per quello che hanno fatto.
Jonathan Leffler,

Su Ubuntu, comandi come in rm -fr / home/me/my-subdirrealtà non tentano di eliminare in modo ricorsivo /, poiché /vengono trattati appositamente per evitare tali errori. Vedere la documentazione delle opzioni --preserve-roote --no-preserve-rootin man rmper i dettagli. Ma il principio è il suono: errori di battitura solo carattere non esistono che provocano rml'eliminazione di ogni cosa. Ad esempio, se intendi rimuovere tutto nella directory corrente eseguendo rm -r *, ma hai accidentalmente messo un /prima *, sarebbe male.
Eliah Kagan,

@EliahKagan Ma se tu dovessi fare ... chown -R nobody:nobody ../da dire / etc ti proteggerebbe? Se lo facessi su / etc, ti farebbe male. Allo stesso modo è .*quando si esegue ricorsivamente un comando.
Pryftan,

21

TL; DR: fai le cose come root solo quando devi. sudorende abbastanza facile. Se abiliti gli accessi root, puoi comunque seguire questa regola, devi solo fare attenzione a farlo. Sebbene l'abilitazione degli accessi root non sia in realtà non sicura se eseguita correttamente, non è necessario abilitare gli accessi root perché è così sudo.

Ci sono davvero due domande correlate qui.

  • Perché è male accedere come root per l'uso quotidiano del computer (navigazione web, e-mail, elaborazione testi, giochi, ecc.)?
  • Perché Ubuntu non abilita completamente la disabilitazione degli accessi root e usa sudoe polkit per consentire agli amministratori di eseguire comandi specifici come root?

Perché non eseguire tutto come root, sempre?

La maggior parte delle altre risposte copre questo. Si riduce a:

  1. Se usi i poteri di root per attività che non li richiedono e finisci per fare qualcosa che non volevi fare, potresti cambiare o danneggiare il tuo sistema in un modo che non desideri.
  2. Se si esegue un programma come root quando non hai bisogno, e si finisce per fare qualcosa che non voleva dire che a fare - per esempio, a causa di una vulnerabilità di sicurezza o altro bug - potrebbe cambiare o danni il tuo sistema in un modo che non vuoi.

È vero che anche senza fare le cose come root, puoi causare danni. Ad esempio, puoi eliminare tutti i file nella tua home directory, che di solito include tutti i tuoi documenti, senza correre come root! (Spero che tu abbia dei backup.)

Naturalmente, come root, ci sono altri modi per distruggere accidentalmente quegli stessi dati. Ad esempio, potresti specificare l' of=argomento sbagliato in un ddcomando e scrivere dati grezzi sui tuoi file (il che li rende molto, molto più difficili da recuperare rispetto a se li avessi semplicemente cancellati).

Se sei l'unica persona che utilizza il tuo computer, il danno che puoi fare solo come root potrebbe non essere davvero superiore al danno che puoi fare con i tuoi privilegi utente regolari. Ma questo non è ancora un motivo per espandere il rischio per includere ulteriori modi di rovinare il sistema Ubuntu.

Se l'esecuzione con un account utente non root ti impediva di esercitare il controllo sul tuo computer, ovviamente questo sarebbe un cattivo compromesso. Ma non lo fa - ogni volta che desideri effettivamente eseguire un'azione come root, puoi farlo con sudoe altri metodi .

Perché non rendere possibile il login come root?

L'idea che la capacità di accedere come root sia intrinsecamente insicura è un mito. Alcuni sistemi hanno un account root abilitato per impostazione predefinita; altri sistemi utilizzano sudoper impostazione predefinita e alcuni sono configurati con entrambi.

  • Ad esempio, OpenBSD , che è ampiamente e ragionevolmente considerato il sistema operativo generico più sicuro al mondo, viene fornito con l'account root abilitato per l'accesso locale basato su password.
  • Altri sistemi operativi rispettati che lo fanno includono RHEL , CentOS e Fedora .
  • Debian (da cui deriva Ubuntu ) fa decidere all'utente quale approccio verrà configurato, durante l'installazione del sistema.

Non è oggettivamente sbagliato avere un sistema in cui è abilitato l'account di root, a condizione che

  1. lo usi ancora solo quando è necessario, e
  2. si limita l'accesso ad esso in modo appropriato.

Spesso i principianti chiedono come abilitare l'account root in Ubuntu. Non dovremmo nascondere queste informazioni a loro, ma di solito quando le persone lo chiedono è perché hanno l'impressione sbagliata di dover abilitare l'account root. In realtà, questo non è quasi mai necessario, quindi quando si risponde a tali domande è importante spiegarlo. L'abilitazione dell'account root consente inoltre di diventare facilmente compiacenti ed eseguire azioni come root che non richiedono privilegi di root. Ma questo non significa che abilitare l'account root sia di per sé insicuro.

sudoincoraggia e aiuta gli utenti a eseguire i comandi come root solo quando necessario. Per eseguire un comando come root, digitare sudo, uno spazio e quindi il comando. Questo è molto conveniente e molti utenti di tutti i livelli preferiscono questo approccio.

In breve, non è necessario abilitare gli accessi root perché lo sono sudo. Ma finché lo si utilizza solo per attività amministrative che lo richiedono, è altrettanto sicuro abilitare e accedere come root, purché sia ​​solo in questi modi :

  • A livello locale, da una console virtuale non grafica .
  • Con il sucomando, quando si accede da un altro account.

Tuttavia, se si accede come root in questi modi sorgono notevoli rischi per la sicurezza:

  • Graficamente. Quando accedi graficamente, vengono eseguite molte cose per fornire l'interfaccia grafica e finirai per eseguire ancora più applicazioni come root per utilizzare quell'interfaccia per qualsiasi cosa. Questo va contro il principio di eseguire solo programmi come root che hanno davvero bisogno dei privilegi di root. Alcuni di questi programmi possono contenere bug, inclusi i bug di sicurezza.

    Inoltre, c'è un motivo non di sicurezza per evitarlo. Effettuare l' accesso graficamente come root non è ben supportato, come menziona loevborg , gli sviluppatori di ambienti desktop e di app grafiche spesso non li testano come root. Anche se lo fanno, accedere a un ambiente desktop grafico come root non ottiene test alfa e beta nel mondo reale da parte degli utenti, poiché quasi nessuno lo tenta (per i motivi di sicurezza spiegati sopra).

    Se è necessario eseguire un'applicazione grafica specifica come root, è possibile utilizzaregksudo o sudo -H. Questo esegue molti meno programmi come root rispetto a quando si è effettivamente connessi graficamente con l'account root.

  • A distanza. L' rootaccount in effetti può fare qualsiasi cosa e ha lo stesso nome praticamente su ogni sistema simile a Unix. Accedendo come root tramite ssho altri meccanismi remoti, o anche configurando i servizi remoti per consentirlo , si rende molto più facile per gli intrusi, inclusi script automatici e malware in esecuzione su botnet, ottenere l'accesso attraverso la forza bruta, gli attacchi del dizionario (e possibilmente alcuni bug di sicurezza).

    Probabilmente il rischio non è estremamente elevato se si consentono solo accessi root basati su chiave e non basati su password .

Per impostazione predefinita in Ubuntu, né gli accessi root grafici né gli accessi remoti tramite SSH sono abilitati, anche se si abilita l'accesso come root . Cioè, anche se abiliti il ​​login di root, è ancora abilitato solo in modi ragionevolmente sicuri.

  • Se si esegue un server SSH su Ubuntu e non è stato modificato /etc/sshd/ssh_config, conterrà la riga PermitRootLogin without-password. Ciò disabilita l'accesso root basato su password, ma consente l'accesso basato su chiave. Tuttavia, nessuna chiave è configurata per impostazione predefinita, quindi a meno che tu non ne abbia impostato uno, anche quello non funzionerà. Inoltre, l'accesso root remoto basato su chiave è molto meno grave dell'accesso root remoto basato su password, in parte perché non crea il rischio di forza bruta e attacchi di dizionario.
  • Anche se le impostazioni predefinite dovrebbero proteggerti, penso che sia comunque una buona idea controllare la tua configurazione ssh, se hai intenzione di abilitare l'account root. E se stai eseguendo altri servizi che forniscono l'accesso remoto, come ftp, dovresti anche controllarli.

In conclusione:

  • Fai cose come root solo quando è necessario; sudoti aiuta a farlo, dandoti comunque la piena potenza di root ogni volta che lo desideri.
  • Se capisci come funziona root e i pericoli di un uso eccessivo, abilitare l'account root non è davvero problematico dal punto di vista della sicurezza.
  • Ma se lo capisci, sai anche che quasi certamente non è necessario abilitare l'account di root .

Per ulteriori informazioni su root e sudo, inclusi alcuni vantaggi aggiuntivi di sudocui non ho parlato qui, consiglio vivamente RootSudo nella wiki della guida di Ubuntu.


'Se sei l'unica persona che utilizza il tuo computer, il danno che puoi fare solo come root potrebbe non essere davvero superiore al danno che puoi fare con i tuoi privilegi utente regolari. Ma questa non è ancora una ragione per espandere il tuo rischio 'Per non parlare del fatto che ti prende l'abitudine ... quindi vai su un altro sistema e cosa succede? Lo stesso vale per l'assurda idea di abituare le persone rm -itramite alias shell. Vai in un sistema che non lo possiede e poi cosa? Fare da baby-sitter a un utente da errori come questo non è mai una buona idea se si considera che gli esseri umani sono molto delle abitudini.
Pryftan,

13

L'account di root è disabilitato per impostazione predefinita, il che significa che esiste ma non è utilizzabile (tranne che in modalità di recupero). Ciò significa che un utente malintenzionato è a conoscenza del tuo account di root, ma non può utilizzarlo anche se avesse la password di root. Pertanto, un utente malintenzionato deve indovinare sia un nome utente con privilegi di amministratore, sia la password dell'utente (che è molto più difficile del semplice tentativo di elaborare la password di root) .In XP se è installata la Console di ripristino di emergenza, chiunque ha accesso fisico alla tua casella può avviarsi (RC) - nessuna password richiesta. Come la modalità di recupero in Ubuntu.

In Ubuntu, quando dicono che il root è disabilitato, ciò che realmente si intende è che l'account è bloccato. Un account viene bloccato modificando la password in un valore che non corrisponde a nessun valore crittografato possibile. Questo impedisce efficacemente a chiunque di accedere come root, poiché non ci sarebbe modo di inserire la password. Dato che ci sono ancora momenti in cui è necessario l'accesso root - il kernel Ubuntu è stato modificato per consentire l'accesso root locale solo in modalità utente singolo.

Vedi anche questa pagina


Um. Senza offesa, ma potresti voler leggere il titolo della domanda e poi rileggere i dettagli.
Mussnoon

3
Questo è estremamente utile - e non si riferiscono alla domanda. Si occupa delle implicazioni di sicurezza legate all'abilitazione dell'account, un prerequisito per l'esecuzione come root.
Stefano Palazzo

1
@Stefano Palazzo: Sebbene le informazioni fornite possano essere utili, sinceramente non riesco a vedere in quale parte risieda una risposta a ciò che avevo bisogno di sapere. L'ho letto più volte.
Mussnoon,

Non impedisce alle persone di accedere al root.
Chad,

12

È come armare un bambino con un AK47, mentre può giocare felicemente con la sua pistola paintball. ;)

Voglio dire, è sbagliato perché tu e le tue applicazioni avrete più privilegi di quelli di cui hanno bisogno ed è allora che le cose possono e talvolta vanno male :(


5
un'analogia più intelligente. (^_^)
kit.yang

2
Questa è un'analogia del tutto inappropriata. Un bambino con un AK47 può uccidere se stesso e altre persone. Un utente unix con accesso root può al massimo rendere temporaneamente inutilizzabile il proprio sistema. (È sempre possibile reinstallare il sistema operativo e ripristinare l'operazione).
kbeta,

@kbeta Hai ragione, la mia analogia è un po 'sproporzionata ed esagerata. per favore vai avanti.
omeide,

@kbeta l'analogia è appropriata. il rischio non è un sistema inutilizzabile, ma perdita di dati e privacy. l'utente root può cancellare i dati. usa la tua fantasia per associare l'uccisione e la perdita di dati.
n611x007,

11

Molto bella domanda ... Lasciami rispondere da un punto di vista pratico:

Quando ho iniziato a utilizzare Linux, che è più di 10 anni fa, le principali distribuzioni non pubblicizzavano utilizzando account non root come oggi. Dato che ero abituato a Windows, non vedevo nemmeno il punto di usare un account utente vincolato. In particolare perché dovevo inserire "su" molto spesso - sudo non era poi così popolare. ;-) Quindi ho sempre effettuato l'accesso come root perché avevo molta manutenzione da fare per configurare il mio sistema. Ma indovina un po ', qualsiasi nuovo sistema installato è diventato rapidamente molto instabile.

Un problema concreto, ad esempio: non ho avuto molto spazio sul disco rigido riservato per Linux, quindi mi è capitato un paio di volte di lasciare 0 byte sulla mia partizione. Forse non sono del tutto preciso perché non conosco il meccanismo esatto, ma quando si riempie un disco con un account non root rimangono sempre pochi kilobyte. Ma se ti rimangono davvero 0 byte, il tuo sistema fa strani errori e potresti finire con qualche danno difficile da riparare nel tuo sistema perché c'è un sacco di software di sistema in esecuzione in background ...

Un'altra cosa è: quella divisione tra root e non root mantiene il tuo sistema ben organizzato. Come utente root potresti essere tentato di non installare in modo pulito le tue nuove applicazioni che ti lasciano con un sistema sporco e difficile da mantenere.

Ma la cosa buona: le moderne distribuzioni svolgono la maggior parte dei compiti amministrativi per te, quindi raramente devi armeggiare con le radici del tuo sistema Linux con un account root. Inserire una password di volta in volta è sufficiente, il resto è fatto dagli script del distributore.

Ma dubito che non hai avuto problemi sul tuo sistema Windows con quello se hai usato 95 o 98. (Almeno ho avuto problemi con quello ...) A causa della mancanza di una chiara separazione tra Amministratore e utente normale "tradizionale "Le app di Windows presumono di poter fare qualsiasi cosa, ad esempio installare spyware se ne hanno voglia, anche senza dirtelo. Microsoft ha risolto questo problema quando ha rilasciato Vista. (Implementando efficacemente un meccanismo sudo.) Quindi le persone hanno dialoghi molto fastidiosi che dicono "Non puoi farlo". Per alcuni software non compatibili con Vista hai bisogno di alcuni hack sporchi per installarlo, anche come amministratore ...


"Forse non sono del tutto preciso perché non conosco il meccanismo esatto, ma quando si riempie un disco con un account non root rimangono sempre pochi kilobyte." Forse ti riferisci alla directory lost + found? In tal caso, come amministratore puoi specificare quanto riservare. Voglio dire che il valore predefinito tipico è del 5%, ma potrei sbagliarmi e può essere modificato. È abbastanza utile anche se raramente necessario. Apparentemente ce n'è di più qui (lo ricordo dai miei anni di utilizzo): unix.stackexchange.com/questions/18154/…
Pryftan,

Al momento non è limitato ai filesystem ext: unix.stackexchange.com/questions/7950/…
Phil

Sì. Lo sapevo :) Ma grazie per averlo aggiunto.
Pryftan,

10

Ci sono molti aspetti dietro questo approccio. Alcuni di loro sono:

  • Il root è tutto potente.
  • Nei sistemi Unix e simili a Unix, i privilegi di amministrazione del sistema sono tutti o niente. Un utente ha o meno l'accesso alla radice e l'accesso alla radice implica il controllo completo di una macchina. Se la macchina in questione viene utilizzata da più di una persona o se root ha accesso ad altri sistemi o file utente, è più accettabile assegnare ad alcuni utenti privilegi di root parziali.

  • L'utente root può nascondere tutte le sue azioni.
  • sudo registra ogni comando eseguito su sudo. La registrazione di ciò che viene fatto con sudo ci aiuta a diagnosticare problemi con singoli sistemi / processi e problemi di configurazione generale, oltre a aiutarci a identificare i miglioramenti necessari.

  • La password di root ti dà accesso a qualsiasi comando su un sistema.
  • Tramite il suo file di configurazione, sudo può fornire all'utente un accesso root per un particolare set di comandi. Questo evita anche l'effetto "tutto o niente", permettendoci di dare ai singoli utenti un maggiore controllo sulle loro macchine e di aiutarci a risolvere i problemi più comuni.

    ecco un buon articolo: http://cf.stanford.edu/policy/root


    Ma quando hai il sudo completo, puoi sudo su e nascondere le tue azioni.
    Wilhelm Erasmus,

    8
    rm /*
    

    Diciamo che hai ripulito un'area amministrativa. Ti stanchi della password, quindi tu sudo su. Ti distraggerai solo per un secondo e ti dimentichi del cd /. Allora tu rm *. L'ho fatto. Puoi riavere tutto, ma è un PITA. Oh, ed è anche disceso /media!


    10
    Ci lamentiamo sempre del fatto che il nostro PC sia troppo lento, ma è come se fossero ottimizzati per eseguire un rm del genere il più velocemente possibile.
    jippie,

    1
    @jippie Perché RM distrugge semplicemente il collegamento inode al file. Non ci vuole molto per eliminare un collegamento e contrassegnare uno spazio come "libero".
    Kaz Wolfe,

    @jippie, dovrebbe avere un conto alla rovescia di 10 secondi
    HopefullyHelpful

    7

    Perché non avere il login root?

    Sebbene sia possibile creare una password per l'account superutente che consenta di accedere come root, vale la pena ricordare che questo non è il modo "Ubuntu" di fare le cose. Ubuntu ha specificamente scelto di non fornire un login e una password di default per una ragione. Invece, verrà utilizzata un'installazione predefinita di Ubuntu sudo.

    Il Sudo è un'alternativa al fornire alle persone una password di root per eseguire compiti da superutente. In un'installazione predefinita di Ubuntu, alla persona che ha installato il sistema operativo viene concessa l'autorizzazione "sudo" per impostazione predefinita.

    Chiunque abbia l'autorizzazione "sudo" può eseguire qualcosa "come superutente" anticipando il sudoproprio comando. Ad esempio, per essere eseguito apt-get dist-upgradecome superutente, è possibile utilizzare:

    sudo apt-get dist-upgrade
    

    Vantaggi dell'approccio sudo

    • Con sudo, puoi scegliere in anticipo quali utenti hanno accesso a sudo. Non è necessario che ricordino una password di root, poiché usano la propria password.

    • Se hai più utenti, puoi revocare l'accesso al proprio superutente semplicemente rimuovendo la loro autorizzazione sudo, senza dover cambiare la password di root e avvisare tutti di una nuova password.

    • Puoi anche scegliere quali comandi è consentito ad un utente usando sudo e quali comandi sono proibiti per quell'utente.

    • Infine, in caso di violazione della sicurezza, in alcuni casi può lasciare una traccia di controllo migliore che mostra quale account utente è stato compromesso.

    Sudo semplifica l'esecuzione di un singolo comando con privilegi di superutente. Con un login root, rimani permanentemente in una shell superutente che deve essere chiusa usando exito logout. Questo può portare le persone a rimanere nella shell del superutente più a lungo del necessario solo perché è più conveniente che disconnettersi e riconnettersi più tardi.

    Con sudo, hai ancora la possibilità di aprire una shell superutente permanente (interattiva) con il comando:

    sudo su
    

    ... e questo può ancora essere fatto senza alcuna password di root, perché sudodà i privilegi di superutente al sucomando.

    E allo stesso modo, invece che su -per una shell di login puoi usare sudo su -o anche sudo -i.

    Tuttavia, quando lo fai, devi solo essere consapevole che stai agendo come un superutente per ogni comando. È un buon principio di sicurezza non rimanere come superutente più a lungo del necessario, solo per ridurre la possibilità di causare accidentalmente alcuni danni al sistema (senza di essa, è possibile danneggiare solo i file di proprietà dell'utente).

    Giusto per chiarire, è possibile , se si sceglie, darà l'utente root di una password che consente login come root, se specificatamente vuole fare le cose in questo modo, invece. Volevo solo farti conoscere la convenzione di Ubuntu di preferire sudoinvece e provare a spiegare alcuni dei ragionamenti per cui Ubuntu preferisce tale approccio come predefinito.

    Perché non consentire l'accesso root su SSH?

    Anche se il vostro utente root non dispone di una password che vi permetterà di accedere come root, è ancora una buona pratica di sicurezza per disabilitare il login root diretto dall'esterno, come ad esempio in SSH. È ragionevole che gli utenti debbano su -o sudodopo aver effettuato l'accesso iniziale.

    I potenziali vantaggi sono principalmente legati alla sicurezza:

    • Riduce il vettore di attacco rimuovendo la possibilità di forzare in remoto la password di root. È tipico che un server su Internet sia costantemente sbarrato dai tentativi di forzare la password di root tramite SSH.

    • Si crea una migliore traccia di controllo in modo che anche in caso di violazione, se l'attaccante fa ottenere privilegi di superutente tardi, è possibile vedere i cui account utente è stato utilizzato per ottenere l'accesso.


    6

    Quando si accede come root, è possibile che applicazioni, script o comandi della riga di comando accedano a parti sensibili del software che possono danneggiare il sistema. Questo può essere il risultato di inesperienza da parte dell'utente o del programmatore o a causa di codice nascosto malico.


    5

    È semplicemente troppo complicato quando si opera come root. Puoi bloccare l'intero sistema in un solo comando ...


    5

    Posso aggiungere che c'è una differenza tra Amministratore in Windows e root in Unix. L'amministratore ha ancora alcune restrizioni nei sistemi, dove root non ha alcuna restrizione. L'analogo corretto di root in Windows è l' utente di sistema .

    La cosa brutta da usare PC in root / Sistema è che puoi distruggere accidentalmente qualsiasi cosa senza alcun avviso dal sistema operativo.


    3

    Ragioni contro l'utilizzo di root:

    • Potrebbe distruggere accidentalmente i file di sistema
    • Potrebbe avere un'infezione
    • Non registra le azioni

    Ragioni per l'utilizzo di root:

    • Accesso a tutto, senza password di battitura
    • GUI, non utilizzare terminali per la gestione di file / directory di sistema

    Mi sembra che un account non root potrebbe ancora cadere vittima di quei motivi contro l'utilizzo di root, il massimo che aggiunge è una conferma per le tue azioni. Penso che fintanto che sai cosa stai facendo, sei perfettamente al sicuro usando root. Ecco, l'ho detto.


    Sebbene tecnicamente esiste un modo per registrare le azioni, incluso ogni singolo comando. Questo vale per ogni utente. Vedi la contabilità di processo, ad esempio qui: linuxjournal.com/article/6144 Ed è veramente sicuro solo se devi essere root; altrimenti non è del tutto sicuro (exploit, ecc.) anche se il comando dovrebbe essere sicuro.
    Pryftan,

    3

    Se le applicazioni vengono eseguite come root, non vi è alcuna garanzia che nessuna di esse venga eseguita

    rm -rf /
    

    (Questo è un esempio di un comando che non deve essere eseguito.)


    @StefanoPalazzo Questo post non ha senso con il comando rimosso, quindi ho ripristinato la tua modifica - potresti anche aver eliminato il post. Si noti che, contrariamente al malinteso diffuso, questo comando, come scritto, in realtà non cancella i file quando viene eseguito su un sistema Ubuntu, ma è simile ai comandi che lo fanno. Quindi, se tu fossi preoccupato, qualcuno potrebbe copiare il comando senza scrupoli e rovinare il suo sistema, non è probabile. Vedere la documentazione delle opzioni --preserve-roote --no-preserve-rootin man rmper i dettagli.
    Eliah Kagan,

    Solaris considera questo comando come un comportamento indefinito secondo un'ampia interpretazione POSIX (e Bryan Cantrill) e genera un errore
    Jeremy Hajek,

    3

    Dato un utente informato e attento, non sono sicuro che esista una risposta giusta . Non avevo visto questa risposta, quindi ho pensato di entrare.

    Quello che non mi piace sono le modifiche involontarie delle autorizzazioni sui sistemi multiutente che mi servono in chmodseguito. Risolvere il problema con chmod dopo tutto è molto più irritante che non necessita di sudo, ma dipende da ciò che ho pianificato.


    3

    Non vi è alcun pericolo nel logging come root se usato con attenzione.

    Anche se penso che disabilitare la radice sia una soluzione preferibile, perché l'aggressore non potrebbe forzarlo.

    Una soluzione è quella di creare un utente nel gruppo sudo con un nome oscuro, come gamere usare sudo per eseguire attività amministrative.

    Quindi l'attaccante non deve solo indovinare la password di quell'utente amministrativo ma anche il suo nome di accesso. Il che non è ovvio se l'utente che utilizza sudo ha un nome di accesso simile kittyo gamersimile.


    2

    Il software si basa su librerie condivise, dipendenze, file di configurazione, ecc. Il
    più delle volte, un singolo clic in un'applicazione richiama una "reazione a catena" di più modifiche, non solo dove pensi che sarebbe probabilmente.
    Quando queste modifiche stanno per influenzare le impostazioni critiche del sistema, è bene che tu, come utente, lo sappia.
    Ecco perché l'accesso alla radice è un buon modello di sicurezza:
    se sta per succedere qualcosa di cruciale al tuo sistema, ti verrà chiesto quando ti verrà chiesto di elevare i privilegi.


    1

    È un problema a due facce con più di una risposta.

    Per un po 'di realtà, controlla le risposte sempre uguali ma terribili a questo:

    desktop installations:

    • usa il tuo utente e sudo se necessario, altrimenti un vettore di attacco usato con successo perché non sai davvero cosa stai facendo e il tuo sistema è compromesso
    • nelle aziende più grandi è probabile che potresti non avere nemmeno i privilegi di root sulla tua workstation, anche se sei un amministratore, a seconda della quantità di cappelli di latta presenti.

    server installations:

    • c'è una grande differenza tra rendere legittime le tue brevi sessioni di lavoro come root (a condizione che tu abbia accessi senza password, una corretta gestione delle chiavi ssh per tutti i server - e fail2ban configurato per tutti gli accessi con password mentre ci sei comunque) e avere ogni demone / servizio in esecuzione con il proprio utente (che è un must) - la maggior parte delle persone sembra non rendersi conto della differenza
    • per divertimento: prova a usare i tuoi strumenti di gestione della configurazione controllati dalla versione (ansible / puppet / salt / qualunque cosa con i file da un server git) solo senza accesso root. (hai una qualche forma di AAA in atto per questi sistemi speciali, così come per i tuoi sistemi di monitoraggio e backup, vero?)
    • inoltre: il default non rm -rf /funziona nella maggior parte delle distribuzioni tradizionali IIRC
    • qualsiasi posto di lavoro serio ha un host jumphost / bastion per l'accesso alla flotta di server che registra comunque qualsiasi cosa tu faccia, che probabilmente è ulteriormente protetta da 2FA
    • se hai sudo e nessun jumphost puoi sistemare i log degli host per finire come vuoi comunque, se non sono sottoposti a mirroring in tempo reale, cioè.
    • quando anche i registri ssh vengono "puliti", non si può nemmeno dimostrare di essere stati sull'host, se non è in atto un ulteriore sistema di monitoraggio della rete

    Per qualsiasi dimensione aziendale (leggi: molto probabilmente SOHO con un IP statico) tra questi due estremi che mancano di misure di monitoraggio / backup / automazione / registrazione decenti, può essere utile imporre l'uso di sudo sui server. (Che viene eluso dalle persone che fanno al più sudo su -presto dopo la connessione, lasciando che tutte le tue intenzioni di registrazione di ciò che è accaduto vadano sprecate anche senza intenti maliziosi non appena più di un utente root ha effettuato l'accesso. Buona fortuna cambiando questo attraverso procedure forzate e trattando le persone con draconiano misure per non aver obbedito alle regole. La vita trova sempre un modo.)

    Ma se non hai almeno fail2ban per proteggere i tuoi accessi alle password (se presenti, specialmente sui sistemi con connessione a Internet), tieni a mente la corretta gestione delle password (strumenti di gestione delle password, politiche di conservazione, nessuna password principale, gestendole sul dipendente fluttuazioni ...) e avere una qualche forma di corretta gestione degli aggiornamenti per la flotta di server in modo che tutti i server vengano sistemati regolarmente, probabilmente un giorno verrai hackerato dall'interno o dall'esterno.

    E aver sempre usato sudoreligiosamente e averne applicato l'uso tra tutte le persone non cambierà la tua probabilità di diventare molto proprietario in quel caso.


    Finalmente una risposta reale e differenziata, invece dei soliti mantra 'non farlo mai'. +1 e grazie per questo.
    Andreas H.

    0

    In definitiva non c'è nulla di male nel correre come root. È solo un gruppo di persone paranoiche che pensano che sia impossibile reinstallare un sistema operativo. L'argomento "Qualcuno potrebbe compromettere un programma ...", e allora? se lo fanno, allora potrebbero già digitare la tua password o semplicemente visualizzare una richiesta di password di root e avere loro la password. Distruggi il tuo sistema perché selezioni tutto in / ed elimini? vabbè, esci dall'installer e reinstalla. Ci vogliono meno di 20 minuti, prendi un caffè e rilassati. La radice va bene, ho eseguito il root da quando posso ricordare e sai cosa fa? Rende l'installazione di pacchetti meno un mal di testa. Non è necessario inserire la password di root ogni 5 minuti come si fa normalmente. Non si verificano problemi nel tentativo di salvare / modificare i file di configurazione del sistema perché solo permessi di root. È semplicemente molto più semplice e meglio eseguire come root.

    Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
    Licensed under cc by-sa 3.0 with attribution required.