Techniquement, sauf si pam
est configuré pour vérifier votre shell avec pam_shells
aucun de ceux-ci ne peut réellement empêcher votre connexion, si vous n'êtes pas sur le shell. Sur mon système, ils sont même de tailles différentes, donc je soupçonne qu'ils font réellement quelque chose. Alors, quelle est la différence ? pourquoi existent-ils tous les deux ? Pourquoi utiliserais-je l'un plutôt que l'autre ?
-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
Réponse acceptée :
Quand /sbin/nologin
est défini comme shell, si l'utilisateur avec ce shell se connecte, il recevra un message poli indiquant "Ce compte n'est actuellement pas disponible". Ce message peut être modifié avec le fichier /etc/nologin.txt
.
/bin/false
est juste un binaire qui se termine immédiatement, retournant false, quand il est appelé, donc quand quelqu'un qui a false
lorsque le shell se connecte, ils sont immédiatement déconnectés lorsque false
sorties. Définir le shell sur /bin/true
a le même effet de ne pas autoriser quelqu'un à se connecter mais false
est probablement utilisé comme convention sur true
car c'est beaucoup mieux pour transmettre le concept que la personne n'a pas de coquille.
En regardant nologin
la page de manuel de , il dit qu'il a été créé en 4.4 BSD (début des années 1990) donc il est venu bien après false
a été créé. L'utilisation de false
en tant que shell n'est probablement qu'une convention héritée des premiers jours d'UNIX.
nologin
est l'option la plus conviviale, avec un message personnalisable donné à l'utilisateur essayant de se connecter, donc vous voudriez théoriquement l'utiliser ; mais les deux nologin
et false
aura le même résultat final si quelqu'un n'a pas de shell et ne peut pas se connecter en ssh.