passwd -dl root
não desativa o usuário root. Ele remove e "bloqueia" a senha, ou seja, define um hash de senha sem sentido.
Ter uma conta com uma senha bloqueada significa que você não pode entrar no usuário usando a senha. su, login e lightdm não permitirão que você faça login como root porque, por padrão , eles perguntam a senha do usuário.
No entanto o sudo funciona de uma maneira diferente: aproximadamente, ele tem uma lista de usuários que podem rodar o sudo (os usuários dessa lista são chamados de sudoers ) e, por padrão , pede a senha do usuário lançou o sudo.
Por isso, usando o sudo, você pode logar na raiz mesmo que a raiz não tenha uma senha. Se você tentar o comando su root
, verá que não poderá efetuar login, porque ele pedirá uma senha que você não pode fornecer.
su, login, lightdm, sudo, ssh e outros são todos os programas que você pode usar para efetuar login em um sistema como usuário, mas eles lidam com a autenticação de maneiras diferentes. É importante não confundir o método de autenticação com a ação do login .
Como você pode esperar, o tópico de autenticação é bastante longo e pode ser complicado. Explicar aqui todos os métodos de autenticação disponíveis e como utilizá-los seria muito difícil. Felizmente há uma ferramenta que pode lhe dar respostas mais exaustivas: cara, o que com certeza você já sabe. Você pode estar interessado em ler:
-
man passwd
-
man su
-
man sudo
-
man login
Em particular, man passwd
contém este parágrafo que você pode achar interessante:
-l, --lock
Lock the password of the named account. This option disables a password by
changing it to a value which matches no possible encrypted value (it adds a
´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to
login using another authentication token (e.g. an SSH key). To disable the
account, administrators should use usermod --expiredate 1 (this set the
account's expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.
Portanto, para desabilitar o usuário root, você deve executar usermod --expiredate 1 root
. Embora a experimentação seja sempre uma coisa boa, lembre-se de que esse comando pode ser realmente perigoso e tornar sua caixa inutilizável. Então, se você quiser experimentar, certifique-se de saber como recuperar seu sistema ou (melhor) usar um container chroot / linux / máquina virtual / live CD / live USB.
Dito isto, você notará que às vezes você receberá uma mensagem como esta:
Your account has expired; please contact your system administrator
su: Authentication failure
No entanto, existem outras maneiras de usar contas expiradas. Por exemplo, o sudo ignora a data de expiração do usuário de destino (mas verifica a data de expiração do sudoer). Também o ignora, mas apenas quando executado como root:
Your account has expired; please contact your system administrator
su: Authentication failure
(Ignored)
Para realmente tornar um usuário inacessível, você deve lidar com o PAM. Veja man 7 pam
e sua seção VEJA TAMBÉM para mais informações.