Perché non ho una password per "su"? Problemi con "sudo"


34

Ho installato Ubuntu usando la GUI, dandomi una password e tutto il resto. Non ricordo in modo complesso il processo. Tuttavia, ciò che mi preoccupa è che non conosco la seguente password:

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

Non so proprio cosa fare. Non sono nei guai, ma voglio solo sapere cosa sta succedendo qui. Posso anche chiudermi fuori dalle directory:

starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine> 
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

Sono solo un po 'confuso. Come posso chiudermi in questo modo? Penso che sudosia il comando chiave qui. Ma sto rendendo il foobsfile il più aperto possibile tramite il chmod, quindi perché mi blocca?


6
Non dovresti quasi mai farlo chmod -R 777 whatever, a meno che tu non voglia causare un enorme rischio per la sicurezza.

1
@BroSlow Grazie per la parte superiore. Al di fuori di questa domanda, ma come impostare i privilegi di scrittura in lettura su una directory in modo sicuro? 666?
Starkers,

1
Decisamente migliore, ma dipende da cosa stai cercando di fare. ad esempio, hai davvero bisogno che tutti gli utenti abbiano accesso r / w a tutto. Altrimenti, potresti fare qualcosa come 644 (leggi solo per tutti tranne te). E in generale, starei molto attento quando faccio ricorsivo chmodche sta cambiando solo i file che intendevi.

1
@broslow Sei alto? 666 è 1) ancora scrivibile dal mondo e quindi lo stesso grado di rischio per la sicurezza, e 2) rimuove il bit eseguibile, il che significa che non sarebbe più in grado di accedere a quella directory.
Shadur,

@Starkers Il vero problema di sicurezza che sto vedendo qui è che per qualche motivo folle /var/lib/sudoè impostato su scrivibile in tutto il mondo. Questo non dovrebbe accadere e dovresti provare a scoprire perché.
Shadur,

Risposte:


49

Per impostazione predefinita, l' rootaccount superuser ( ) è disabilitato e non ha alcuna password. Puoi crearne uno eseguendo:

$ sudo passwd root

Sarai quindi in grado di accedere come root eseguendo suquesta password.

Per quanto riguarda chmod, il comando corretto sarebbe:

$ chmod 777 -R foobs

Puoi anche usare:

$ sudo -i

per accedere come root usando la tua password (senza creare una password di root come descritto sopra).


4
@Oli Forse puoi modificare la tua domanda da aggiungere sudo su. Questo dà anche diritti permanenti su nel terminale.
sveglia

13
non usare sudo su, poiché si rovinerà con l'ambiente e le cose si romperanno. invece usa sudo -i.
strugee

20
Non impostare una password di root. Do Non impostare una password di root.
wchargin,

4
chmod 777 è quasi sempre cattivo (il bit appiccicoso è esente; come usato con / tmp). Questa risposta è un rischio per la sicurezza. Inoltre l'impostazione di una password di root non è il modo in cui Ubuntu dovrebbe essere usato; invitando nuovamente un rischio per la sicurezza. Segui la risposta di neon_overload.
Rinzwind,

4
@WChargin perché suggerisci di non avere un account / password di root? Sono sinceramente curioso come utente di archlinux.
Rob

67

1. Perché non hai una password di root

Mentre puoi creare una password per l'account superutente che ti consenta di accedere come root su, vale la pena ricordare che questo non è il solito modo di fare le cose con Ubuntu (o, sempre più, anche con altre distribuzioni). Ubuntu ha scelto di non fornire un account di accesso e una password di default per una ragione. Invece, verrà utilizzata un'installazione predefinita di Ubuntu sudoper fornire privilegi di superutente. In un'installazione predefinita di Ubuntu, alla persona che ha installato il sistema operativo viene concessa l'autorizzazione "sudo" per impostazione predefinita.

Chiunque disponga dell'autorizzazione "sudo" completa 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

Vedrai questo utilizzo di sudo praticamente ovunque leggi un tutorial su Ubuntu sul web. È un'alternativa a farlo.

su
apt-get dist-upgrade
exit

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 su, si passa permanentemente a 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 il suo collegamento 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 come descritto nel @ risposta di Oli, se specificatamente vuole fare le cose in questo modo, invece. Volevo solo farti conoscere la convenzione di Ubuntu di preferire sudoinvece e farti sapere che esiste un'alternativa.


2. I problemi con il comando chmod 777 -R

La tua domanda ha anche una seconda parte: i tuoi problemi con il comando sudo chmod 777 -R foobs.

Innanzitutto, il seguente avviso indica un problema di sicurezza potenzialmente grave sul computer:

sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700

Ciò significa che ad un certo punto, hai impostato /var/lib/sudoper essere scrivibile dal mondo. Immagino che tu l'abbia fatto ad un certo punto usando un comando simile sudo chmod 777 -R /. Sfortunatamente, facendo questo probabilmente hai praticamente rotto tutte le autorizzazioni per i file in tutto il tuo sistema. È improbabile che questo sia l'unico file di sistema importante le cui autorizzazioni sono state modificate per essere scrivibili in tutto il mondo. Essenzialmente ora hai un sistema facilmente hackerabile e l'unico modo semplice per ripristinarlo sarebbe reinstallare.

In secondo luogo, il comando che stavi usando:

sudo chmod 777 -R foobs

Quando si manipolano i file all'interno della propria directory home, in questo caso in ~/Desktop, non è necessario utilizzare sudo. Tutti i file che crei nella tua home directory dovrebbero essere comunque modificabili da te (e, in caso contrario, sta succedendo qualcosa di divertente).

Inoltre, devi essere pienamente consapevole delle conseguenze della modifica dei permessi dei file in massa, come farlo in modo ricorsivo o su un numero enorme di file. In questo caso, stai modificando attentamente le autorizzazioni per i file in modo che siano scrivibili in tutto il mondo. Qualsiasi altro utente, o qualsiasi software server buggy sulla macchina, può avere un facile accesso per sovrascrivere tutti questi file e directory.

E 'quasi certo che chmod 777 -R [dir]si tratta non è una soluzione adeguata per qualunque problema si stava tentando di risolvere (e come ho già detto, ci sono prove che avete fatto per i file di sistema in / var / lib troppo, e presumo a un sacco di altre posti).

Un paio di regole empiriche di base:

  • Se stai solo scherzando con i tuoi file nella tua home directory, desktop ecc., Non dovresti mai avere bisogno di usare sudoo diritti di superutente. Se lo fai, è un segnale di avvertimento che stai facendo qualcosa di sbagliato.

  • Non modificare mai manualmente i file di sistema di proprietà dei pacchetti. Eccezione: a meno che tu non lo stia facendo specificamente nei modi documentati da quei pacchetti, ad esempio modificando la loro configurazione in /etc. Questo vale anche per la modifica delle autorizzazioni dei file. Se un tutorial o un tentativo di risolvere il problema richiede sudodiritti o superutente, e non è semplicemente una modifica a una configurazione in / etc /, è un segnale di avvertimento che stai facendo qualcosa di sbagliato.


Spiegazione eccezionale .. Pollice in su .. :)
Saurav Kumar

7
Penso che "sudo -i" sia il modo "ufficiale" per ottenere una shell root, piuttosto che "sudo su"
Max

3
Sì, è necessario utilizzare sudo -isopra sudo su.
Seth

sudo -i(o sudo su -) non sono universalmente migliori ma solo diversi: avviano una shell di accesso che simula un ambiente di accesso dell'utente root, che esegue, ad esempio, il .profilefile o il .loginfile dell'utente root. Questi sono migliori se si desidera che l'ambiente nella shell sia più simile a una shell di accesso di root che a una shell interattiva che accade ai privilegi di superutente. Probabilmente è meglio usare le shell basate sull'accesso se si usa una shell, ma questo è discutibile: il punto della risposta è che Ubuntu è principalmente progettato per l'uso sudoper l'esecuzione di comandi con privilegi di superutente.
thomasrutter,
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.