Jaka jest ' różnica między / sbin / nologin i / bin / false

Technicznie, chyba że pam jest skonfigurowany do sprawdzania powłoki za pomocą pam_shells, żadne z nich nie może uniemożliwić logowania, jeśli nie jesteś w powłoce. W moim systemie mają nawet różne rozmiary, więc podejrzewam, że faktycznie coś robią. Więc 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 

Komentarze

Odpowiedź

Kiedy /sbin/nologin jest ustawiony jako powłoka, jeśli użytkownik po zalogowaniu się powłoki otrzymają uprzejmą wiadomość „To konto jest obecnie niedostępne”. Ta wiadomość może być zmieniona za pomocą pliku /etc/nologin.txt.

/bin/false to po prostu plik binarny, który natychmiast kończy pracę, zwracając fałsz po wywołaniu, więc gdy ktoś, kto ma false jako dzienniki powłoki in, „zostają natychmiast wylogowani, gdy false wychodzi. Ustawienie powłoki na /bin/true ma taki sam efekt, że nie pozwala komuś się zalogować ale false jest prawdopodobnie używany jako konwencja w stosunku do true, ponieważ jest znacznie lepszy a t przekazuje koncepcję, że osoba nie ma powłoki.

Patrząc na stronę podręcznika nologin, mówi, że została utworzona w 4.4 BSD (wczesne lata 90. ), więc nastąpiło to długo po utworzeniu false. Użycie false jako powłoki jest prawdopodobnie tylko konwencją przeniesioną z wczesnych dni systemu UNIX.

nologin jest opcją bardziej przyjazną dla użytkownika, z możliwością dostosowania komunikatu do użytkownika próbującego się zalogować, więc teoretycznie chciałbyś go użyć; ale zarówno nologin, jak i false będą miały taki sam efekt końcowy, że ktoś nie będzie miał powłoki i nie będzie mógł połączyć się przez ssh.

Komentarze

  • /usr/sbin/nologin dla dystrybucji opartych na Debianie.
  • Przynajmniej implementacja BSD również rejestruje logowanie próbuje przeprowadzić syslog, jak widać na opensource.apple.com/source/system_cmds/system_cmds-735/… , mając na uwadze, że / bin / false nie ' nie rejestruje niczego
  • TO – to niesamowita odpowiedź, z przedstawioną tutaj wspaniałą historią. Dobra robota Mark!
  • /etc/nologin.txt funkcja wiadomości niestandardowych nie jest dostępna w Ubuntu.

Odpowiedź

Niektóre serwery FTP umożliwiają dostęp do FTP tylko wtedy, gdy masz poprawną powłokę. /sbin/nologin jest uważany za prawidłową powłokę, podczas gdy /bin/false nie jest.

(Myślę, że „prawidłowe” oznacza, że stan wyjścia to 0, ale /etc/shells również może do niego wejść, prawdopodobnie zależy to od systemu, oprogramowania FTP i konfiguracji).

Komentarze

  • tak, że ' jest prawdopodobnie częścią programu ftp używającego pam, a pam używającego pam_shells, które, jak powiedziałeś, sprawdza /etc/shells. Zgaduję … Mogę się mylić.
  • Właśnie sprawdziłem Ubuntu 8.04 i 14.04. Polecenie nologin kończy działanie ze statusem 1 podobnym do fałszu i żadne z wartości true, false ani nologin nie są zawarte w / etc / shells. Gdyby tak było, użytkownik mógłby użyć chsh, aby wybrać taką powłokę i zablokować sobie dostęp do swojego konta.

Odpowiedź

/bin/false to polecenie systemowe, które jest używane zawsze, gdy trzeba przekazać polecenie do programu, który powinien jedynie zakończyć działanie z błędem. Jest to dodatek do /bin/true. Oba są bardzo starymi i standardowymi narzędziami POSIX iz definicji nie generują żadnych wyników.Wartość true jest czasami używana dla skryptu powłoki, który powinien zapętlać się w nieskończoność, na przykład:

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

