passwd -dl root
ne désactive pas l'utilisateur root. Il supprime et "verrouille" le mot de passe, c'est-à-dire qu'il définit un hachage de mot de passe sans signification.
Avoir un compte avec un mot de passe verrouillé signifie que vous ne pouvez pas vous connecter à l'utilisateur en utilisant le mot de passe. su, login et lightdm ne vous permettront pas de vous connecter en tant que root parce que, par défaut ils vous demandent le mot de passe de l'utilisateur.
Cependant, sudo fonctionne d'une manière différente : en gros, il a une liste d'utilisateurs qui sont autorisés à exécuter sudo (les utilisateurs dans cette liste sont appelés sudoers ) et, par défaut demande le mot de passe de l'utilisateur qui a lancé sudo.
C'est pourquoi, en utilisant sudo, vous pouvez vous connecter en tant que root même si root n'a pas de mot de passe. Si vous essayez la commande su root
vous verrez que vous ne pourrez pas vous connecter, car il vous sera demandé un mot de passe que vous ne pouvez pas fournir.
su, login, lightdm, sudo, ssh et autres sont tous des programmes que vous pouvez utiliser pour vous connecter à un système en tant qu'utilisateur, mais ils gèrent l'authentification de différentes manières. Il est important de ne pas confondre les méthode d'authentification avec l'action de se connecter .
Comme vous pouvez vous y attendre, le sujet de l'authentification est assez long et peut être délicat. Expliquer ici toutes les méthodes d'authentification disponibles et comment les utiliser serait trop difficile. Heureusement, il existe un outil qui peut vous donner des réponses plus exhaustives : man, que vous connaissez sûrement déjà. Vous serez peut-être intéressé par la lecture de ce document :
man passwd
man su
man sudo
man login
En particulier, man passwd
contient ce paragraphe que vous pourriez trouver intéressant :
-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.
Donc, pour désactiver l'utilisateur root, vous devez exécuter usermod --expiredate 1 root
. Bien que l'expérimentation soit toujours une bonne chose, rappelez-vous que cette commande peut être vraiment dangereuse et rendra votre boîte inutilisable. Donc, si vous voulez l'essayer, assurez-vous de savoir comment récupérer votre système ou (mieux) utilisez un chroot/un conteneur linux/une machine virtuelle/un CD live/une USB live.
Cela dit, vous remarquerez que vous recevrez parfois un message comme celui-ci :
Your account has expired; please contact your system administrator
su: Authentication failure
Cependant, il existe d'autres façons d'utiliser les comptes expirés. Par exemple, sudo ignore la date d'expiration de l'utilisateur de destination (mais vérifie la date d'expiration du sudoer). De même, su l'ignore, mais uniquement lorsqu'il est exécuté en tant que root :
Your account has expired; please contact your system administrator
su: Authentication failure
(Ignored)
Pour vraiment rendre un utilisateur inaccessible, vous devez vous occuper de PAM. Voir man 7 pam
et son VOIR AUSSI pour plus d'informations.