Wyłącz logowanie użytkownika bez wyłączania konta

87

Załóżmy, że tworzę użytkownika o nazwie „fałszywy” za pomocą adduserpolecenia. Jak mogę się upewnić, że ten użytkownik NIE będzie realną opcją logowania, bez wyłączania konta. Krótko mówiąc, chcę, aby konto było dostępne za pośrednictwem su - bogus, ale nie chcę, aby było dostępne za pośrednictwem zwykłego monitu logowania.

Rozglądając się, wydaje się, że muszę wyłączyć hasło tego użytkownika, ale robienie tego passwd -d bogusnie pomogło. W rzeczywistości pogorszyło to sytuację, ponieważ mogłem teraz zalogować się do fałszywego bez wpisywania hasła.

Czy istnieje sposób, aby wyłączyć regularne logowanie dla danego konta?

Uwaga: Dla jasności wiem, jak usunąć użytkownika z opcji menu graficznych ekranów logowania, takich jak gdm, ale te metody po prostu ukrywają konto bez wyłączania logowania. Szukam sposobu na całkowite wyłączenie regularnego logowania, w tym tryb tekstowy.

Malabarba
źródło
2
Twoje -djest flagą do usunięcia hasła. Różni się to od wyłączenia (nazywane blokowaniem, patrz odpowiedź Chada).
Caleb
1
Prawdopodobnie chcesz je całkowicie wyłączyć: unix.stackexchange.com/questions/7690/… Zobacz także pytanie Zadaj pytanie Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Odpowiedzi:

102
passwd -l user

jest tym, czego chcesz.

To zablokuje konto użytkownika. Ale nadal będziesz w stanie

su - user

ale będziesz musiał su - userjako root.

Alternatywnie możesz to zrobić !, przygotowując hasło użytkownika w /etc/shadow(to wszystko passwd -ldzieje się za kulisami). I passwd -ucofnę to.

Chad Feller
źródło
27
Korzystając z tej passwd -lopcji, należy pamiętać, że użytkownik może zalogować się przy użyciu innego tokena uwierzytelniającego (np. Klucza SSH).
pl1nk
2
Proszę zobaczyć moją odpowiedź poniżej na temat zalecanego rozwiązania tego, jak tego uniknąć.
Jörg Gottschlich
2
To nie działa na Ubuntu 16.04. Zmieni datę wygaśnięcia i nie pozwoli już na używanie użytkownika.
merlin,
1
Czy to to samo, co dana --disabled-passwordopcja adduser? Czy utworzenie użytkownika bez niego, --disabled-passworda następnie uruchomienie passwd -lna tym użytkowniku osiąga taki sam wynik, jak uruchomienie adduserz nim --disabled-passwordw pierwszej kolejności?
haridsv
39

Strona passwd(1)podręcznika użytkownika mówi o passwd -l:

Pamiętaj, że to nie wyłącza konta. Użytkownik może nadal być w stanie zalogować się przy użyciu innego tokena uwierzytelniającego (np. Klucza SSH). Aby wyłączyć konto, administratorzy powinni użyć usermod --expiredate 1 (ustawia to datę wygaśnięcia konta na 2 stycznia 1970).

Więc

usermod --expiredate 1 [LOGIN]

wydaje mi się, że to właściwy sposób na wyłączenie konta, z którego użytkownik nie powinien już korzystać (np. dlatego, że opuścił firmę).

Jörg Gottschlich
źródło
4
W moim CentOs 6.3 passwd -lblokuje sshpołączenie dla użytkownika i usermod --expiredate 1nie!
fduff,
1
W moim CentOS 7.4 passwd -lnie blokuje już sshpołączeń dla użytkownika i usermod --expiredate 1 userblokuje. Na man passwdmożesz także użyć chage -E 0 userdo zablokowania użytkownika. Po złożeniu wniosku usermodlub chagejestem w staniesudo su user
użytkownik12345
usermod --expiredate 0 [LOGIN]działa również, ustawia datę wygaśnięcia 1 stycznia 1970 r., a 1 ustawia ją na 2 stycznia 1970 r.
slm
„Nie należy używać wartości 0, ponieważ jest ona interpretowana jako konto bez wygaśnięcia lub jako wygaśnięcie 1 stycznia 1970 r.” - shadow (5)
Johannes
28

Istnieją dwie metody, aby uniemożliwić użytkownikowi logowanie się:

  1. możesz zablokować użytkownika poprzez edycję /etc/passwd
  2. bezpośrednio wydając passwdpolecenie za pomocą -lprzełącznika

W drugim przypadku użytkownik może zalogować się przy użyciu innego tokena uwierzytelniającego (np. Klucza SSH).

Metoda nr 1

  1. Znajdź gdzie jest nologin: / bin / nologin lub / bin / sbin / nologin
  2. Otwórz terminal i zaloguj się jako root
  3. Rodzaj vi /etc/passwd

Teraz jesteś w passwdpliku naciśnij, Insaby edytować plik.

Zmień poniższy wiersz z nologinopcją ( /bin/bashoznacza, że ​​użytkownik może się zalogować).

root:x:0:0:root:/root:/bin/bash

do tego. nologinoznacza, że ​​użytkownik nie może się zalogować.

root:x:0:0:root:/root:/bin/nologin

(lub za pomocą / bin / sbin / nologin)

  1. Zamknij vi Esc :wq

Metoda nr 2

Aby zablokować użytkownika: passwd -l username

Aby odblokować użytkownika: passwd -u username

Mansur Ul Hasan
źródło
1
W systemie Ubuntu 14.04 znalazłem /usr/sbin/nologinzamiast /bin/nologin.
Dennis Williamson
7

Jego dość łatwe zadanie polega na wprowadzeniu pewnych zmian w /etc/passwdpliku.

Po prostu musisz zmienić powłokę, która jest zazwyczaj domyślnie /bin/bashTj. Możesz się zalogować, używając tej powłoki, zmień ją na /bin/nologinlub /bin/false. Wskazane jest, aby to zmienić, /bin/nologinponieważ /bin/falsejest nieaktualne.

PRABHAT PARASHAR
źródło
4

Ustaw /bin/falsejako powłokę w/etc/passwd

danadam
źródło
18
Kiedy ustawia się powłokę /bin/false, zapobiega się używaniu su do działania jako ten użytkownik. Dodatkowo, użycie /bin/falsenie powoduje błędu ani żadnej innej wskazówki, co poszło nie tak - w przypadkach, gdy ktoś chce zapobiec użyciu nawet su do uzyskania powłoki jako ten użytkownik, należy zmienić powłokę na taką, /sbin/nologinktóra powoduje błąd.
HedgeMage
8
Nie, sunadal jest możliwe dla użytkowników z /bin/falsemuszli w passwd- wystarczy użyć opcji --shell: su - --shell /bin/sh bogus.
Matej Kovac
1
/usr/sbin/nologinma taki sam efekt jak /bin/false, ale pokazuje również przydatny komunikat informacyjny.
Rörd
0

Gdy blokujemy użytkownika za pomocą passwd -l userpolecenia, !!w /etc/shadowpliku są wyświetlane „ ” . Ale nadal możemy przełączyć się na powłokę użytkownika z konta root, ale nie możemy przełączyć się na konto użytkownika przez zwykłą powłokę logowania użytkownika.

Możemy również wyłączyć konto, podając /bin/nologinlub wprowadzając /bin/falsedo /etc/passwdpliku. Dlatego użytkownik może nie być w stanie się zalogować.

Sushil Musande
źródło
-1

Możesz użyć polecenia

usermod -s /sbin/nologin username
Przedstaw Richard Chigonera
źródło