Buộc lệnh được chạy khi đăng xuất hoặc ngắt kết nối?


13

Tôi đang đăng nhập vào hệ thống thông qua SSH và tôi muốn có thể buộc một lệnh được chạy khi đăng xuất, cho dù đó là đăng xuất có chủ ý (thoát khỏi vỏ) hay do kết nối SSH của tôi bị rớt / bị chấm dứt. Có cách nào để thiết lập điều này? Dự đoán tốt nhất của tôi bây giờ là thay đổi vỏ đăng nhập thành chương trình chặn tín hiệu được gửi khi đóng SSH (SIGHUP?) Và thực thi lệnh sau đó, nhưng tôi tự hỏi liệu có giải pháp nào sạch hơn không.


Bạn có muốn thực thi lệnh trên máy từ xa hoặc trên máy bạn đã khởi tạo kết nối từ đó không?
xx4h

Câu trả lời:


20

Cách tốt nhất để làm điều này là sử dụng pam .

Trong /etc/pam.dbạn sẽ có một vài tệp, một trong số chúng sẽ được gọi sshd. Nếu bạn chỉ muốn ảnh hưởng đến ssh chứ không phải các thông tin đăng nhập khác (như GUI hoặc TTY thực), bạn muốn có tệp này.
Nếu bạn muốn ảnh hưởng đến tất cả thông tin đăng nhập, bạn sẽ muốn có tệp 'chung'. Tên của tệp 'chung' này khác nhau tùy theo bản phân phối, nhưng bạn có thể theo dõi nó bằng cách làm theo các câu lệnh includesubstacktrong sshdtệp cho đến khi bạn đến tệp cơ sở.

Khi bạn đã xác định tệp /etc/pam.dmà bạn muốn sử dụng, hãy thêm một dòng như sau vào sessionphần:

session     optional    pam_exec.so quiet /etc/pam_session.sh

Điều này sẽ dẫn đến việc gọi /etc/pam_session.shmỗi khi ai đó đăng nhập và đăng xuất (dù duyên dáng hay vô duyên).

Bây giờ bạn chỉ cần tạo /etc/pam_session.sh. Dưới đây là một ví dụ bạn có thể sử dụng để chạy một cái gì đó mỗi khi ai đó đăng xuất:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  something
fi

(đừng quên chmod a+xkịch 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.