Domanda Perché è male accedere come root?


Ho spesso trovato post su forum o altri siti web in cui si vedono persone che scherzano in questo modo sull'esecuzione / login come root come se fosse qualcosa di orribile e tutti dovrebbe 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 eseguito come root quando ho provato Linux per la prima volta anni fa (Redhat e Mandrake) e non ricordo di aver incontrato problemi a causa di ciò.

Ci sono in realtà alcune distro che hanno uno sfondo rosso acceso con segni di allarme dappertutto come sfondo per l'utente root (SuSe?). Uso ancora l'account "Administrator" per l'uso regolare sulla mia installazione di Windows e non ho mai avuto problemi nemmeno lì.


179
2017-12-04 17:00


origine


Penso che non ci siano problemi nell'esecuzione di un programma come root. Proprio così, potresti danneggiare il nucleo del tuo sistema operativo (anche i sudoers possono farlo) se non sei molto saggio in Linux. a parte quello non faccio niente, c'è qualche problema. Ma questo è solo il mio punto di vista. - Gaurav Butola
Domanda correlata Qui. - loevborg
La difficoltà di entrare in modalità root varia tra distro. Personalmente sono infastidito da come Fedora non ti permette di "sudo" fin da subito. OpenSUSE e Ubunto hanno già sudo preconfigurato ... e quindi se scegli la giusta distribuzione, puoi minimizzare i tuoi fastidi quando non riesci ad accedere ai file. - djangofan
@GauravButola anche se sei un esperto, è ancora una cattiva idea nel caso in cui un'applicazione venga compromessa. - strugee
@DaboRoss l'OP commenta 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 tutto ciò che vuoi, ma chiede per l'autorizzazione prima, ad esempio l'installazione di nuovo software. Quindi probabilmente l'equivalente di usare "amministratore" utente in Windows tradotto in Ubuntu sarebbe quello di eseguire l'utente principale con sudo configurato in modo che non chieda il pass --- eseguendo direttamente come root è molto più pericoloso. - Rmano


risposte:


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

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


145
2017-12-04 17:08



... e ti protegge dalla trasformazione di errori banali in disastri. Sono un utente Unix / adm dal 1990, ma ancora posso sicuramente inserire uno spazio nel posto esatto sbagliato facendo a rm -rf tmp/tests/*... - Rmano
1.) La maggior parte delle persone considererà la propria home directory più importante delle dir root, dato che la prima non può essere reinstallata. Quindi non vedo il tuo punto. 2.) In termini di sicurezza, hai ragione. Ma venendo da Windows (dove c'è sempre più malware in giro), dove ho usato l'account admin da sempre (come fanno molti), ho difficoltà a considerare questo un vero pericolo. Sono troppo pigro per scrivere sudoe la mia password per ogni secondo comando in Linux. Gli utenti di Linux non dovrebbero essere pigri ????? - Blauhirn
disaccordo -_-: ~: | - Artful Aardvark
@LazyPower grazie per aver modificato la tua risposta, ma ora non lo capisco più. Per modificare la mia cartella Ubuntu ~ privata, i programmi non hanno bisogno di diritti sudo. Rhythmbox PUÒ cancella la mia intera cartella $ HOME / Musica! E questo è tutto ciò che mi interessa! Come è correlato alle autorizzazioni di root? - Blauhirn
È una bella call @Blauhirn. Ho appena inviato una modifica di follow-up per riflettere che non vogliamo che venga eliminata la totalità di / usr. In termini di protezione delle tue cartelle $ HOME, nulla come un buon backup può aiutarti. Non penso che questo particolare scenario sia correlato alla sicurezza tanto quanto alle buone pratiche. Grazie ancora per il callout. - lazyPower


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é i possibili virus ora hanno accesso ovunque. Sì, ci sono solo pochi virus per Ubuntu / Linux, ma è anche a causa di una buona sicurezza e di un utente non privilegiato di default.
  2. Non si tratta solo di virus: piccoli bug in un'applicazione potrebbero cancellare alcuni file di sistema o ...
  3. Quando sei registrato come root, puoi fare tutto - il sistema non chiederà! Vuoi formattare questo disco? Ok, basta un clic ed è fatto, perché sei root e sai cosa stai facendo ...

73
2017-12-04 17:10



I file di dati, che sono tutti di proprietà del mio account utente, lo sono molto di piu prezioso per me rispetto ai file di sistema. Tutti gli esempi sopra riportati sono ancora problemi quando si accede come utente, tranne per il fatto che i file di sistema facilmente sostituibili sono protetti. - kbeta
@kbeta stai assumendo che tu stia girando su un computer in cui gli unici oggetti di valore sono i tuoi file di dati e di sistema. In realtà, Linux è spesso utilizzato in un sistema in cui ci sono molti utenti che utilizzano un sistema contemporaneamente. In questo caso la stabilità del sistema (e quindi i file di sistema) è molto più preziosa e anche altri file utente sono importanti. - Eric Pauley
@kbeta Giusto abbastanza ma una configurazione del sistema danneggiata può anche rappresentare un rischio per i tuoi dati ... e ovviamente avere dei backup sarebbe una buona idea se il tuo sistema sia attualmente o meno a rischio. Il backup corrente di lavoro con un piano di ripristino di emergenza sarebbe ancora meglio. - Pryftan


L'esecuzione come root non è buona perché:

  1. Stupidità: Niente ti impedisce di fare qualcosa di stupido. Se si tenta di cambiare il sistema in ogni caso che potrebbe essere dannoso, è necessario eseguire sudo, il che garantisce quasi una pausa mentre si inserisce la password per rendersi conto che si sta per effettuare una modifica grande / costosa.
  2. Sicurezza:  È già stato menzionato alcune volte in questa domanda, ma fondamentalmente è la stessa cosa, più difficile da hackerare se non conosci l'account di accesso dell'utente amministratore. root significa che hai già metà del set di lavoro delle credenziali di amministratore.
  3. Non ne hai davvero bisogno: Se hai bisogno di eseguire diversi comandi come root e sei infastidito dal dover inserire la tua password più volte quando sudo è scaduto tutto ciò che devi fare è sudo -i e ora sei root. Vuoi eseguire alcuni comandi usando 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 dal fare qualcosa di stupido o di risolvere 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 cerca online per cambiarlo, questo renderà più difficile per chiunque abbia accesso fisico alla tua casella di essere in grado di fare del male.

Il motivo per cui non sei riuscito a trovare informazioni sul perché è sbagliato è perché, beh, c'è troppa informazione in internet :) e che molte persone che hanno utilizzato Linux per molto tempo pensano come te. Questo modo di pensare all'account di root è abbastanza nuovo (forse un decennio?) E molte persone si arrabbiano ancora di dover usare sudo. Soprattutto se stanno lavorando su un server il che significa che sono andati con l'intenzione di apportare modifiche al sistema. Probabilmente a causa delle precedenti esperienze negative e degli standard di sicurezza, la maggior parte degli amministratori di sistema conosce meglio, ma a loro non piace ancora :).


45
2017-12-04 18:43



'un decennio forse?' Molto più a lungo anche da quando hai scritto questo. Anche senza sudo non vi è per non menzionare per es. il gruppo di ruote (per esempio). La separazione dei privilegi è sempre importante e sempre è stata importante e sarà sempre importante. Otoh non molte persone hanno usato il sistema operativo basato su Unix che molti anni fa e molti di quelli che sono abituati a essere sempre un amministratore. - Pryftan


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 utilizzare il root account. Infatti, Ubuntu viene fornito con accesso root disabilitato. Tutte le modifiche che richiedono i privilegi di superutente sono fatte attraverso sudo e i suoi affini grafici gksudo e kdesudo. Dato che è facile impostare a root password, tuttavia, perché la gente non lo fa?

Una ragione è che ti dà un ulteriore livello di sicurezza. Se si esegue un programma come root e 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 tuo kernel. In pratica, però, un attacco può causare una grande quantità di danni anche senza privilegi di superutente. Dopo tutto, tutti i dati dell'utente, inclusi i documenti e le password memorizzate, sono accessibili senza accesso root.

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

Inoltre, la maggior parte delle applicazioni X11 (user-facing) oggi è basata sul presupposto che vengano eseguite come normali account utente e senza diritti di amministratore. Pertanto alcuni programmi potrebbero comportarsi male se eseguiti come root.

Su un sistema multiutente con accesso solo per shell non grafico, molti di questi motivi non si applicano. Tuttavia, Ubuntu è ancora ragionevolmente predefinito su inaccessibile root account. Per prima cosa, c'è una vera differenza tra l'accesso a un account utente (con sudo diritti) attraverso un buco di sicurezza e l'accesso a root, come nel primo caso che interrompe gli altri utenti richiederà la corsa sudo e richiederà comunque la password dell'account come ulteriore passo di sicurezza. Per un altro, è utile eseguire molte attività amministrative da un account utente e solo invocando sudoquando i privilegi di superutente sono assolutamente necessari. Pertanto, quando si installa un programma dal sorgente, è consigliabile creare il sorgente - in esecuzione configure e make - all'interno della directory dell'utente e solo usando sudo make install nella fase finale. Di nuovo, ciò rende più difficile sparare a se stessi (e agli altri utenti del sistema multiutente) nel piede, e diminuisce la probabilità che gli script di build causino il caos nel sistema. Quindi anche su un server è un buon consiglio attenersi a quello di Ubuntu amministrazione su sudo.


36
2017-12-04 17:24



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 il gioco è fatto. Il software di sistema Linux può essere reinstallato se cancellato, perché dovrei preoccuparmi della perdita di dati in tali directory? D'altra parte, la perdita di dati in ~ è cattivo. E sudo non mi protegge da quello - Blauhirn
Un'altra buona pratica è quella di avere dati importanti supportati. Se cancelli la home directory, puoi ancora eseguire l'avvio e copiare semplicemente i file dal backup. Oppure, supponiamo 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 ancora avviare il sistema e fare il check-in per il tuo volo o scoprire quale bus prendere. - Richlv
@Blauhirn Backup. E c'è una possibilità di recupero anche se sembra triste. - Pryftan


Una ragione per non eseguire come root che non è stata (finora) identificata da altre risposte è la tracciabilità. Probabilmente conta meno su macchine che sono principalmente macchine a utente singolo (il tuo desktop o laptop), ma su macchine server, se qualcuno è loggato come root, non sai chi dare la colpa per le azioni intraprese. Pertanto, la maggior parte delle organizzazioni professionali con più sistemi e più amministratori di cui hanno bisogno root i privilegi richiedono che le persone effettuino l'accesso utilizzando il proprio ID utente (e password), quindi utilizzano sudo o programmi simili con cui operare root privilegi quando necessario.

In caso contrario, i motivi principali per cui non si esegue come root sono:

  • Ridurre al minimo il rischio di danni derivanti da incidenti. Se corri rm -fr / home/me/my-subdir come root, quindi hai eliminato drasticamente tutto ciò che importa dalla tua macchina a causa di quello spazio dopo la (prima) barra - perché la roba che va prima è quella che è stata aggiunta per prima - piccole cose come il kernel, la /bin e il /etc directory. Unix si arrabbia se li perdi.

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

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

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


31
2017-12-04 23:10



Non si tratta di incolpare qualcuno, si tratta di essere in grado di capire perché qualcuno ha fatto un cambiamento. - jippie
@jippie: intendo "colpa" nello stesso modo in cui un VCS tiene traccia di chi ha fatto ciò in modo che alla persona corretta sia attribuita la responsabilità della modifica, nel bene o nel male, e uno dei nomi per il comando che esegue tale tracciamento è "colpa". Ti dà una persona con cui parlare per scoprire perché è successo qualcosa. Non è sempre "colpa" (anche se in modo deprimente spesso, la ragione per cui bisogna saperlo è perché qualcosa non funziona come previsto e c'è bisogno di sapere perché no). Quindi, si tratta di responsabilità e tracciabilità, piuttosto che per colpa della persona per quello che hanno fatto. - Jonathan Leffler
Su Ubuntu, comandi come rm -fr / home/me/my-subdir non tentare in realtà di cancellare in modo ricorsivo /, perché / è trattato appositamente per proteggersi da tali errori. Vedi la documentazione del --preserve-root e --no-preserve-root opzioni in man rm per dettagli. Ma il principio è corretto: errori di battitura a carattere singolo fare esistono che comportano rm cancellando tutto Ad esempio, se intendi rimuovere tutto nella directory corrente eseguendo rm -r *, ma accidentalmente metti un / prima *sarebbe male - Eliah Kagan
@EliahKagan Ma se tu dovessi fare ... chown -R nobody:nobody ../ da dire / etc ti proteggerà? Se lo facessi su / etc ti causerebbe un mondo di dolore. Allo stesso modo è .* quando si esegue ricorsivamente un comando. - Pryftan


TL; DR: Fai le cose come root solo quando devi. sudo rende questo abbastanza facile. Se abiliti gli accessi root, puoi comunque seguire questa regola, devi solo fare attenzione a farlo. Sebbene abilitare gli accessi root non sia effettivamente sicuro se eseguito correttamente, non è necessario abilitare i login di root perché lo hai sudo.


20
2018-05-03 17:12



"Se sei l'unica persona che usa il tuo computer, il danno che puoi fare solo come root potrebbe non essere più alto del danno che puoi fare con i tuoi normali privilegi di utente. Ma questo non è ancora un motivo per espandere il tuo rischio "Per non parlare del fatto che ti mette l'abitudine ... allora vai ad un altro sistema e cosa succede? Lo stesso con l'idea assurda di far abituare la gente rm -i per mezzo di alias di shell. Vai ad un sistema che non ha quello e poi cosa? Fare da baby-sitter a un utente da errori come questo non è mai una buona idea se si considera che gli umani sono creature molto abitudinarie. - Pryftan


Account root è disabilitato di default - significa che esiste ma non è utilizzabile (tranne in modalità di ripristino). Ciò significa che un utente malintenzionato è a conoscenza del proprio account di root, ma non è in grado di utilizzarlo anche se ha la password di root. Pertanto, un utente malintenzionato deve indovinare sia un nome utente che ha i 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, chiunque l'accesso fisico alla tua casella può avviarsi (RC) - nessuna password richiesta. Come la modalità di recupero in Ubuntu.

In Ubuntu, quando dicono che la root è disabilitata, ciò che si intende in realtà è che l'account è bloccato. Un account è bloccato modificando la password su un valore che non corrisponde a nessun valore crittografato possibile. Questo impedisce efficacemente a chiunque di accedere come root - dal momento che non ci sarebbe alcun modo possibile di inserire la password. Dato che ci sono ancora dei tempi in cui è necessario l'accesso root, il kernel di Ubuntu è stato modificato per consentire il login locale root solo in modalità utente singolo.

Vedi anche questo pagina


13
2017-12-04 17:18



Um. Senza offesa ma potresti voler leggere il titolo della domanda e poi leggere di nuovo i dettagli. - Mussnoon
Questo è estremamente utile - e così via fa riguardare la domanda Si occupa delle implicazioni sulla sicurezza di abilitare l'account, un prerequisito per l'esecuzione come root. - Stefano Palazzo♦
@Stefano Palazzo: Mentre le informazioni fornite possono essere utili, sinceramente non riesco a vedere in quale parte si trova una risposta a ciò che dovevo sapere. L'ho letto più volte. - Mussnoon
Non impedisce alle persone di accedere alla root. - Chad


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

Intendo dire che è sbagliato perché tu e le tue applicazioni avrete più privilegi di cui hanno bisogno e che è quando le cose può e a volte lo farà sbagliare :(


12
2017-12-05 01:33



un'analogia più intelligente. (^_^) - kit.yang
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. (Si può sempre reinstallare l'os e ripristinare l'operazione). - kbeta
@kbeta Hai ragione, la mia analogia è un po 'sproporzionata ed esagerata. per favore vai avanti - omeid
@kbeta l'analogia è appropriata. il rischio non è un sistema inutilizzabile, ma perdita di dati e privacy. l'utente root può cancellare i dati. per favore usa la tua fantasia per associare l'uccisione e la perdita di dati. - n611x007


Bellissima domanda ... Lasciatemi rispondere da un punto di vista pratico:

Quando ho iniziato ad usare Linux, che è più di 10 anni fa, le principali distribuzioni non pubblicizzavano con account non-root quanto oggi. Poiché ero abituato a Windows, non vedevo nemmeno un punto nell'utilizzo di un account utente vincolato. In particolare perché dovevo inserire "su" molto spesso - sudo non era poi così popolare. ;-) Così ho sempre effettuato il login come root perché avevo un sacco di manutenzione da fare per avere il mio sistema ben configurato. Ma indovina un po ', qualsiasi nuovo sistema installato è diventato rapidamente molto instabile.

Un problema concreto, ad esempio: non ho avuto tanto spazio su harddisk riservato per Linux, così mi è capitato alcune volte di avere a disposizione 0 byte sulla mia partizione. Forse non sono completamente preciso perché non conosco il meccanismo esatto, ma quando si riempie un disco con un account non-root ci sono sempre pochi kilobyte rimasti. Ma se hai veramente a disposizione 0 byte, il tuo sistema fa strani errori e potresti finire con qualche danno difficile da sistemare 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 distribuzioni moderne fanno la maggior parte dei compiti di amministrazione per te, quindi di rado devi gettare nelle viscere del tuo sistema Linux con un account di root. L'immissione di una password di volta in volta è sufficiente, il resto viene eseguito dagli script del distributore.

Ma dubito che tu non abbia 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 netta separazione tra amministratore e utente regolare "tradizionale" "Le app di Windows presumono che possano fare qualsiasi cosa, ad es installare spyware se ne hanno voglia, anche senza dirlo. Microsoft si è impegnata in questo problema durante il rilascio di Vista. (Implementando in modo efficace un meccanismo sudo.) Quindi le persone hanno dei dialoghi molto fastidiosi che dicono "Non puoi farlo". Per alcuni software non compatibili con Vista è necessario installare alcuni hack sporchi, anche come amministratore ...


11
2017-12-04 20:02



'Forse non sono completamente preciso perché non conosco il meccanismo esatto, ma quando si riempie un disco con un account non-root ci sono sempre pochi kilobyte rimasti.' Forse ti riferisci alla directory lost + found? Se è così puoi come amministratore specificare quanto prenotare. Voglio dire che il default tipico è del 5% ma potrei sbagliarmi e può essere cambiato. È abbastanza utile anche se raramente necessario. Apparentemente c'è dell'altro qui (lo ricordo dai miei anni di utilizzo): unix.stackexchange.com/questions/18154/... - Pryftan
Approssimativamente non è limitato all'estensione dei filesystem: unix.stackexchange.com/questions/7950/... - Philip
Sì. Lo sapevo :) Ma grazie per averlo aggiunto. - Pryftan


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

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

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

  • La password di root consente di accedere a qualsiasi comando su un sistema.
  • Tramite il suo file di configurazione, sudo può fornire un accesso root utente per un particolare set di comandi. Ciò evita anche l'effetto "tutto o niente", permettendoci di dare ai singoli utenti un maggiore controllo sulle loro macchine e di risolvere autonomamente i problemi.

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


    10
    2017-12-18 13:52



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


    rm /*
    

    Diciamo che stai pulendo un'area amministrativa. Sei stanco della password, quindi tu sudo su. Ti distrai solo per un secondo e ti dimentichi di cd /. Allora lei rm *. L'ho fatto. Puoi riprenderlo tutto, ma è un PITA. Oh, e è disceso in /media pure!


    8
    2018-02-07 04:30



    Ci lamentiamo sempre del fatto che i nostri PC sono troppo lenti, ma è come se fossero ottimizzati per eseguire un sistema come quello il più veloce possibile. - jippie
    @jippie Perché RM distrugge solo il link inode al file. Non richiede molto tempo per eliminare un collegamento e contrassegnare uno spazio come "libero". - Kaz Wolfe
    @jippie, dovrebbe avere una build in conto alla rovescia di 10 secondi - HopefullyHelpful