/usr/sbin/nologin jest specjalnie zaprojektowany, aby zamień powłokę i generuje komunikat, narzekając, że nie można się zalogować. Zanim to istniało, często używano /bin/false dla fałszywych użytkowników, ale mogło to być mylące, ponieważ użytkownik nie wiedzieć, dlaczego zostały „wyrzucone”.

Komentarze

  • warto zauważyć, że /bin/true i /bin/false nie zawsze są tym, co otrzymasz w skrypcie powłoki. W zsh true i false są wbudowane, gdzie bash używa /bin/* wersji

Odpowiedź

Na moim komputerze nologin wyświetla zawsze tę samą wiadomość w języku angielskim, ignorując argumenty . /bin/false odpowiada na --version i --help w języku wskazanym przez $LC_CTYPE. Poza tymi różnicami kosmetycznymi mają ten sam efekt.

Jeśli chodzi o użyteczność, nologin jest lepsze, jeśli jest używane na koncie prawdziwej osoby, mówi po angielsku. Pod względem bezpieczeństwa nie ma różnicy.

Komentarze

  • wygląda na to, że false jest bardziej dla kont systemowych, które nie mają prawdziwego użytkownika, a nologin jest dla kont wyłączonych.
  • Jaki jest Twój system operacyjny? Centos nologin wersja nie pobiera argumentów, ale może czytać wiadomość z /etc/nologin.txt.

Odpowiedz

W systemie Linux /sbin/nologin pochodzi z projektu util-linux , natomiast /bin/false jest częścią GNU Coreutils . Pełnią one różne role, a nologin ma możliwość wydrukowania wiadomości dla osób, które mają to jako ich powłoka, która się loguje. Polecenia linux pochodzą z BS D, gdzie wydają się mieć długą historię bycia innymi. FreeBSD false po prostu zwraca 1 , podczas gdy nologin sprawdza upewnij się, że „s działa na TTY i wysyła wiadomość do syslog podczas prób logowania. Wersje Linuksa są nieco bardziej skomplikowane (false robienie wszelkiego rodzaju zabawnych rzeczy z internacjonalizacją dla wyjścia –help, jak zakładam), ale zasadniczo działa w ten sam sposób.

Odpowiedź

/ bin / false jedynym zadaniem jest wyjście z niezerowym kodem zakończenia.

Spróbuj w wierszu poleceń:

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

Niektóre instytucje używają / bin / false w polu powłoki pliku z hasłami. Jeśli użytkownik próbuje się zalogować, powłoka to / bin / false, więc są one natychmiast zamykane.

Odpowiedź

Może to być ten sam program, ale mają różne znaczenia. Nazwa programu mówi wszystko.

  • / bin / false ma na celu zwrócenie fałszywej wartości jest uruchamiany jako program.
  • / bin / nologin ma na celu wskazanie użytkownikowi, że żadne logowanie na konto nie jest dozwolone. (Używa się powłoki logowania.)

Odpowiedź

Obie wykonują mniej więcej to samo zadanie, ale /bin/false jest przydatny dla nieuprzywilejowanych użytkowników. Z drugiej strony, /sbin/nologin jest dla uprzywilejowanych użytkowników.

Komentarze

  • Och, jak to się stało doszedł do takiego wniosku?
  • Prawdopodobnie zajrzał do /etc/passwd. Właśnie rzuciłem okiem na /etc/passwd świeżo zainstalowanego stretch Debiana. W tym oknie prawie wszystkie konta systemowe (identyfikatory użytkowników < 1000) mają /usr/sbin/nologin jako powłokę, z kilkoma wyjątkami. Pamiętaj, że nie zgadzam się z odpowiedzią @pythondetective '. Zastanawiam się tylko, co mogło doprowadzić go do takiego wniosku. Mój komentarz jest jednak trochę spóźniony.
  • nie! domyślna powłoka logowania to nie to samo, co uprawnienia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *