Quelle ' est la différence entre / sbin / nologin et / bin / false

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

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. Dans zsh true et false 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, et nologin 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *