Tôi làm một cái gì đó tương tự trên các máy chủ của tôi. Ý chính chung của nó là
1) Thêm vào /etc/pam.d/login
ở dưới cùng của các session
mục:
session optional pam_exec.so quiet /etc/pam_session.sh
2) Sau đó tạo /etc/pam_session.sh
như (và chmod +x
):
#!/bin/bash
[[ "$PAM_USER" == "root" ]] && exit 0
SESSION_COUNT="$(w -h "$PAM_USER" | wc -l)"
if (( SESSION_COUNT == 0 )) && [[ "$PAM_TYPE" == "close_session" ]]; then
pkill -u "$PAM_USER"
fi
Nếu bạn muốn, bạn có thể thêm một cái gì đó như sleep 5; pkill -9 -u "$PAM_USER"
sau pkill
để đảm bảo rằng nó thực sự đã chết.
Điều này sẽ chỉ được gọi khi thoát vỏ đăng nhập, vì vậy nó sẽ không ảnh hưởng đến hoạt động hệ thống tự động. Tuy nhiên, nếu bạn muốn an toàn hơn nữa, bạn có thể thêm một kiểm tra cho thứ gì đó như UID lớn hơn 1000.