Đăng xuất người dùng và xóa tài khoản


8

Tôi đang gặp sự cố trên máy chủ (CentOS 6, Plesk 11.5) trong đó một người dùng cụ thể đang sử dụng một người gửi thư hàng loạt và đang đưa vào danh sách đen địa chỉ IP của chúng tôi. Tôi đã cố gắng xóa người dùng này bằng cách sử dụng:

/usr/sbin/userdel test

nhưng nó trả về một thông báo nói rằng người dùng hiện đang đăng nhập. Tôi nghĩ ok, giết tiến trình. Vì vậy, tôi đã cố gắng:

pkill -u test

và cũng khóa tài khoản bằng cách sử dụng:

passwd -l test

hy vọng sẽ ngăn anh ta đăng nhập vào hệ thống trong tương lai.

Vẫn nói rằng người dùng đã đăng nhập. Làm cách nào tôi có thể đăng xuất người dùng này để cho phép tôi xóa anh ta khỏi hệ thống?


1
Bạn có thể muốn khóa tài khoản nhưng giữ nó xung quanh. Điều này có thể giúp dễ dàng hơn để tìm hiểu chính xác những gì người dùng đã và đang làm (đặc biệt là nếu có một hành động pháp lý).
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


8

Đầu tiên grep tất cả quá trình 'kiểm tra' của người dùng và giết -9 tất cả các pid sau đó xóa người dùng.

pgrep -u test
ps -fp $(pgrep -u test)
killall -KILL -u test
userdel -r test

2
passwd -l <user>

không dừng tất cả các phương tiện có thể đăng nhập. Ví dụ: nếu họ đăng nhập bằng sshkhóa công khai, họ vẫn có thể đăng nhập vì họ sẽ không cần mật khẩu.

Để ngăn người dùng đăng nhập lại, hãy chỉnh sửa /etc/passwdtệp và xóa người dùng hoặc thay đổi cột thứ 7 thành /sbin/nologin.

Chạy:

ps -u <user>

để xem quá trình người dùng vẫn đang sử dụng và tiêu diệt tất cả chúng. Bạn có thể phải sử dụng:

kill -s 9 <pid>

buộc quá trình dừng lại.


ps -u <user> trả về 21398? 00:00:01 sshd 21408? 00:00:08 sshd 21412? 00:00:03 sshd 21416? 00:00:00 sshd 21418? 00:00:00 sshd 21422? 00:00:01 sshd 21424? 00:00:03 sshd 21426? 00:00:03 sshd tôi chỉ giết mỗi quá trình? cảm ơn
dùng1532468

Đúng. Giết tất cả. Ngoài ra ps -AF | grep <user> có thể hiển thị thêm một số vì nó sẽ hiển thị các quy trình với tên người dùng trong các đối số của họ.
garethThe

Đối với những người trong chúng ta sợ chạm /etc/passwdtrực tiếp, sudo /usr/bin/chsh -s /sbin/nologin badusercũng hoạt động ( chsh: thay đổi vỏ).
Ulrich Schwarz

2

passwd -l <user>không vô hiệu hóa tài khoản.as gareth cho biết người dùng vẫn có thể đăng nhập bằng mã thông báo xác thực khác, chẳng hạn như khóa SSH. để vô hiệu hóa tài khoản này, bạn nên sử dụng usermod --expiredate 1cài đặt ngày hết hạn tài khoản này đến năm 1970. Bây giờ bạn nên hủy tất cả các quy trình mà người dùng được bắt đầu. đang chạy:

$pgrep -u Foosẽ in tất cả các quy trình mà người dùng Foo được bắt đầu. đang chạy:

$kill -9 <pid>sẽ gửi SIGKILLtín hiệu giết quá trình đó. Bây giờ chạy:

$pgrep -u Foo | xargs kill -9

điều này sẽ nhận được tất cả id quá trình của người dùng Foo và tiêu diệt tất cả.

HOẶC LÀ:

$kill -9 -u Foo


Các usermod làm việc cho tôi. Tôi đã có một tài khoản không có mật khẩu mà ban đầu tôi không thể xóa. Tôi đã thêm một mật khẩu và tôi vẫn không thể xóa nó. Bất cứ khi nào tôi giết quá trình của người dùng, một cái mới xuất hiện và nó dường như vô tận. Sau khi sử dụng usermod và hết hạn, điều đó dường như ngăn nó tạo ra một quy trình mới và vì vậy tôi có thể xóa tài khoản.
linstar

1

Bạn đã thử giết tất cả các quy trình của người dùng bằng SIGKILL chưa?

pkill -KILL -u username

Đã thử những gì bạn đề xuất chữ số, nhưng khi tôi chạy lệnh ps -u <user> để kiểm tra, các quy trình vẫn đang chạy. Cảm ơn
user1532468 21/07/14

Lạ nhỉ. SIGKILL và SIGABORT không thể bỏ qua. Thành thật không chắc chắn.
số

@ user1532468 - bạn đã chạy các lệnh với quyền root chưa?
Wilf

@Wilf vâng Tôi chạy bằng root
user1532468 21/07/14

0
userdel -rf username 

Một lỗi sẽ bật lên nhưng điều này sẽ xóa người dùng vĩnh viễn. Bạn có thể kiểm tra nó trong /etc/passwd.


Điều này không đăng xuất người dùng đầu tiên.
Kusalananda
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.