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
- Viz také Slouží / usr / sbin / nologin jako přihlašovací shell k bezpečnostním účelům?
- Jsem ‚ zvědavý why / bin / false takes 21k of code to return a “ 1 “ return code! (a / sbin / nologin trvá pouze 4,7 kB)
- užitečné ke čtení. Jaký je rozdíl mezi / sbin / nologin a / bin / false
- @MarkStewart Trochu pozdě, ale možná si budete chtít přečíst Proč jsou pravdivé a nepravdivé tak velké? a Výukový program Whirlwind pro vytváření skutečně spustitelných spustitelných souborů ELF pro Linux .
- @nxnev Ano, nemyslel jsem ‚ na režii ELF. A z mých starých IBM dnů existoval program IEFBR14, který byl jednoduchou instrukcí pro sestavení op-kódu: BR 14 – Branch to register 14, který by ukončil program s návratovým kódem nastaveným na cokoli, co bylo v registru 14!
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/nologinpro 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.txtvlastní 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/truea/bin/falsenejsou vždy to, co ve skořápkovém skriptu získáte. Vzshtrueafalsejsou vestavěné moduly, kdebashpouží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
falseje více pro systémové účty, které nemají skutečného uživatele, anologinje pro zakázané účty. - Jaký je váš operační systém? Centos
nologinverze 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/nologinshell, 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í.