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
- Se også Serverer / usr / sbin / nologin som login-shell et sikkerhedsformål?
- Jeg ‘ er nysgerrig hvorfor / bin / false tager 21k kode for at returnere en ” 1 ” returkode! (og / sbin / nologin tager kun 4.7k)
- nyttigt at læse. Hvad er forskellen mellem / sbin / nologin og / bin / false
- @MarkStewart Lidt for sent, men du vil måske læse Hvorfor er sandt og falsk så stort? og En whirlwind-vejledning om oprettelse af virkelig teenagende ELF-eksekverbare filer til Linux .
- @nxnev Ja, tænkte ikke ‘ ikke over omkostningerne ved ELF. Og fra mine gamle IBM-dage var der et program IEFBR14, der var en enkel op-kode samleinstruktion: BR 14 – Filial til register 14, som ville afslutte programmet med returkoden indstillet til det, der var i register 14!
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. Izsh
true
ogfalse
er indbyggede, hvorbash
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, ognologin
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.