Poiché Ubuntu disabilita l'account root per impostazione predefinita, perché non disabilitare anche l'accesso alla shell root?


12

L'impostazione predefinita corrente per l'account root /etc/passwdè root:x:0:0:root:/root:/bin/bash.

Perché non impostarlo su root:x:0:0:root:/root:/usr/sbin/nologin?


7
In modo che tu possa fare sudo -i?
AlexP,

12
"disabilita l'account root" è un po 'una breve descrizione: ciò che disabilita veramente è l' autenticazione basata su password dell'account root
steeldriver,

1
@AlexP infatti l'ho appena provato, sudo -i non funziona con root impostato su / usr / sbin / nologin.
Loongyh,

Risposte:


19

Se così fosse, saresti in grado di eseguire solo comandi sudouno alla volta, ma non saresti in grado di avviare una shell di root. Una shell root è utile in molti casi, ad esempio se si prevede di eseguire più comandi come root in una riga.

In particolare, non è possibile eseguire sudo -i, come notato da AlexP. Da man sudo:

-i, --login    Run the shell specified by the target user's password database entry as a login shell.

7
Non sudo /bin/bashfunziona per farlo?
Federico Poloni,

5
@FedericoPoloni che sarebbe più come sudo -spenso (una shell di root, ma non una shell di login di root ). È un buon punto però - e in effetti sudo -ssembra funzionare anche quando la shell di root è/usr/sbin/nologin
steeldriver

1
È possibile disattivare -i, -s, /bin/bash, e così via, semplicemente permettendo una whitelist di comandi, consultare la documentazione per il file sudoers. Questo è così fine, che ad esempio è possibile consentire agli utenti di eseguire /etc/init.d/someservice restartcome root senza consentire loro di funzionare /etc/init.d/someservice stop. Ma il default di Ubuntu è solo quello di non impostare password roote consentire agli utenti admin di fare tutto con sudo. Probabilmente la logica è a) più di un utente amministratore eb) L'utente amministratore non ha bisogno di ricordare una seconda password per l'account root.
allo

8

Oltre alla risposta sudo di Alberto Santini, c'è un'altra (molto migliore) risposta. Se la shell di root è impostata su qualcosa che non è una shell, l'avvio di un singolo utente non funziona. C'è recupero in sulogincose come shell non esistente o shell completamente rotta, ma non funzionerà se la shell sembra essere una shell valida ma in realtà non è una shell.

Puoi comunque sudoottenere direttamente una shell specificando la shell in sudomodo che non sia nemmeno una buona protezione.

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.