Vô hiệu hóa đăng nhập của người dùng mà không vô hiệu hóa tài khoản


87

Giả sử tôi tạo một người dùng có tên "không có thật" bằng cách sử dụng adduserlệnh. Làm cách nào tôi có thể đảm bảo người dùng này sẽ KHÔNG phải là một tùy chọn đăng nhập khả thi, mà không vô hiệu hóa tài khoản. Nói tóm lại, tôi muốn tài khoản có thể truy cập được thông qua su - bogus, nhưng tôi không muốn nó có thể truy cập được thông qua lời nhắc đăng nhập thông thường.

Tìm kiếm xung quanh, có vẻ như tôi cần phải tắt mật khẩu của người dùng đó, nhưng passwd -d boguskhông giúp được gì. Trong thực tế, nó làm cho mọi thứ tồi tệ hơn, bởi vì bây giờ tôi có thể đăng nhập vào không có thật mà không cần nhập mật khẩu.

Có cách nào để vô hiệu hóa thông tin đăng nhập thông thường cho một tài khoản nhất định không?

Lưu ý: Để rõ ràng, tôi biết cách xóa người dùng khỏi các tùy chọn menu của màn hình đăng nhập đồ họa như gdm, nhưng các phương pháp này chỉ đơn giản là ẩn tài khoản mà không thực sự vô hiệu hóa đăng nhập. Tôi đang tìm cách vô hiệu hóa hoàn toàn đăng nhập thông thường, bao gồm chế độ văn bản.


2
Của bạn -dlà cờ để xóa mật khẩu. Điều đó khác với việc vô hiệu hóa nó (được coi là khóa, xem câu trả lời của Chad).
Caleb

1
Bạn có thể muốn hoàn toàn vô hiệu hóa chúng: unix.stackexchange.com/questions/7690/... Cũng thấy điều này Ask Ubuntu câu hỏi: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Câu trả lời:


102
passwd -l user

là những gì bạn muốn.

Điều đó sẽ khóa tài khoản người dùng. Nhưng bạn vẫn có thể

su - user

nhưng bạn sẽ phải su - userroot.

Ngoài ra, bạn có thể thực hiện điều tương tự bằng cách nhập trước !mật khẩu của người dùng /etc/shadow(đây là tất cả những gì diễn passwd -lra sau hậu trường). Và passwd -usẽ hoàn tác điều này.


27
Bằng cách sử dụng passwd -ltùy chọn, bạn cần lưu ý rằng người dùng có thể đăng nhập bằng mã thông báo xác thực khác (ví dụ: khóa SSH).
pl1nk

2
Xin vui lòng xem câu trả lời của tôi dưới đây về một giải pháp được đề nghị về cách tránh điều này.
Jörg Gottschlich

2
Điều này không hoạt động trên Ubuntu 16.04. Nó sẽ thay đổi ngày hết hạn và không cho phép người dùng su nữa.
merlin

1
Đây có giống như --disabled-passwordtùy chọn được đưa ra adduser? Việc tạo một người dùng không có --disabled-passwordvà sau đó chạy passwd -ltrên người dùng đó có đạt được kết quả giống như chạy adduservới --disabled-passwordở nơi đầu tiên không?
haridsv

39

Trang người đàn ông passwd(1)nói về passwd -l:

Lưu ý rằng điều này không vô hiệu hóa tài khoản. Người dùng vẫn có thể đăng nhập bằng mã thông báo xác thực khác (ví dụ: khóa SSH). Để vô hiệu hóa tài khoản, quản trị viên nên sử dụng usermod - expiredate 1 (điều này đặt ngày hết hạn của tài khoản thành ngày 2 tháng 1 năm 1970).

Vì thế

usermod --expiredate 1 [LOGIN]

đối với tôi có vẻ như đúng cách để vô hiệu hóa tài khoản mà người dùng không thể sử dụng được nữa (ví dụ: vì anh ta đã rời công ty).


4
Trên CentOs 6.3 của tôi, passwd -lkhông chặn sshkết nối cho người dùng và usermod --expiredate 1không!
fduff 6/2/2015

