Techniquement, à moins que pam
est configuré pour vérifier votre shell avec pam_shells
aucun de ces éléments 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 quils font réellement quelque chose. Alors, quelle est la différence? pourquoi existent-ils tous les deux? Pourquoi devrais-je utiliser lun sur lautre?
-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
Commentaires
- Voir aussi Est-ce que / usr / sbin / nologin en tant que shell de connexion sert un objectif de sécurité?
- Je ‘ suis curieux pourquoi / bin / false prend 21k de code pour retourner un code retour » 1 « ! (et / sbin / nologin ne prend que 4.7k)
- utile à lire. Quelle est la différence entre / sbin / nologin et / bin / false
- @MarkStewart Un peu trop tard, mais vous voudrez peut-être lire Pourquoi vrai et faux sont-ils si grands? et Un tutoriel Whirlwind sur la création dexécutables ELF Really Teensy pour Linux .
- @nxnev Ouais je nai ‘ penser à la surcharge dELF. Et de mon ancien temps IBM, il y avait un programme IEFBR14 qui était une simple instruction dassemblage à un code opération: BR 14 – Branchement au registre 14, ce qui mettrait fin au programme avec le code de retour défini sur ce qui se trouvait dans le registre 14!
Réponse
Quand /sbin/nologin
est défini comme shell, si lutilisateur avec ce shell connecté, ils « recevront un message poli disant » Ce compte nest pas disponible actuellement. « Ce message peut être modifié avec le fichier /etc/nologin.txt
.
/bin/false
est juste un binaire qui sort immédiatement, retournant false, quand il « est appelé, donc quand quelquun qui a false
comme journal du shell , ils « sont immédiatement déconnectés lorsque false
se ferme. Définir le shell sur /bin/true
a le même effet de ne pas permettre à quelquun de se connecter mais false
est probablement utilisé comme convention sur true
car il « est beaucoup mieux un t véhiculant le concept selon lequel une personne na pas de shell.
En regardant la page de manuel de nologin
« , il est dit quelle a été créée en 4.4 BSD (début des années 1990 ) donc il est venu longtemps après la création de false
. Lutilisation de false
comme shell nest probablement quune convention reportée des premiers temps dUNIX.
nologin
est loption la plus conviviale, avec un message personnalisable donné à lutilisateur essayant de se connecter, donc vous voudriez théoriquement lutiliser; mais nologin
et false
auront le même résultat final si quelquun na pas de shell et ne peut pas entrer en ssh.
Commentaires
-
/usr/sbin/nologin
pour les distributions basées sur Debian. - Au moins limplémentation BSD enregistre également la connexion tente de syslog comme indiqué dans opensource.apple.com/source/system_cmds/system_cmds-735/… , alors que / bin / false ne consignerait rien ‘
- CECI – est une réponse incroyable, avec une grande histoire présentée ici. Bravo Mark!
- La fonction de message personnalisé
/etc/nologin.txt
nest pas disponible dans Ubuntu.
Réponse
Certains serveurs FTP ne vous autoriseront laccès FTP que si vous avez un shell valide. /sbin/nologin
est considéré comme un shell valide, alors que /bin/false
ne lest pas.
(Je pense que « valide » signifie son létat de sortie est 0, mais /etc/shells
peut également y entrer, cela dépend probablement du système, du logiciel FTP et de votre configuration.)
Commentaires
- ouais, que ‘ fait probablement partie du programme ftp utilisant pam, et pam utilisant pam_shells qui, comme vous lavez dit, vérifie
/etc/shells
. Juste une supposition … Je peux me tromper. - Je viens de vérifier Ubuntu 8.04 et 14.04. La commande nologin se termine avec le statut 1 similaire à false, et aucune valeur true, false ou nologin nest incluse dans / etc / shells. Si tel était le cas, un utilisateur pourrait utiliser chsh pour sélectionner un tel shell et se verrouiller hors de son compte.
Réponse
/bin/false
est une commande système qui est utilisée chaque fois que vous avez besoin de passer une commande à un programme qui ne devrait rien faire dautre que quitter avec une erreur. Cest le compagnon de /bin/true
. Ces deux utilitaires sont très anciens et standard et ne produisent aucun résultat par définition.true est parfois utilisé pour un script shell qui doit boucler indéfiniment, comme:
while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done
/usr/sbin/nologin
est spécifiquement conçu pour remplace un shell et produit une sortie en se plaignant que vous ne pouvez pas « t vous connecter. Avant quil nexiste, il était courant dutiliser /bin/false
pour les utilisateurs factices, mais cela pouvait prêter à confusion puisque lutilisateur ne le faisait pas » t sachez pourquoi ils « ont été lancés.
Commentaires
- mérite dêtre noté que
/bin/true
et/bin/false
ne sont pas toujours ce que vous obtiendrez dans un script shell. Danszsh
true
etfalse
sont des versions intégrées, oùbash
utilise les/bin/*
versions
Réponse
Sur 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
. En dehors de ces différences esthétiques, elles ont le même effet.
Du point de vue de la convivialité, nologin
est préférable sil est utilisé sur le compte dune personne réelle qui parle anglais. Sur le plan de la sécurité, il ny a pas de différence.
Commentaires
- semble peut-être
false
est plus pour les comptes système qui nont pas dutilisateur réel, etnologin
est pour les comptes désactivés. - Quel est votre système dexploitation? Centos
nologin
ne prend aucun argument, mais peut lire le message de/etc/nologin.txt
.
Réponse
Sous Linux, /sbin/nologin
provient du projet util-linux , tandis que /bin/false
fait partie de GNU Coreutils . Ils remplissent des rôles différents et nologin a la possibilité d’imprimer un message pour les personnes qui ont comme leur shell qui se connectent. Les commandes linux proviennent de BS D, où ils semblent avoir une longue histoire dêtre différents. FreeBSD false
renvoie simplement 1 , tandis que nologin
vérifie assurez-vous quil « s fonctionne sur un TTY et envoie un message à syslog lors des tentatives de connexion. Les versions Linux sont un peu plus compliquées (false
faire toutes sortes de choses amusantes avec linternationalisation pour la sortie de –help, je suppose) mais effectuer essentiellement de la même manière.
Réponse
/ bin / false, seul le travail consiste à quitter avec un code de sortie différent de zéro.
Essayez-le sur la ligne de commande:
$:> /bin/false $:> echo $? 1 $:>
Certaines institutions utilisent / bin / false dans le champ shell du fichier de mots de passe. Si lutilisateur tente de se connecter, le shell est / bin / false, donc ils sont immédiatement fermés
Réponse
Ils pourraient être le même programme, mais ils ont des significations différentes. Le nom du programme dit tout.
- / bin / false est destiné à renvoyer une valeur fausse. est exécuté en tant que programme.
- / bin / nologin est destiné à indiquer à lutilisateur quaucune connexion nest autorisée pour un compte. (Il est utilisé comme shell de connexion.)
Réponse
Les deux font plus ou moins le même travail mais /bin/false
est utile pour les utilisateurs non privilégiés. Dautre part, /sbin/nologin
est destiné aux utilisateurs privilégiés.
Commentaires
- Oh, comment avez-vous arriver à cette conclusion?
- Il a probablement examiné
/etc/passwd
. Je viens de jeter un oeil à/etc/passwd
dune extension Debian fraîchement installée. Sur cette boîte, presque tous les comptes système (identifiants utilisateur < 1000) ont/usr/sbin/nologin
comme shell, à quelques exceptions près. Veuillez noter que je ne suis pas daccord avec la réponse de @pythondetective ‘. Je spécule simplement sur ce qui aurait pu le conduire à cette conclusion. Mon commentaire est cependant un peu tardif. - non! Le shell de connexion par défaut nest pas le même que les privilèges.