Technisch gezien, tenzij pam
is ingesteld om je shell te controleren met pam_shells
geen van beide kan je login verhinderen, als je niet in de shell zit. Op mijn systeem ze hebben zelfs verschillende maten, dus ik vermoed dat ze echt iets doen. Dus wat is het verschil? waarom bestaan ze allebei? Waarom zou ik de ene boven de andere gebruiken?
-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
Reacties
- Zie ook Heeft / usr / sbin / nologin als login-shell een beveiligingsdoel?
- Ik ‘ ben nieuwsgierig waarom / bin / false 21k code nodig heeft om een ” 1 ” retourcode terug te geven! (en / sbin / nologin kost slechts 4.7k)
- handig om te lezen. Wat is het verschil tussen / sbin / nologin en / bin / false
- @MarkStewart Een beetje te laat, maar misschien wil je nog lezen Waarom zijn true en false zo groot? en Een wervelende tutorial over het maken van echt Teensy ELF-uitvoerbare bestanden voor Linux .
- @nxnev Ja, ‘ dacht niet aan de overhead van ELF. En vanaf mijn oude IBM-dagen was er een programma IEFBR14 dat een simpele op-code montage-instructie was: BR 14 – Branch to register 14, die het programma zou beëindigen met de retourcode ingesteld op wat zich in register 14 bevond!
Antwoord
Wanneer /sbin/nologin
is ingesteld als de shell, als gebruiker wanneer die shell inlogt, krijgen ze een beleefd bericht met de mededeling “Dit account is momenteel niet beschikbaar”. Dit bericht kan worden gewijzigd met het bestand /etc/nologin.txt
.
/bin/false
is slechts een binair bestand dat onmiddellijk wordt afgesloten en false retourneert wanneer het wordt aangeroepen, dus wanneer iemand false
als shell-logs heeft in, worden ze “onmiddellijk uitgelogd wanneer false
wordt afgesloten. Het instellen van de shell op /bin/true
heeft hetzelfde effect als iemand niet toestaan om in te loggen maar false
wordt waarschijnlijk gebruikt als conventie boven true
omdat het veel beter is een t overbrengen van het concept dat die persoon geen shell heeft.
Kijkend naar de man-pagina van nologin
“, staat er dat deze is gemaakt in 4.4 BSD (begin jaren 90 ) dus het kwam lang nadat false
was gemaakt. Het gebruik van false
als een shell is waarschijnlijk slechts een conventie die is overgenomen uit de begintijd van UNIX.
nologin
is de meer gebruikersvriendelijke optie, met een aanpasbaar bericht dat wordt gegeven aan de gebruiker die probeert in te loggen, dus u zou dat theoretisch willen gebruiken; maar beide nologin
en false
zullen hetzelfde eindresultaat hebben dat iemand geen shell heeft en niet in staat is om in te sshen.
Reacties
-
/usr/sbin/nologin
voor op Debian gebaseerde distributies. - Ten minste BSD-implementatie logt ook de login pogingen om syslog te maken zoals gezien in opensource.apple.com/source/system_cmds/system_cmds-735/… , terwijl / bin / false n ‘ niets zou loggen
- DIT – Is een geweldig antwoord, met een geweldige geschiedenis die hier wordt gepresenteerd. Goed gedaan Mark!
- De
/etc/nologin.txt
aangepaste berichtfunctie is niet beschikbaar in Ubuntu.
Antwoord
Sommige FTP-servers staan je alleen FTP-toegang toe als je een geldige shell hebt. /sbin/nologin
wordt beschouwd als een geldige shell, terwijl /bin/false
dat niet is.
(Ik denk dat “valid” exit-status is 0, maar /etc/shells
kan er ook in komen, dit hangt waarschijnlijk af van het systeem, de FTP-software en uw configuratie.)
Opmerkingen
- ja, dat ‘ maakt waarschijnlijk deel uit van het ftp-programma met pam, en pam met pam_shells die, zoals je zei,
/etc/shells
. Gewoon een gok … Ik zou het mis kunnen hebben. - Ik heb zojuist zowel Ubuntu 8.04 als 14.04 gecontroleerd. Het nologin-commando wordt afgesloten met status 1 vergelijkbaar met false, en geen van true, false of nologin is opgenomen in / etc / shells. Als dat het geval was, zou een gebruiker chsh kunnen gebruiken om zon shell te selecteren en zichzelf van zijn account af te sluiten.
Answer
/bin/false
is een systeemcommando dat wordt gebruikt wanneer je een commando moet doorgeven aan een programma dat niets anders zou moeten doen dan afsluiten met een fout. Het is de metgezel van /bin/true
. Beide zijn zeer oude en standaard POSIX-hulpprogrammas en produceren per definitie geen enkele uitvoer.true wordt soms gebruikt voor een shellscript dat voor onbepaalde tijd zou moeten doorlopen, zoals:
while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done
/usr/sbin/nologin
is specifiek ontworpen om vervangt een shell en produceert output die klaagt dat je niet kunt inloggen. Voordat het bestond, was het gebruikelijk om /bin/false
te gebruiken voor nepgebruikers, maar dit kan verwarrend zijn omdat de gebruiker niet weet waarom ze “zijn afgetrapt.
Reacties
- vermeldenswaard dat
/bin/true
en/bin/false
zijn niet altijd wat u in een shell-script krijgt. Inzsh
true
enfalse
zijn ingebouwde versies, waarbijbash
de/bin/*
versies
gebruikt
Answer
Op mijn computer geeft nologin
altijd hetzelfde bericht weer, in het Engels, argumenten negerend . /bin/false
reageert op --version
en --help
in de taal aangegeven door $LC_CTYPE
. Afgezien van deze cosmetische verschillen, hebben ze hetzelfde effect.
Wat de bruikbaarheid betreft, is nologin
beter als het wordt gebruikt voor het account van een echt persoon die spreekt Engels. Veiligheidstechnisch is er geen verschil.
Reacties
- lijkt misschien
false
is meer voor systeemaccounts die geen echte gebruiker hebben, ennologin
is voor uitgeschakelde accounts. - Wat is je besturingssysteem? Centos
nologin
versie accepteert geen argumenten, maar kan bericht lezen van/etc/nologin.txt
.
Antwoord
Op linux komt /sbin/nologin
van het util-linux project, terwijl /bin/false
maakt deel uit van GNU Coreutils . Ze vervullen verschillende rollen en nologin heeft de mogelijkheid om een bericht af te drukken voor mensen die het als hun shell die inloggen. De linux-commandos komen van BS D, waar ze een lange geschiedenis lijken te hebben van anders zijn. De FreeBSD false
retourneert gewoon 1 , terwijl de nologin
controleert op zorg ervoor dat “s draait op een TTY en een bericht naar syslog stuurt tijdens inlogpogingen. De linux-versies zijn iets gecompliceerder (false
allerlei leuke dingen doen met internationalisering voor de output van –help, neem ik aan) maar in wezen op dezelfde manier presteren.
Antwoord
/ bin / false enige taak is om af te sluiten met een niet-nul afsluitcode.
Probeer het op de opdrachtregel:
$:> /bin/false $:> echo $? 1 $:>
Sommige instellingen gebruiken / bin / false in het shell-veld van het wachtwoordbestand. Als de gebruiker probeert in te loggen, is de shell / bin / false, dus ze worden meteen afgesloten
Answer
Ze zouden hetzelfde programma kunnen zijn, maar ze hebben verschillende betekenissen. De naam van het programma zegt het allemaal.
- / bin / false is bedoeld om een false-waarde te retourneren wordt als programma uitgevoerd.
- / bin / nologin is bedoeld om de gebruiker aan te geven dat inloggen niet is toegestaan voor een account. (Het wordt gebruikt als een login-shell.)
Answer
Beiden doen min of meer hetzelfde werk, maar /bin/false
is handig voor niet-geprivilegieerde gebruikers. Aan de andere kant, /sbin/nologin
is voor geprivilegieerde gebruikers.
Reacties
- Oh, hoe heb je tot die conclusie komen?
- Waarschijnlijk heeft hij
/etc/passwd
onderzocht. Ik heb zojuist/etc/passwd
van een pas geïnstalleerde Debian-stretch bekeken. In dit vak hebben bijna alle systeemaccounts (gebruikers-IDs < 1000)/usr/sbin/nologin
als shell, met een paar uitzonderingen. Houd er rekening mee dat ik het niet eens ben met het antwoord van @pythondetective ‘. Ik speculeer slechts wat hem tot deze conclusie zou kunnen hebben geleid. Mijn opmerking is echter een beetje laat. - nee! standaard login shell is niet hetzelfde als privileges.