Teknisk, med mindre pam
er satt opp for å sjekke skallet ditt med pam_shells
ingen av disse kan faktisk forhindre påloggingen din, hvis du ikke er på skallet. de har til og med forskjellige størrelser, så jeg mistenker at de faktisk gjør noe. Så hva er forskjellen? hvorfor eksisterer de begge? Hvorfor skulle jeg bruke hverandre?
-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 påloggingsskall et sikkerhetsformål?
- Jeg ‘ er nysgjerrig hvorfor / bin / false tar 21k kode for å returnere en » 1 » returkode! (og / sbin / nologin tar bare 4,7 k)
- nyttig å lese. Hva er forskjellen mellom / sbin / nologin og / bin / false
- @MarkStewart Litt for sent, men det kan være lurt å lese Hvorfor er sant og usant så stort? og En virvelvindopplæring om å lage virkelig teensy ELF-kjørbare filer for Linux .
- @nxnev Ja, ‘ tenkte ikke på kostnadene til ELF. Og fra mine gamle IBM-dager var det et program IEFBR14 som var en enkel instruksjon for montering av op-kode: BR 14 – Filial til register 14, som ville avslutte programmet med returkoden satt til det som var i register 14!
Svar
Når /sbin/nologin
er satt som skall, hvis bruker med at skallet logger på, får de en høflig melding som sier «Denne kontoen er for øyeblikket ikke tilgjengelig.» Denne meldingen kan endres med filen /etc/nologin.txt
.
/bin/false
er bare en binær som umiddelbart går ut, og returnerer falsk når den heter, så når noen som har false
som skalllogger i, de «logges umiddelbart ut når false
går ut. Hvis du setter skallet til /bin/true
, har den samme effekten av at ikke noen kan logge på men false
brukes sannsynligvis som en konvensjon over true
siden det er mye bedre a t formidle konseptet om at personen ikke har et skall.
Ser man på nologin
«s mannsside, står det at den ble opprettet i 4.4 BSD (tidlig på 1990-tallet) ) så det kom lenge etter at false
ble opprettet. Bruk av false
som et skall er sannsynligvis bare en konvensjon som ble overført fra de tidlige dagene av UNIX.
nologin
er det mer brukervennlige alternativet, med en tilpassbar melding gitt til brukeren som prøver å logge på, så du vil teoretisk sett bruke den; men både nologin
og false
vil ha det samme sluttresultatet av at noen ikke har et skall og ikke kan ssh inn.
Kommentarer
-
/usr/sbin/nologin
for Debian-baserte distribusjoner. - I det minste logges også BSD-implementering påloggingen prøver å syslog som sett i opensource.apple.com/source/system_cmds/system_cmds-735/… , mens / bin / false ikke ville ‘ t logge noe
- DETTE – Er et fantastisk svar, med stor historie presentert her. Vel gjort Mark!
-
/etc/nologin.txt
egendefinerte meldingsfunksjon er ikke tilgjengelig i Ubuntu.
Svar
Noen FTP-servere gir deg bare FTP-tilgang hvis du har et gyldig skall. /sbin/nologin
betraktes som et gyldig skall, mens /bin/false
ikke er det.
(jeg tror «gyldig» betyr dens exit-status er 0, men /etc/shells
kan også komme inn i den, det avhenger sannsynligvis av systemet, FTP-programvaren og konfigurasjonen din.)
Kommentarer
- ja, at ‘ sannsynligvis er en del av ftp-programmet ved hjelp av pam, og pam ved hjelp av pam_shells som som du sjekker
/etc/shells
. Bare en gjetning … Jeg kan ta feil. - Jeg sjekket bare både Ubuntu 8.04 og 14.04. Nologin-kommandoen går ut med status 1 som falsk, og ingen av true, false eller nologin er inkludert i / etc / shell. Hvis de var det, kunne en bruker bruke chsh til å velge et slikt skall og låse seg utenfor kontoen sin.
Svar
/bin/false
er en systemkommando som brukes når som helst du trenger å sende en kommando til et program som ikke skal gjøre annet enn å avslutte med en feil. Det er følgesvennen til /bin/true
. Begge disse er veldig gamle og standard POSIX-verktøy og gir heller ikke noe output per definisjon.true brukes noen ganger for et skallskript som 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 spesielt designet for erstatte et skall og produserer utdata som klager på at du ikke kan logge på. Før det eksisterte, var det vanlig å bruke /bin/false
for dummybrukere, men det kan være forvirrende siden brukeren ikke «t vet hvorfor de «startet.»
Kommentarer
- verdt å merke seg at
/bin/true
og/bin/false
er ikke alltid det du får i et skallskript. Izsh
true
ogfalse
er innebygde, derbash
bruker/bin/*
versjoner
Svar
På maskinen min viser nologin
alltid den samme meldingen, på engelsk, og ignorerer argumenter . /bin/false
svarer på --version
og --help
på språket angitt av $LC_CTYPE
. Bortsett fra disse kosmetiske forskjellene, har de samme effekt.
Brukervennlig, nologin
er bedre hvis det brukes på kontoen til en ekte person som snakker engelsk. Sikkerhetsmessig er det ingen forskjell.
Kommentarer
- virker som
false
er mer for systemkontoer som ikke har noen reell bruker, ognologin
er for deaktiverte kontoer. - Hva er operativsystemet ditt? Centos
nologin
-versjonen tar ingen argumenter, men kan lese melding fra/etc/nologin.txt
.
Svar
På linux kommer /sbin/nologin
fra util-linux -prosjektet, mens /bin/false
er en del av GNU Coreutils . De har forskjellige roller, og nologin har muligheten til å skrive ut en melding for folk som har det som skallet deres som logger på. Linux-kommandoene kommer fra BS D, hvor de ser ut til å ha en lang historie med å være forskjellige. FreeBSD false
returnerer ganske enkelt 1 , mens nologin
sjekker til sørg for at den «s kjører på en TTY og sender en melding til syslog under påloggingsforsøk. Linux-versjonene er litt mer kompliserte (false
gjør alle mulige morsomme ting med internasjonalisering for produksjonen av –help antar jeg), men utfører egentlig på samme måte.
Svar
/ bin / false eneste jobb er å avslutte med en utgangskode som ikke er null.
Prøv den på kommandolinjen:
$:> /bin/false $:> echo $? 1 $:>
Noen institusjoner bruker / bin / false i skallfeltet i passordfilen. Hvis brukeren prøver å logge inn, er skallet / bin / false, så de avsluttes med en gang
Svar
De kan være det samme programmet, men de har forskjellige betydninger. Programmets navn forteller alt.
- / bin / false er ment å gi en falsk verdi kjøres som program.
- / bin / nologin er ment å indikere til brukeren at ingen innlogging er tillatt for en konto. (Det brukes et påloggingsskall.)
Svar
Begge gjør mer eller mindre den samme jobben, men /bin/false
er nyttig for ikke-privilegerte brukere. På den annen side er /sbin/nologin
for privilegerte brukere.
Kommentarer
- Å, hvordan gjorde du komme til den konklusjonen?
- Sannsynligvis har han sett på
/etc/passwd
. Jeg så bare på/etc/passwd
av en nyinstallert Debian-strekning. I denne boksen har nesten alle systemkontoer (bruker-ID < 1000)/usr/sbin/nologin
som skall, med noen få unntak. Vær oppmerksom på at jeg ikke er enig med @pythondetective ‘ s svar. Jeg spekulerer bare i hva som kan ha ført ham til denne konklusjonen. Kommentaren min er imidlertid litt sen. - nei! standard påloggingsskall er ikke det samme som privilegier.