Technicznie, chyba że pam
jest skonfigurowany do sprawdzania powłoki, pam_shells
żadna z nich nie może faktycznie uniemożliwić zalogowania się, jeśli nie jesteś w powłoce. W moim systemie mają nawet różne rozmiary, więc podejrzewam, że faktycznie coś robią. Jaka jest różnica? dlaczego oboje istnieją? Dlaczego miałbym używać jednego nad drugim?
-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
/bin/false
powinna istnieć wszędzie, ale nie/sbin/nologin
: '/ sbin / nologin': Brak takiego pliku lub katalogu. Wiesz, dlaczego tak jest/usr/sbin/nologin
zamiast/sbin/nologin
Debiana i Ubuntu?Odpowiedzi:
Gdy
/sbin/nologin
jest ustawiony jako powłoka, jeśli użytkownik z tą powłoką zaloguje się, otrzyma uprzejmą wiadomość „To konto jest obecnie niedostępne”. Ten komunikat można zmienić za pomocą pliku/etc/nologin.txt
./bin/false
jest tylko plikiem binarnym, który natychmiast kończy działanie, zwracając wartość false, gdy jest wywoływany, więc gdy ktoś, kto mafalse
powłokę, loguje się, jest natychmiast wylogowywany pofalse
wyjściu. Ustawienie powłoki/bin/true
ma taki sam efekt, że nie pozwala komuś się zalogować, alefalse
prawdopodobnie jest używane jako konwencja,true
ponieważ znacznie lepiej jest przekazać pojęcie, że dana osoba nie ma powłoki.Patrząc na
nologin
stronę manuala, napisano, że została stworzona w 4.4 BSD (wczesne lata 90.), więc przyszła długo pofalse
jej stworzeniu. Użyciefalse
jako powłoki jest prawdopodobnie tylko konwencją przeniesioną z początków UNIX-a.nologin
jest opcją bardziej przyjazną dla użytkownika, z dostosowywalnym komunikatem dla użytkownika próbującego się zalogować, więc teoretycznie chcesz z niego skorzystać; ale obanologin
ifalse
będzie miał taki sam wynik końcowy ktoś nie mający powłokę i nie jest w stanie w ssh.źródło
/usr/sbin/nologin
dla dystrybucji opartych na Debianie.Niektóre serwery FTP umożliwiają dostęp do FTP tylko wtedy, gdy masz prawidłową powłokę.
/sbin/nologin
jest uważany za prawidłową powłokę, podczas gdy/bin/false
nie jest.(Myślę, że „prawidłowy” oznacza, że jego kod zakończenia wynosi 0, ale
/etc/shells
może również do niego wejść, prawdopodobnie zależy od systemu, oprogramowania FTP i konfiguracji).źródło
/etc/shells
. Tylko zgadnij ... Mogę się mylić./bin/false
to komenda systemowa, która jest używana w dowolnym momencie, gdy trzeba przekazać komendę do programu, który nie powinien nic więcej robić poza wyjściem z błędem. Jest towarzyszem/bin/true
. Oba są bardzo starymi i standardowymi narzędziami POSIX i żadne z nich z definicji nie generuje danych wyjściowych. prawda jest czasem używana w skrypcie powłoki, który powinien zapętlać się w nieskończoność, na przykład:/usr/sbin/nologin
jest specjalnie zaprojektowany, aby zastąpić powłokę i generuje dane wyjściowe, na które nie można się zalogować. Zanim to istniało, było powszechnie używane/bin/false
dla fałszywych użytkowników, ale może być mylące, ponieważ użytkownik nie wie, dlaczego zostali wyrzuceni.źródło
/bin/true
i/bin/false
nie zawsze są to, co dostaniesz w skrypcie powłoki. Wzsh
true
ifalse
są wbudowane, w którychbash
używa/bin/*
wersjiNa moim komputerze
nologin
wyświetla zawsze ten sam komunikat po angielsku, ignorując argumenty./bin/false
odpowiada--version
i--help
w języku wskazanym przez$LC_CTYPE
. Oprócz tych różnic kosmetycznych mają one ten sam efekt.Pod względem użyteczności
nologin
jest lepszy, jeśli jest używany na konto prawdziwej osoby, która mówi po angielsku. Ze względów bezpieczeństwa nie ma różnicy.źródło
false
bardziej dotyczy kont systemowych, które nie mają prawdziwego użytkownika, inologin
dotyczy kont wyłączonych.nologin
Wersja Centos nie przyjmuje żadnych argumentów, ale może odczytać wiadomość/etc/nologin.txt
.Zadaniem tylko / bin / false jest wyjście z niezerowym kodem wyjścia.
Wypróbuj w wierszu poleceń:
Niektóre instytucje używają / bin / false w polu powłoki pliku hasła. Jeśli użytkownik spróbuje się zalogować, powłoka to / bin / false, więc są natychmiast usuwane
źródło
Na Linuksie
/sbin/nologin
pochodzi z projektu util-linux , a/bin/false
jest częścią GNU Coreutils . Służą one różnym rolom, a nologin ma opcję wydrukowania wiadomości dla osób, które logują się w jej powłoce. Komendy linux pochodzą z BSD, gdzie wydaje się, że ich historia jest inna. FreeBSDfalse
po prostu zwraca 1 , podczas gdynologin
sprawdza, czy działa na TTY i wysyła komunikat do syslog podczas prób logowania. Wersje linuksowe są nieco bardziej skomplikowane (false
zakładam, że robię różne zabawy z internacjonalizacją dla wyjścia --help, jak sądzę), ale zasadniczo działają w ten sam sposób.źródło
Mogą być tym samym programem, ale mają różne znaczenia. Nazwa programu mówi wszystko.
źródło
Oba wykonują mniej więcej tę samą pracę, ale
/bin/false
są przydatne dla użytkowników nieuprzywilejowanych. Z drugiej strony/sbin/nologin
jest dla uprzywilejowanych użytkowników.źródło
/etc/passwd
. Właśnie obejrzałem/etc/passwd
świeżo zainstalowany odcinek Debiana. W tym polu prawie wszystkie konta systemowe (identyfikatory użytkowników <1000) mają/usr/sbin/nologin
powłokę, z kilkoma wyjątkami. Pamiętaj, że nie zgadzam się z odpowiedzią @ pythondetective. Właśnie spekuluję, co mogło doprowadzić go do tego wniosku. Mój komentarz jest jednak trochę spóźniony.