Parfois, nous pouvons avoir besoin d'un compte d'utilisateur avec un mot de passe pour l'authentification avec un système, mais nous n'avons pas besoin d'un shell interactif avec ce nom d'utilisateur. Cela permet d'éviter que le compte d'utilisateur ne soit utilisé pour se connecter au système avec ce mot de passe. Dans ces scénarios, nous pouvons définir le shell de l'utilisateur sur /sbin/nologin ou /bin/false . Si l'utilisateur essaie de se connecter au système, le shell nologin ferme la connexion de l'utilisateur.
Un exemple d'une telle situation pourrait être un serveur de messagerie, où un compte d'utilisateur est nécessaire pour stocker le courrier et les mots de passe pour que l'utilisateur s'authentifie auprès du client de messagerie et récupère son courrier ; cependant, si le shell /sbin/nologin est attribué, l'utilisateur ne peut pas se connecter au système à l'aide de ce compte.
Étant donné que les deux commandes renvoient une valeur différente de zéro, il n'y a pas tellement de différence. À l'origine, /bin/false a été créé pour une commande générale car il renvoie toujours non nul. Ensuite, il semble qu'il soit utilisé comme shell de l'utilisateur nologin avant de créer /sbin/nologin.
D'autre part, /sbin/nologin a été créé pour le shell de l'utilisateur nologin, il a une fonctionnalité pour donner un message dans /etc/nologin.txt . L'utilisation de /sbin/nologin est recommandée pour le shell de l'utilisateur nologin, car il est inclus dans /etc/shells .
$ man -k nologin nologin(5) - disallow logins nologin(8) - politely refuse a login pam_nologin(8) - No Login PAM module
$ man -k false ... false(1) - Return false value