Làm cách nào để tôi vô hiệu hóa hoàn toàn một tài khoản?


48

Làm cách nào để tôi vô hiệu hóa hoàn toàn một tài khoản? passwd -lsẽ không cho phép bất cứ ai đăng nhập vào tài khoản bằng mật khẩu nhưng bạn vẫn có thể đăng nhập thông qua khóa riêng / chung. Làm thế nào tôi có thể vô hiệu hóa hoàn toàn tài khoản? Như một quickfix tôi đã đổi tên tập tin thành authorized_keys_lockme. Có cách nào khác không?


3
Bạn có kế hoạch kích hoạt lại nó cuối cùng? Hệ thống khóa? Nếu không, tôi chỉ cần xóa tài khoản.
Ken

Câu trả lời:


59

Cách chính xác theo usermod(8):

usermod --lock --expiredate 1970-01-02 <username>

(Trên thực tế, đối số --expiredatecó thể là bất kỳ ngày nào trước ngày hiện tại ở định dạng YYYY-MM-DD.)


Giải trình:

  • --lockkhóa mật khẩu của người dùng. Tuy nhiên, đăng nhập bằng các phương thức khác (ví dụ: khóa công khai) vẫn có thể.

  • --expiredate YYYY-MM-DDvô hiệu hóa tài khoản vào ngày được chỉ định. Theo man shadow 51970-01-01 là một giá trị mơ hồ và sẽ không được sử dụng.

Tôi đã thử nghiệm điều này trên máy của tôi. Không thể đăng nhập bằng mật khẩu hoặc khóa công khai sau khi thực hiện lệnh này.


Để kích hoạt lại tài khoản vào một ngày sau đó, bạn có thể chạy:

usermod --unlock --expiredate '' <username>

7
Không sử dụng 1970-01-01 vì nó sẽ đặt / etc / bóng hết hạn trường thành 0. bóng (5) Không nên sử dụng giá trị 0 vì nó được hiểu là tài khoản không hết hạn hoặc hết hạn Ngày 1 tháng 1 năm 1970. Vui lòng sử dụng: usermod --lock - expiredate 1970/02/02 <tên người dùng>
Marcus Maxwell

4
Sẽ thật tuyệt nếu bạn cũng có thể cung cấp phương pháp để đảo ngược thao tác này. Hình như usermod --unlock --expiredate '' usernamesẽ làm được.
Bob

3
Thêm vào những gì @MarcusMaxwell đã viết: Trang dành cho người đàn ông usermodnói:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
Tại sao --expiredate 1không đủ tự nó?
Thomas Jensen

Nhưng sudo su usernamedường như làm việc bằng cách sử dụng một tài khoản khác.
xuhdev

10

Khóa mật khẩu và thay đổi vỏ thành /bin/nologin.

sudo usermod --lock --shell /bin/nologin username

(Hoặc chính xác hơn , sudo usermod -L -s /bin/nologin username.)


Làm thế nào để tôi 'thay đổi vỏ thành / bin / nologin.'?

5
@mattdm Đây không phải là một giải pháp hoàn chỉnh, vì người dùng vẫn có thể chỉ định một lệnh sẽ được thực thi. Ví dụ ssh username@hostname /bin/bashsẽ cung cấp cho người dùng một dấu nhắc bash, bất kể shell mặc định.
phunehehe

4
@phunehehe - bạn đã thử chưa? Trong nhật ký, bạn sẽ không nhận được "Người dùng [tên người dùng] vì shell / bin / nologin không tồn tại".
mattdm

2
Theo như tôi biết, hành vi vỏ không hợp lệ không thực sự được ghi lại. Mặt khác, trang người đàn ông nói rằng nếu mật khẩu là hàng đầu !! trên Linux, tài khoản sẽ được coi là bị khóa và điều đó không thực sự hoạt động. Vì vậy, dù sao, tài liệu và thực tế chỉ là những kết quả gần đúng. :)
mattdm

2
sudo chsh -s /bin/nologinsẽ tốt hơn là chỉnh sửa /etc/passwdbằng tay. Ngoài ra, trên một số hệ thống, nó /sbin/nologin.
Mikel

3

Đây là một cách đơn giản khác. Bạn có thể thiết lập tài khoản người dùng hết hạn. Điều này sẽ ngăn chặn cả thông tin đăng nhập dựa trên mật khẩu và ssh cho tài khoản, nhưng không chạm vào mật khẩu.

Để khóa tài khoản:

# chage -E 0 username

Tài khoản người dùng 'tên người dùng' sẽ bị khóa trên hệ thống. Để kích hoạt lại tài khoản người dùng, hãy làm như sau.

Để mở khóa tài khoản:

# chage -E -1 username

Tài khoản người dùng 'tên người dùng' sẽ được bật lại trên hệ thống của bạn với cùng mật khẩu như trước. Nhị phân 'chage' là một phần của gói Shadow-utils trên Red Hat Linux hoặc gói passwd trên Debian Linux.


3

Tôi không có đủ đại diện để nhận xét về câu trả lời của Legate, nhưng tôi muốn chia sẻ rằng câu trả lời này đã giúp chúng tôi với một trường hợp sử dụng khác:

1.) tài khoản được đề cập là tài khoản dịch vụ cục bộ đang chạy ứng dụng, không phải tài khoản người dùng cuối.

2.) người dùng cuối ssh in chính họ, và sudo /bin/su <user>để trở thành người dùng và quản trị ứng dụng do yêu cầu theo dõi kiểm toán mà tài khoản dịch vụ không thể có khả năng đăng nhập trực tiếp.

3.) tài khoản dịch vụ phải có một lớp vỏ hợp lệ ( /bin/bashkhông /sbin/nologin), bởi vì một Scheduling Platform Enterprise (đại lý chạy như là người chủ địa phương) phải có khả năng su - <user>và không có su -s /bin/bash <user>khả năng rằng một vỏ đầy đủ không, và là cần thiết để chạy các công việc từ xa cho các hoạt động hàng loạt lớn hơn bao gồm nhiều máy chủ và cơ sở dữ liệu.


Vì vậy, ...

passwd -l <user>
Không thỏa mãn các ràng buộc vì xác thực khóa chung bỏ qua PAM và vẫn cho phép đăng nhập trực tiếp.

usermod -s /sbin/nologin <user>
Không thỏa mãn các ràng buộc bởi vì trình lập lịch biểu doanh nghiệp

usermod --lock --expiredate 1970-01-01 <user>
Đây là người chiến thắng của chúng tôi. Đăng nhập từ xa bị vô hiệu hóa, nhưng root vẫn có thể su <user>, như những người dùng khác có thể thông qua sudođể các trình lập lịch hoạt động đúng và người dùng cuối được ủy quyền có thể trở thành tài khoản dịch vụ đích khi cần.

Cảm ơn bạn cho giải pháp!


1

Để xóa hoàn toàn nó sử dụng userdel.

Xin lưu ý rằng nếu bạn xóa một tài khoản, có nguy cơ ID người dùng của tài khoản đó sẽ vẫn được sử dụng trong hệ thống tệp ở đâu đó và người dùng mới sẽ thừa hưởng quyền sở hữu các tệp đó nếu có cùng một id người dùng đó.

Bạn sẽ muốn thay đổi chủ sở hữu của bất kỳ tệp nào thuộc sở hữu của người dùng đã xóa.

Nếu bạn muốn thêm người dùng trở lại sau, hãy lưu các dòng của nó từ /etc/passwd(và trên Solaris /etc/shadow) vào các tệp tạm thời, chẳng hạn như /etc/passwd_deleted.

Bằng cách đó, khi bạn thêm lại, bạn có thể sử dụng cùng một id người dùng và cùng một mật khẩu (được mã hóa trong một trong các tệp trên)

Tuyên bố miễn trừ trách nhiệm: Tôi đã tự học UNIX vì vậy tôi sẽ không ngạc nhiên nếu có cách tốt hơn để tạm thời vô hiệu hóa người dùng. Trong thực tế, tôi thậm chí không biết những gì các khóa riêng tư / công khai mà bạn đang nói về. Ngoài ra tôi chắc chắn có một findlệnh có thể được sử dụng để tra cứu các tệp với chủ sở hữu đó


1
google authorized_keys hoặc thử đọc này eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html về cơ bản thay vì sử dụng một mật khẩu, bạn đặt chìa khóa publuc của bạn trong tập tin đó và khi bạn kết nối với ssh bạn sẽ tự động được đăng nhập nếu một trong những công khai khớp với khóa riêng hiện tại của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.