Hvad ' er forskellen mellem / sbin / nologin og / bin / false

Teknisk, medmindre pam er indstillet til at kontrollere din shell med pam_shells ingen af disse kan faktisk forhindre dit login, hvis du ikke er på skallen. På mit system de har endda forskellige størrelser, så jeg formoder, at de rent faktisk gør noget. Så hvad er forskellen? hvorfor eksisterer de begge? Hvorfor skal jeg bruge den ene over den anden?

-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 

Kommentarer

Svar

Når /sbin/nologin er indstillet som shell, hvis bruger med den skal logger ind, får de en høflig besked, der siger “Denne konto er i øjeblikket ikke tilgængelig.” Denne meddelelse kan ændres med filen /etc/nologin.txt.

/bin/false er bare en binær, der straks går ud, returnerer falsk, når den kaldes, så når en person, der har false som shell-logfiler i, de “logges straks ud, når false afslutter. At indstille shell til /bin/true har den samme virkning, at ingen tillader at logge ind men false bruges sandsynligvis som en konvention over true da det er meget bedre a t formidle konceptet om, at personen ikke har en skal.

Ser man på nologin “s mandside, står det, at den blev oprettet i 4.4 BSD (tidligt 1990ere ) så det skete længe efter at false blev oprettet. Brugen af false som en shell er sandsynligvis kun en konvention, der overføres fra de tidlige dage af UNIX.

nologin er den mere brugervenlige indstilling med en brugerdefineret meddelelse givet til brugeren, der prøver at logge ind, så du ville teoretisk gerne bruge det; men både nologin og false vil have det samme slutresultat af, at nogen ikke har en skal og ikke er i stand til at ssh in.

Kommentarer

  • /usr/sbin/nologin til Debian-baserede distributioner.
  • Mindst BSD-implementering logger også login forsøger at syslog som set i opensource.apple.com/source/system_cmds/system_cmds-735/… , hvorimod / bin / false ikke ville ‘ t logge noget
  • DETTE – Er et fantastisk svar med stor historie præsenteret her. Godt gået Mark!
  • Funktionen /etc/nologin.txt tilpasset meddelelse er ikke tilgængelig i Ubuntu.

Svar

Nogle FTP-servere giver dig kun FTP-adgang, hvis du har en gyldig shell. /sbin/nologin betragtes som en gyldig skal, mens /bin/false ikke er.

(jeg tror “gyldig” betyder dens exit status er 0, men /etc/shells kan også komme ind i det, det afhænger sandsynligvis af systemet, FTP-softwaren og din konfiguration.)

Kommentarer

  • ja, at ‘ sandsynligvis er en del af ftp-programmet ved hjælp af pam, og pam ved hjælp af pam_shells, som som du sagde kontrollerer /etc/shells. Bare et gæt … Jeg kunne tage fejl.
  • Jeg tjekkede bare både Ubuntu 8.04 og 14.04. Kommandoen nologin afsluttes med status 1 svarende til falsk, og ingen af sand, falsk eller nologin er inkluderet i / etc / shell. Hvis det var tilfældet, kunne en bruger bruge chsh til at vælge en sådan shell og låse sig ude af sin konto.

Svar

/bin/false er en systemkommando, der bruges når som helst, du har brug for at sende en kommando til et program, der ikke skal gøre andet end at afslutte med en fejl. Det er ledsageren til /bin/true. Begge disse er meget gamle og standard POSIX-værktøjer og producerer ikke nogen output pr. Definition.sand bruges undertiden til et shell-script, der skal løkke på ubestemt tid, som:

while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done 

/usr/sbin/nologin er specielt designet til udskift en shell og producerer output, der klager over, at du ikke kan logge ind. Før den eksisterede, var det almindeligt at bruge /bin/false til dummy-brugere, men det kunne være forvirrende, da brugeren ikke “t ved, hvorfor de “startede igen.

Kommentarer

  • værd at bemærke, at /bin/true og /bin/false er ikke altid, hvad du får i et shell-script. I zsh true og false er indbyggede, hvor bash bruger /bin/* versioner

Svar

På min maskine viser nologin altid den samme besked på engelsk og ignorerer argumenter . /bin/false svarer til --version og --help på det sprog, der er angivet med $LC_CTYPE. Bortset fra disse kosmetiske forskelle har de den samme effekt.

Brugervenligt, nologin er bedre, hvis det bruges på konto for en rigtig person, der taler engelsk. Sikkerhedsmæssigt er der ingen forskel.

Kommentarer

  • virker måske som false er mere til systemkonti, der ikke har nogen reel bruger, og nologin er til deaktiverede konti.
  • Hvad er dit operativsystem? Centos nologin version tager ingen argumenter, men kan læse besked fra /etc/nologin.txt.

Svar

På linux kommer /sbin/nologin fra util-linux -projektet, mens /bin/false er en del af GNU Coreutils . De har forskellige roller, og nologin har mulighed for at udskrive en besked til folk, der har det som deres shell, der logger ind. Linux-kommandoerne kommer fra BS D, hvor de ser ud til at have en lang historie med at være forskellige. FreeBSD false returnerer simpelthen 1 , mens nologin kontrollerer til sørg for at det “s kører på en TTY og sender en besked til syslog under loginforsøg. Linux-versionerne er lidt mere komplicerede (false laver alle mulige sjove ting med internationalisering for output af –hjælp antager jeg) men udfører i det væsentlige på samme måde.

Svar

/ bin / false eneste job er at afslutte med en udgangskode, der ikke er nul.

Prøv det på kommandolinjen:

$:> /bin/false $:> echo $? 1 $:> 

Nogle institutioner bruger / bin / false i shell-feltet i adgangskodefilen. Hvis brugeren prøver at logge ind, er shell / bin / false, så de lukkes med det samme

Svar

De kunne være det samme program, men de har forskellige betydninger. Programmets navn fortæller alt.

  • / bin / false er beregnet til at returnere en falsk værdi køres som program.
  • / bin / nologin er beregnet til at angive over for brugeren, at der ikke er noget login til en konto. (Det bruges en login-shell.)

Svar

Begge gør mere eller mindre det samme job men /bin/false er nyttigt for ikke-privilegerede brugere. På den anden side er /sbin/nologin til privilegerede brugere.

Kommentarer

  • Åh, hvordan har du det komme til den konklusion?
  • Sandsynligvis har han undersøgt /etc/passwd. Jeg kiggede bare på /etc/passwd af en nyinstalleret Debian-strækning. I dette felt har næsten alle systemkonti (bruger-id < 1000) /usr/sbin/nologin som shell, med et par undtagelser. Bemærk, at jeg ikke er enig med @pythondetective ‘ s svar. Jeg spekulerer bare på, hvad der kunne have ført ham til denne konklusion. Min kommentar er dog lidt sent.
  • nej! standard login shell er ikke det samme som privilegier.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *