Dans ce tutoriel, nous allons couvrir les différentes méthodes utilisées pour bloquer les connexions des utilisateurs sur Linux et leurs différences.

La commande nologin

Nous pouvons utiliser la commande nologin pour empêcher un utilisateur de se connecter. Elle imprime un message et se termine avec un code d’état non nul pour indiquer l’échec. Nous pouvons modifier le shell de connexion d’un utilisateur à l’aide de l’indicateur -s de la commande usermod.

À titre d’exemple, utilisons-le pour empêcher un utilisateur appelé baeldung de se connecter :

$ sudo usermod baeldung -s /sbin/nologin
$ sudo su – baeldung
Ce compte n’est actuellement pas disponible.

Maintenant, si nous essayons d’utiliser su pour nous connecter au compte, nous voyons une erreur indiquant que les connexions ont été désactivées.

Nous pouvons également modifier le message d’erreur en modifiant le fichier /etc/nologin.txt :

$ echo « Bonjour, les connexions ont été désactivées pour votre compte. Veuillez contacter votre administrateur système pour plus d’informations » | sudo tee /etc/nologin.txt
$ su – baeldung
Bonjour, les connexions ont été désactivées pour votre compte. Veuillez contacter votre administrateur système pour plus d’informations.

La commande false

La commande false est une commande simple que nous utilisons pour retourner un code d’état non nul indiquant un échec. Exécutons-la et vérifions son code d’état :

$ false
$ echo $ ?
1

false est l’opposé de la commande true, qui renvoie toujours un code d’état nul, indiquant un succès :

$ true
$ echo $ ?
0

Nous pouvons les utiliser dans l’instruction while de Bash pour exécuter du code de façon répétée :

while false ; do
echo « Ce code ne sera jamais exécuté ! »
done

while true ; do
echo « Ce code s’exécutera éternellement ! »
done

Le premier bloc de code n’est jamais exécuté puisque false indique toujours un échec, alors que true indique toujours un succès :

$ ./script
Ce code sera exécuté pour toujours !
Ce code sera exécuté pour toujours !
Ce code sera exécuté à l’infini !

Bien que ce ne soit pas le but premier de la commande false, nous pouvons tout de même l’utiliser pour empêcher les connexions d’utilisateurs, tout comme nous l’avons fait avec la commande nologin. Cependant, false n’imprime pas de message d’erreur et quitte immédiatement le shell, ce qui peut prêter à confusion :

$ sudo usermod baeldung -s /bin/false
$ sudo su – baeldung
$ echo $ ?
1

Cela signifie que nous ne pouvons pas personnaliser les messages d’erreur comme nous l’avons fait avec nologin dans la section précédente.

La commande passwd

Nous pouvons utiliser l’indicateur -l de la commande passwd pour verrouiller un compte utilisateur, empêchant ainsi toute connexion :

$ sudo passwd -l baeldung
passwd : les informations d’expiration du mot de passe ont été modifiées.
$ su – baeldung
Mot de passe :
su : Echec de l’authentification

Maintenant, lorsque nous essayons de nous connecter, su traitera tous les mots de passe comme invalides. Nous pouvons déverrouiller le compte avec sudo passwd -u baeldung. Cette méthode est similaire à la commande false puisqu’elle ne nous permet pas d’afficher un message descriptif.

La commande usermod

Comme pour la commande passwd, nous pouvons utiliser la commande usermod avec les drapeaux -L ou -U pour verrouiller/déverrouiller un compte utilisateur :

$ sudo usermod -L baeldung
$ su – baeldung
Mot de passe :
su : Echec de l’authentification
$ sudo usermod -U baeldung
$ su – baeldung
Mot de passe :
$ echo $ ? # Succès
0

Conclusion

Dans cet article, nous avons appris les différentes commandes utilisées pour bloquer les connexions des utilisateurs sous Linux et leurs différences. En général, la commande nologin est préférée aux autres méthodes comme false ou passwd car elle nous permet de définir un message personnalisé expliquant pourquoi le compte a été verrouillé.