บังคับให้คำสั่งรันเมื่อออกจากระบบหรือยกเลิกการเชื่อมต่อหรือไม่


13

ฉันกำลังเข้าสู่ระบบผ่านทาง SSH และฉันต้องการที่จะสามารถบังคับให้คำสั่งให้ออกจากระบบไม่ว่าจะเป็นการออกจากระบบโดยเจตนา (ออกจากเชลล์) หรือเพราะการเชื่อมต่อ SSH ของฉันลดลง / ถูกยกเลิก มีวิธีการตั้งค่านี้หรือไม่? สิ่งที่ดีที่สุดที่ฉันคาดเดาได้ในขณะนี้คือเปลี่ยนเชลล์ล็อกอินเป็นโปรแกรมที่ดักสัญญาณที่ส่งเมื่อปิด SSH (SIGHUP?) และดำเนินการคำสั่งแล้ว แต่ฉันสงสัยว่ามีวิธีแก้ปัญหาที่สะอาดกว่าหรือไม่


คุณต้องการที่จะดำเนินการคำสั่งบนเครื่องระยะไกลหรือในคนที่คุณเริ่มต้นการเชื่อมต่อจาก?
xx4h

คำตอบ:


20

วิธีที่ดีที่สุดในการทำเช่นนี้คือใช้แพ

ในคุณจะมีไฟล์หลายหนึ่งของพวกเขาจะถูกเรียกว่า/etc/pam.d sshdหากคุณต้องการที่จะส่งผลกระทบต่อ ssh และไม่ใช่การเข้าสู่ระบบอื่น ๆ (เช่น GUI หรือ TTY จริง) คุณต้องการไฟล์นี้
หากคุณต้องการส่งผลต่อการเข้าสู่ระบบทั้งหมดคุณจะต้องการไฟล์ 'ทั่วไป' ชื่อของไฟล์ 'ร่วม' อื่น ๆ นี้จะแตกต่างกันไปตาม distro แต่คุณสามารถติดตามได้โดยทำตามคำสั่งincludeและsubstackคำสั่งในsshdไฟล์จนกว่าคุณจะไปถึงไฟล์พื้นฐาน

เมื่อคุณระบุไฟล์/etc/pam.dที่คุณต้องการใช้แล้วให้เพิ่มบรรทัดดังต่อไปนี้ในsessionส่วน:

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

ซึ่งจะส่งผลให้มีการโทร/etc/pam_session.shทุกครั้งที่มีคนลงชื่อเข้าใช้และออกจากระบบ (ไม่ว่าจะอย่างสง่างามหรือไม่สุภาพ)

/etc/pam_session.shตอนนี้คุณก็จำเป็นต้องสร้าง ด้านล่างเป็นตัวอย่างที่คุณสามารถใช้เพื่อเรียกใช้บางสิ่งบางอย่างทุกครั้งที่มีคนออกจากระบบ:

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

(อย่าลืมchmod a+xสคริปต์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.