1
Trên CentOS 7.4 của tôi, passwd -lkhông còn chặn sshkết nối cho người dùng và usermod --expiredate 1 userchặn. Per man passwdbạn cũng có thể sử dụng chage -E 0 userđể chặn người dùng. Sau khi đăng ký usermodhoặc chagetôi có thểsudo su user
user12345

usermod --expiredate 0 [LOGIN]cũng hoạt động, nó đặt ngày hết hạn là ngày 1 tháng 1 năm 1970 trong khi ngày 1 đặt vào ngày 2 tháng 1 năm 1970.
slm

"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 vào ngày 1 tháng 1 năm 1970." - bóng tối (5)
Julian

28

Có hai phương pháp để ngăn người dùng không thể đăng nhập:

  1. bạn có thể khóa người dùng bằng cách chỉnh sửa /etc/passwd
  2. bằng cách trực tiếp ban hành passwdlệnh với công -ltắc

Trong trường hợp thứ hai, người dùng có thể đăng nhập bằng mã thông báo xác thực khác (ví dụ: khóa SSH).

Phương pháp số 1

  1. Tìm vị trí của nologin: / bin / nologin hoặc / bin / sbin / nologin
  2. Mở terminal và đăng nhập bằng root
  3. Thể loại vi /etc/passwd

Bây giờ bạn đang ở passwdtập tin nhấn Insđể chỉnh sửa tập tin.

Thay đổi dòng dưới đây với nologintùy chọn ( /bin/bashcó nghĩa là người dùng có thể đăng nhập).

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

đến đây nologincó nghĩa là người dùng không thể đăng nhập.

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

(hoặc với / bin / sbin / nologin)

  1. Đóng vi Esc :wq

Phương pháp # 2

Để khóa người dùng: passwd -l username

Để mở khóa người dùng: passwd -u username


1
Trên hệ thống Ubuntu 14.04, tôi tìm thấy /usr/sbin/nologinthay vì /bin/nologin.
Dennis Williamson

7

Nhiệm vụ khá dễ dàng của bạn, bạn chỉ cần thực hiện một số thay đổi trong /etc/passwdtệp.

Đơn giản là bạn phải thay đổi shell thường theo mặc định, /bin/bashtức là bạn có thể đăng nhập bằng shell này thay đổi nó thành /bin/nologinhoặc /bin/false. Đó là khuyến khích để thay đổi nó /bin/nologin/bin/falseđã lỗi thời.


4

Đặt /bin/falselàm vỏ trong/etc/passwd


18
Khi đặt shell thành /bin/false, người ta sẽ ngăn sử dụng su để hành động như người dùng đó. Ngoài ra, việc sử dụng /bin/falsekhông tạo ra lỗi cũng như gợi ý nào khác về sự cố xảy ra - trong trường hợp người ta muốn ngăn chặn ngay cả việc sử dụng su để lấy shell như người dùng đó, vỏ phải được thay đổi thành /sbin/nologinlỗi.
HedgeMage

8
Không, suvẫn có thể cho người dùng có /bin/falseshell passwd- chỉ cần sử dụng tùy chọn --shell: su - --shell /bin/sh bogus.
Matej Kovac

1
/usr/sbin/nologincó tác dụng tương tự /bin/false, nhưng cũng cho thấy một thông điệp thông tin hữu ích.
Rörd

0

Khi chúng tôi khóa người dùng bằng passwd -l userlệnh, " !!" được chỉ định trong /etc/shadowtệp. Nhưng chúng tôi vẫn có thể chuyển sang vỏ người dùng từ tài khoản root, nhưng không thể chuyển sang tài khoản người dùng bằng vỏ đăng nhập người dùng bình thường khác.

Chúng tôi cũng có thể vô hiệu hóa tài khoản bằng cách cung cấp /bin/nologinhoặc /bin/falseđăng ký /etc/passwd. Vì vậy, người dùng có thể không thể đăng nhập.


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.