Jak całkowicie wyłączyć konto? passwd -l
nie pozwoli nikomu zalogować się na konto za pomocą hasła, ale nadal możesz logować się za pomocą kluczy prywatnych / publicznych. Jak całkowicie wyłączyć konto? Jako poprawkę zmieniłem nazwę pliku na authorized_keys_lockme
. Czy jest inny sposób?
users
account-restrictions
Braiam
źródło
źródło
Odpowiedzi:
Prawidłowy sposób według
usermod(8)
to:(W rzeczywistości argumentem
--expiredate
może być dowolna data przed bieżącą datą w formacieYYYY-MM-DD
.)Wyjaśnienie:
--lock
blokuje hasło użytkownika. Jednak logowanie przy użyciu innych metod (np. Klucza publicznego) jest nadal możliwe.--expiredate YYYY-MM-DD
wyłącza konto w określonym dniu. Wedługman shadow 5
1970-01-01 jest niejednoznaczną wartością i nie należy jej używać.Przetestowałem to na moim komputerze. Po wykonaniu tego polecenia nie jest możliwe logowanie za pomocą hasła ani klucza publicznego.
Aby ponownie włączyć konto w późniejszym terminie, możesz uruchomić:
źródło
usermod --unlock --expiredate '' username
to, że to zrobi.usermod
mówi:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
--expiredate 1
nie wystarczy?sudo su username
wydaje się, że działa przy użyciu innego konta.Zablokuj hasło i zmień powłokę na
/bin/nologin
.(Lub bardziej zwięźle
sudo usermod -L -s /bin/nologin username
.)źródło
ssh username@hostname /bin/bash
wyświetli monit bash, niezależnie od domyślnej powłoki.sudo chsh -s /bin/nologin
byłoby lepsze niż/etc/passwd
ręczne edytowanie . Również w niektórych systemach jest to/sbin/nologin
.Oto kolejny prosty sposób. Możesz ustawić wygasłe konto użytkownika. Zapobiegnie to logowaniu do konta zarówno za pomocą hasła, jak i klucza ssh, ale nie będzie dotykać hasła.
Aby zablokować konto:
Konto użytkownika „nazwa użytkownika” zostanie zablokowane w systemie. Aby ponownie włączyć konto użytkownika, wykonaj następujące czynności.
Aby odblokować konto:
Konto użytkownika „nazwa użytkownika” zostanie ponownie włączone w systemie za pomocą tego samego hasła, co poprzednio. Plik binarny „chage” jest częścią pakietu shadow-utils w systemie Red Hat Linux lub pakietu passwd w systemie Debian Linux.
źródło
Nie mam wystarczającego przedstawiciela, aby skomentować odpowiedź Legate, ale chciałem się podzielić, że ta odpowiedź pomogła nam w innym przypadku użycia:
1.) konto, o którym mowa, to konto usługi lokalnej działające na aplikacji, a nie konto użytkownika końcowego.
2.) użytkownicy końcowi ssh jako sami oraz
sudo /bin/su <user>
aby zostać użytkownikiem i administrować aplikacją z powodu wymogu ścieżki audytu, że konto usługi nie może mieć możliwości bezpośredniego logowania.3.) konto usługi musi mieć poprawną powłokę (
/bin/bash
, nie/sbin/nologin
), ponieważ platforma planowania przedsiębiorstwa (agent działa lokalnie jako root) musi mieć możliwość pełnienia powłokisu - <user>
i nie masu -s /bin/bash <user>
możliwości działania takiej powłoki i jest potrzebna do zdalnego uruchamiania zadań dla większych operacji wsadowych, które obejmują wiele serwerów i baz danych.Więc ...
passwd -l <user>
Nie spełnia ograniczeń, ponieważ uwierzytelnianie za pomocą klucza publicznego omija PAM i nadal umożliwia bezpośrednie logowanie.
usermod -s /sbin/nologin <user>
Nie spełnia ograniczeń, ponieważ psuje harmonogram w przedsiębiorstwie
usermod --lock --expiredate 1970-01-01 <user>
To jest nasz zwycięzca. Zdalne logowanie wyłączone, ale root może nadal
su <user>
, podobnie jak inni użytkownicy, dziękisudo
czemu harmonogram działa poprawnie, a autoryzowani użytkownicy końcowi mogą w razie potrzeby zostać docelowymi kontami usług.Dziękuję za rozwiązanie!
źródło
Aby całkowicie usunąć, użyj
userdel
.Należy pamiętać, że jeśli usuniesz konto, istnieje ryzyko, że jego identyfikator użytkownika nadal będzie gdzieś używany w systemie plików, a nowy użytkownik odziedziczy własność tych plików, jeśli będzie pod tym samym identyfikatorem użytkownika.
Chcesz zmienić właściciela wszelkich plików, które są własnością usuniętego użytkownika.
Jeśli chcesz później dodać użytkownika z powrotem, zapisz jego wiersze z
/etc/passwd
(i w systemie Solaris/etc/shadow
) w plikach tymczasowych, takich jak/etc/passwd_deleted
.W ten sposób, gdy dodasz go ponownie, możesz użyć tego samego identyfikatora użytkownika i tego samego hasła (które jest szyfrowane w jednym z powyższych plików)
Oświadczenie: Nauczyłem się systemu UNIX na własną rękę, więc nie zdziwiłbym się, gdyby istniał lepszy sposób na tymczasowe wyłączenie użytkownika. W rzeczywistości nawet nie wiem o jakich kluczach prywatnych / publicznych mówisz. Jestem też pewien, że istnieje
find
polecenie, którego można użyć do wyszukiwania plików za pomocą identyfikatora użytkownika tego właścicielaźródło
Czy ktoś próbował to zrobić za pośrednictwem ssh_config? Może to może pomóc http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86
źródło