it-swarm-vi.com

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

Làm cách nào để tôi vô hiệu hóa hoàn toàn một tài khoản? passwd -l sẽ 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? Là 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?

49
user4069

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

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

(Trên thực tế, đối số để --expiredate có 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:

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

  • --expiredate YYYY-MM-DD vô hiệu hóa tài khoản vào ngày đã chỉ định. Dựa theo man shadow 5 1970-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>
61
Christoph Wurm

Khóa mật khẩu và thay đổi Shell 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.)

10
mattdm

Đâ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 cả đă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 có cùng mật khẩ như trước đây. Nhị phân 'chage' là một phần của gói Shadow-utils trên Red Hat Linux hoặc passwd gói trên Debian Linux.

4
miklosq

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 as mình 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ó Shell hợp lệ (/bin/bash, không phải /sbin/nologin), vì Nền tảng lập lịch doanh nghiệp (tác nhân chạy dưới quyền root cục bộ) phải có khả năng su - <user> và không có su -s /bin/bash <user> khả năng mà Shell đầy đủ thực hiện và 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ì thế...

[.__.] 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 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 để người 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!

3
user1880028

Để 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) thành 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 lệnh find có thể được sử dụng để tra cứu các tệp với chủ sở hữu đó

1
Bryan Field

Có ai đã thử làm điều đó qua ssh_config chưa? Có lẽ điều này có thể giúp http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-seciously/86

Ngoài ra, đảm bảo rằng PasswordAuthentication cũng được đặt thành không, để buộc tất cả các thông tin đăng nhập sử dụng khóa chung.

0
icasimpan