Vad ' är skillnaden mellan / sbin / nologin och / bin / false

Tekniskt, såvida inte pam är inställt för att kontrollera ditt skal med pam_shells ingen av dessa kan faktiskt förhindra din inloggning, om du inte är på skalet. På mitt system de har till och med olika storlekar, så jag misstänker att de faktiskt gör något. Så vad är skillnaden? varför finns de båda? Varför skulle jag använda varandra?

-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 är inställt som skal, om användaren när skalet loggar in kommer de att få ett artigt meddelande som säger ”Detta konto är för närvarande inte tillgängligt.” Detta meddelande kan ändras med filen /etc/nologin.txt.

/bin/false är bara en binär som omedelbart går ut och returnerar falsk när den kallas, så när någon som har false som skalloggar in loggas de omedelbart ut när false avslutas. Om du ställer in skalet på /bin/true har samma effekt att ingen tillåter att logga in men false används antagligen som en konvention över true eftersom det är mycket bättre a t förmedlar konceptet att personen inte har ett skal.

Om man tittar på nologin s mansida, står det att den skapades i 4.4 BSD (tidigt 1990-tal ) så det kom långt efter att false skapades. Användningen av false som skal är förmodligen bara en konvention som överförs från de tidiga dagarna av UNIX.

nologin är det mer användarvänliga alternativet, med ett anpassningsbart meddelande som ges till användaren som försöker logga in, så du skulle teoretiskt vilja använda det; men både nologin och false får samma slutresultat av att någon inte har ett skal och inte kan ssh in.

Kommentarer

  • /usr/sbin/nologin för Debian-baserade distributioner.
  • Åtminstone loggar BSD-implementering också inloggningen försöker syslog som visas i opensource.apple.com/source/system_cmds/system_cmds-735/… , medan / bin / false inte skulle ’ inte logga något
  • DETTA – Är ett fantastiskt svar med stor historia som presenteras här. Bra gjort Mark!
  • /etc/nologin.txt anpassade meddelandefunktioner är inte tillgängliga i Ubuntu.

Svar

Vissa FTP-servrar tillåter bara FTP-åtkomst om du har ett giltigt skal. /sbin/nologin betraktas som ett giltigt skal, medan /bin/false inte är det.

(jag tror ”giltig” betyder dess exit status är 0, men /etc/shells kan också komma in i det, det beror förmodligen på systemet, FTP-programvaran och din konfiguration.)

Kommentarer

  • ja, att ’ är förmodligen en del av ftp-programmet med pam, och pam med pam_shells som som du sa kontrollerar /etc/shells. Bara en gissning … Jag kan ha fel.
  • Jag kollade bara både Ubuntu 8.04 och 14.04. Kommandot nologin avslutas med status 1 som falsk, och inget av sant, falskt eller nologin ingår i / etc / skal. Om så var fallet kunde en användare använda chsh för att välja ett sådant skal och låsa sig utanför sitt konto.

Svar

/bin/false är ett systemkommando som används när som helst du behöver skicka ett kommando till ett program som inte skulle göra mer än att avsluta med ett fel. Det är följeslagaren till /bin/true. Båda dessa är väldigt gamla och vanliga POSIX-verktyg och ger ingen definition per definition.true används ibland för ett skalskript som ska slinga på obestämd tid, som:

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

/usr/sbin/nologin är särskilt utformad för byt ut ett skal och producerar utdata som klagar på att du inte kan logga in. Innan det fanns var det vanligt att använda /bin/false för dummyanvändare, men det kan vara förvirrande eftersom användaren inte t vet varför de ”startade igen.

Kommentarer

  • värt att notera att /bin/true och /bin/false är inte alltid vad du får i ett skalskript. I zsh true och false är inbyggda, där bash använder /bin/* versionerna

Svar

På min maskin visar nologin alltid samma meddelande, på engelska, och ignorerar argument . /bin/false svarar på --version och --help på det språk som indikeras av $LC_CTYPE. Förutom dessa kosmetiska skillnader har de samma effekt.

Användbarhetsmässigt, nologin är bättre om det används för en verklig person som talar engelska. Säkerhetsmässigt är det ingen skillnad.

Kommentarer

  • verkar som false är mer för systemkonton som inte har någon riktig användare, och nologin är för inaktiverade konton.
  • Vad är ditt operativsystem? Centos nologin -versionen tar inga argument, men kan läsa meddelanden från /etc/nologin.txt.

Svar

På linux kommer /sbin/nologin från util-linux -projektet, medan /bin/false är en del av GNU Coreutils . De har olika roller och nologin har möjlighet att skriva ut ett meddelande för personer som har det som deras skal som loggar in. Linux-kommandona kommer från BS D, där de verkar ha en lång historia av att vara annorlunda. FreeBSD false returnerar helt enkelt 1 , medan nologin kontrollerar till se till att det ”s körs på en TTY och skickar ett meddelande till syslog under inloggningsförsök. Linuxversionerna är lite mer komplicerade (false gör alla möjliga roliga saker med internationalisering för produktionen av –hjälp, antar jag) men utför i princip samma sätt.

Svar

/ bin / false jobbet är att avsluta med en utgångskod som inte är noll.

Prova på kommandoraden:

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

Vissa institutioner använder / bin / false i skalfältet i lösenordsfilen. Om användaren försöker logga in är shell / bin / false, så de avslutas genast

Svar

De kan vara samma program, men de har olika betydelser. Programmets namn berättar allt.

  • / bin / false är avsett att returnera ett falskt värde körs som program.
  • / bin / nologin är avsett att indikera för användaren att ingen inloggning är tillåten för ett konto. (Det används ett inloggningsskal.)

Svar

Båda gör mer eller mindre samma jobb men /bin/false är användbart för icke-privilegierade användare. Å andra sidan är /sbin/nologin för privilegierade användare.

Kommentarer

  • Åh, hur gjorde du komma till den slutsatsen?
  • Förmodligen har han tittat på /etc/passwd. Jag tittade precis på /etc/passwd av en nyligen installerad Debian-sträcka. I den här rutan har nästan alla systemkonton (användar-id < 1000) /usr/sbin/nologin som skal, med några få undantag. Observera att jag inte håller med @pythondetective ’ s svar. Jag spekulerar bara i vad som kan ha lett honom till denna slutsats. Min kommentar är dock lite sen.
  • nej! standardinloggningsskalet är inte detsamma som behörigheter.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *