Techniquement, si rien pam
n'est configuré pour vérifier votre shell, 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 ont même des tailles différentes, alors je suppose qu'ils font réellement quelque chose. Alors quelle est la différence? Pourquoi les deux existent-ils? Pourquoi devrais-je utiliser l'un sur 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
/bin/false
doit exister partout mais pas/sbin/nologin
: '/ sbin / nologin': Aucun fichier ni répertoire de ce type. Avez-vous une idée de pourquoi c'est à la/usr/sbin/nologin
place de/sbin/nologin
Debian et Ubuntu?Réponses:
Quand
/sbin/nologin
est défini en tant que shell, si un utilisateur avec ce shell se connecte, il recevra un message poli indiquant «Ce compte n'est pas disponible pour le moment». Ce message peut être changé avec le fichier/etc/nologin.txt
./bin/false
est juste un fichier binaire qui se termine immédiatement, en retournant false, quand il est appelé. Ainsi, quand quelqu'un qui a unfalse
shell se connecte, il est immédiatement déconnecté quand ilfalse
quitte. Définir le shell/bin/true
a le même effet de ne pas permettre à quelqu'un de se connecter, maisfalse
est probablement utilisé comme conventiontrue
car il est beaucoup plus efficace de véhiculer le concept selon lequel une personne n'a pas de shell.En regardant la
nologin
page « homme s, il dit qu'il a été créé en 4.4 BSD (début des années 1990) il est venu longtemps aprèsfalse
sa création. L'utilisation defalse
shell en tant que shell n'est probablement qu'une convention héritée des débuts d'UNIX.nologin
est l’option la plus conviviale, avec un message personnalisable donné à l’utilisateur essayant de se connecter; vous voudriez donc théoriquement l’utiliser; mais les deuxnologin
etfalse
auront le même résultat final: quelqu'un qui n'a pas de shell et ne peut pas entrer.la source
/usr/sbin/nologin
pour les distributions basées sur Debian.Certains serveurs FTP ne vous autoriseront l'accès FTP que si vous avez un shell valide.
/sbin/nologin
est considéré comme une coquille valide, alors que/bin/false
non.(Je pense que "valide" signifie que son état de sortie est 0, mais
/etc/shells
peut aussi y entrer, cela dépend probablement du système, du logiciel FTP et de votre configuration.)la source
/etc/shells
. Juste une supposition ... Je peux me tromper./bin/false
est une commande système qui est utilisée chaque fois que vous devez passer une commande à un programme qui ne devrait rien faire d’autre que quitter avec une erreur. C'est le compagnon de/bin/true
. Tous deux sont des utilitaires POSIX très anciens et standard et ne produisent aucun résultat par définition. true est parfois utilisé pour un script shell qui devrait être bouclé indéfiniment, comme:/usr/sbin/nologin
est spécialement conçu pour remplacer un shell et produit une sortie en se plaignant de l'impossibilité de se connecter. Avant d’exister, il était courant d’utiliser/bin/false
des utilisateurs factices, mais cela pouvait prêter à confusion car l’utilisateur ne savait pas pourquoi il était renvoyé.la source
/bin/true
et/bin/false
ne sont pas toujours ce que vous obtiendrez dans un script shell. Danszsh
true
etfalse
sont intégrés, oùbash
utilise les/bin/*
versionsSur ma machine,
nologin
affiche toujours le même message, en anglais, en ignorant les arguments./bin/false
répond à--version
et--help
dans la langue indiquée par$LC_CTYPE
. Autres que ces différences cosmétiques, ils ont le même effet.Sur le plan de la convivialité, il
nologin
vaut mieux s’il est utilisé pour le compte d’une personne réelle qui parle anglais. Du point de vue de la sécurité, il n'y a pas de différence.la source
false
- être plus pour les comptes système qui n’ont pas d’utilisateur réel etnologin
pour les comptes désactivés.nologin
version Centos ne prend aucun argument, mais peut lire le message/etc/nologin.txt
.Le seul travail / bin / false consiste à quitter avec un code de sortie non nul.
Essayez-le en ligne de commande:
Certaines institutions utilisent / bin / false dans le champ shell du fichier de mots de passe. Si l'utilisateur essaie de se connecter, le shell est / bin / false, donc on les quitte immédiatement
la source
Sur Linux,
/sbin/nologin
vient du projet util-linux , alors qu'il/bin/false
fait partie de GNU Coreutils . Elles remplissent des rôles différents et nologin a la possibilité d’imprimer un message à l’intention de ceux qui en ont le shell qui se connecte. Les commandes linux proviennent de BSD, où elles semblent avoir une longue histoire d’être différentes. FreeBSDfalse
retourne simplement 1 , pendant que lenologin
vérificateur s’assure qu’il fonctionne sur un téléscripteur et envoie un message à syslog lors des tentatives de connexion. Les versions de Linux sont un peu plus compliquées (false
faire toutes sortes de choses amusantes avec l’internationalisation pour la sortie de --help, je suppose) mais fonctionnent essentiellement de la même manière.la source
Ils pourraient être le même programme, mais ils ont des significations différentes. Le nom du programme dit tout.
la source
Les deux font plus ou moins le même travail mais
/bin/false
sont utiles pour les utilisateurs non privilégiés. D'autre part,/sbin/nologin
est pour les utilisateurs privilégiés.la source
/etc/passwd
. Je viens tout juste de jeter un coup d'œil sur/etc/passwd
un tronçon Debian fraîchement installé. Sur cette zone, presque tous les comptes système (identificateurs d'utilisateur <1000) ont un/usr/sbin/nologin
shell, à quelques exceptions près. Veuillez noter que je ne suis pas d'accord avec la réponse de @ pythondetective. Je ne fais que spéculer sur ce qui l’aurait conduit à cette conclusion. Mon commentaire est un peu en retard, cependant.