Jaký je ' rozdíl mezi / sbin / nologin a / bin / false

Technicky, pokud pam je nastaven tak, aby zkontroloval váš shell pomocí pam_shells ani jeden z nich nemůže ve skutečnosti zabránit vašemu přihlášení, pokud nejste v prostředí. V mém systému mají dokonce různé velikosti, takže mám podezření, že něco skutečně dělají. V čem je tedy rozdíl? proč oba existují? Proč bych měl používat jeden nad druhým?

-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 

Komentáře

Odpověď

Když je jako shell nastaven /sbin/nologin s tímto přihlášením do shellu „dostanou zdvořilou zprávu„ Tento účet není aktuálně k dispozici. “Tuto zprávu lze změnit pomocí souboru /etc/nologin.txt.

/bin/false je pouze binární soubor, který se okamžitě ukončí a vrátí hodnotu false, když se volá, takže když někdo, kdo má false jako protokoly prostředí dovnitř se okamžitě odhlásí, když false skončí. Nastavení prostředí na /bin/true má stejný účinek, že neumožňuje někomu se přihlásit ale false se pravděpodobně používá jako konvence nad true, protože je to mnohem lepší vyjadřuje koncept, že osoba nemá shell.

Při pohledu na manuálovou stránku nologin se říká, že byla vytvořena v 4.4 BSD (začátek 90. let ), takže to přišlo dlouho poté, co byl vytvořen false. Použití false jako shellu je pravděpodobně jen konvence přenesená z počátků systému UNIX.

nologin je uživatelsky přívětivější možnost s přizpůsobitelnou zprávou danou uživateli, který se pokouší přihlásit, takže byste ji teoreticky chtěli použít; ale nologin i false budou mít stejný konečný výsledek toho, že někdo nebude mít shell a nebude moci ssh dovnitř.

Komentáře

  • /usr/sbin/nologin pro distribuce založené na Debianu.
  • Přinejmenším se také přihlašuje implementace BSD pokusy o přihlášení k syslogu, jak je vidět v opensource.apple.com/source/system_cmds/system_cmds-735/… , vzhledem k tomu, že / bin / false by ‚ nic nezaznamenal
  • TOTO – je úžasná odpověď se skvělou historií, která je zde uvedena. Dobrá práce, Marku!
  • Funkce /etc/nologin.txt vlastní zprávy není v Ubuntu k dispozici.

Odpověď

Některé servery FTP vám umožní přístup FTP pouze v případě, že máte platný shell. /sbin/nologin je považován za platný shell, zatímco /bin/false není.

(Myslím, že „valid“ znamená jeho stav ukončení je 0, ale /etc/shells se do něj také může dostat, pravděpodobně to závisí na systému, softwaru FTP a vaší konfiguraci.)

Komentáře

  • ano, ‚ je pravděpodobně součástí programu ftp pomocí pam a pam pomocí pam_shells, které, jak jste řekli, kontrolují /etc/shells. Jen odhad … mohl bych se mýlit.
  • Právě jsem zkontroloval Ubuntu 8.04 i 14.04. Příkaz nologin končí se stavem 1 podobným false a žádný z true, false nebo nologin není zahrnut v / etc / shells. Pokud by byly, mohl by uživatel pomocí chsh vybrat takový shell a zamknout se ze svého účtu.

Odpovědět

/bin/false je systémový příkaz, který se používá kdykoli, když potřebujete předat příkaz programu, který by neměl dělat nic jiného než skončit s chybou. Je to společník /bin/true. Oba jsou velmi staré a standardní nástroje POSIX a podle definice nevytvářejí žádný výstup.true se někdy používá pro shell skript, který by měl smyčku neurčitě, například:

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

/usr/sbin/nologin je speciálně navržen tak, aby nahradit shell a vytvořit výstup, který si stěžuje, že se nemůžete přihlásit. Než existoval, bylo běžné používat /bin/false pro fiktivní uživatele, ale mohlo by to být matoucí, protože uživatel není vědět, proč jsou „znovu nastartováni.

Komentáře

  • stojí za zmínku, že /bin/true a /bin/false nejsou vždy to, co ve skořápkovém skriptu získáte. V zsh true a false jsou vestavěné moduly, kde bash používá /bin/* verze

Odpověď

Na mém počítači nologin zobrazuje vždy stejnou zprávu v angličtině, ignoruje argumenty . /bin/false odpovídá na --version a --help v jazyce označeném $LC_CTYPE. Kromě těchto kosmetických rozdílů mají stejný účinek.

Z hlediska použitelnosti je nologin lepší, pokud je používán na účet skutečné osoby, která mluví anglicky. Z hlediska bezpečnosti neexistuje žádný rozdíl.

Komentáře

  • se zdá být snad false je více pro systémové účty, které nemají skutečného uživatele, a nologin je pro zakázané účty.
  • Jaký je váš operační systém? Centos nologin verze nevyžaduje žádné argumenty, ale může číst zprávy z /etc/nologin.txt.

Odpovědět

V systému Linux pochází /sbin/nologin z projektu util-linux , zatímco /bin/false je součástí GNU Coreutils . Slouží různým rolím a nologin má možnost vytisknout zprávu pro lidi, kteří mají kteří se přihlašují. Jejich linuxové příkazy pocházejí z BS D, kde se zdá, že mají dlouhou historii odlišnosti. FreeBSD false jednoduše vrátí 1 , zatímco nologin zkontroluje na ujistěte se, že to „s běží na TTY a během pokusů o přihlášení pošle zprávu do syslogu. Verze linuxu jsou trochu komplikovanější (false dělá nejrůznější zábavné věci s internacionalizací pro výstup –help, předpokládám), ale v podstatě funguje stejným způsobem.

Odpovědět

/ bin / false only job is to exit with a non-zero exit code.

Zkuste to na příkazovém řádku:

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

Některé instituce používají / bin / false v poli shellu v souboru hesla. Pokud se uživatel pokusí přihlásit, shell je / bin / false, takže jsou okamžitě ukončeny

Odpověď

Mohli by to být stejný program, ale mají různé významy. Název programu říká všechno.

  • / bin / false má vrátit falešnou hodnotu je spuštěn jako program.
  • / bin / nologin má uživateli naznačit, že pro účet není povoleno žádné přihlášení. (Používá se přihlašovací shell.)

Odpověď

Oba plní víceméně stejnou práci, ale /bin/false je užitečné pro neprivilegované uživatele. Na druhou stranu /sbin/nologin je pro privilegované uživatele.

Komentáře

  • Ach, jak jste se dospěl k tomuto závěru?
  • Pravděpodobně se podíval na /etc/passwd. Právě jsem se podíval na /etc/passwd čerstvě nainstalovaného úseku Debianu. V tomto poli téměř všechny systémové účty (ID uživatelů < 1000) mají /usr/sbin/nologin shell, až na několik výjimek. Vezměte prosím na vědomí, že nesouhlasím s odpovědí @pythondetective ‚. Jen spekuluji, co ho k tomuto závěru mohlo vést. Můj komentář je ale trochu pozdě.
  • Ne! výchozí přihlašovací shell není stejný jako oprávnění.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *