OK, deixe-me escrever um breve esclarecimento. Existem dois usuários diferentes: Shannon
e root
. No Ubuntu, por padrão, root
não tem uma senha em tudo e não pode logar em tudo . Se Shannon
quiser executar uma tarefa que exija privilégios de root, ele usará o comando sudo
que consultará um arquivo chamado /etc/sudoers
e poderá transformar Shannon
em root
.
Por padrão, sudo
quer garantir que Shannon
seja Shannon
e não o cachorro que acabou de usar o teclado. É por isso que sudo
pergunta ao usuário Shannon
pela senha do his (e não do root). Observe também que "uma tarefa que exige privilégios de root" pode ser um bash shell, o que essencialmente significa que você pode efetuar login como root (sem usar a senha de root!).
Portanto, não é que os dois usuários ( Shannon
e root
) tenham senhas diferentes, mas que a senha de root
não esteja realmente sendo solicitada .
Pessoalmente, não tenho cachorro; é por isso que modifiquei /etc/sudoers
de tal maneira que nunca me pede minha senha - sendo suficiente. Usando o comando sudo visudo
eu editei /etc/sudoers
e editei a seguinte linha:
%sudo ALL=(ALL:ALL) ALL
A linha acima significa que todos os usuários do grupo sudo (e só posso assumir que Shannon
pertence a este grupo se ele instalou seu sistema) podem executar essencialmente TODOS os comandos raiz.
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
Ah, mas agora a diretiva NOPASSWD garante que não apenas eu possa rodar qualquer programa como root, eu posso executá-lo sem ser importunado por digitar uma senha. Note que para editar este arquivo eu devo usar o programa visudo
, o que garante que eu não faça nenhum erro de sintaxe. O erro de sintaxe no arquivo sudoers
pode desativar completamente o sistema sudo - e, se a raiz não tiver uma senha, você estará em um kacka profundo.
Para adicionar confusão, há ainda outro programa que permite obter privilégios de root temporariamente chamado su
. No entanto, su
é muito mais primitivo - apenas pede a senha da raiz . Portanto, não funciona em uma instalação padrão do Ubuntu.
Então, qual senha é solicitada quando você digita sudo su
? Bem, o comando que você está executando primeiro é sudo
, não su
. Assim, você é perguntado pela senha de Shannon
, e não pelas raízes. sudo
ganha privilégios de root e executa su
como root. Mas quando a raiz executa su
, su
não pede uma senha. Em qualquer caso, não faça isso - é para isso que o sudo -i
(faz exatamente a mesma coisa).