ฉันจะบันทึกคำสั่งเชลล์ UNIX ทั้งหมดที่ส่งโดยผู้ใช้ทั้งหมดได้อย่างไร


8

มีวิธีที่ฉลาดในการบันทึกทุกคำสั่งที่ส่งในเชลล์ทั้งหมดบนเครื่องหรือไม่? นี่คือบริบทของเซิร์ฟเวอร์อูบุนตูที่ใช้บ่อยซึ่งฉันเป็นผู้ใช้คนเดียว (มีบัญชีผู้ใช้หลายบัญชีที่ระบบอัตโนมัติใช้)

scriptฉันต้องการนี้จะสร้างความรำคาญและค่าใช้จ่ายต่ำดังนั้นฉันรักมันถ้ามีวิธีการที่ง่ายที่เกี่ยวข้องกับสิ่งที่ชอบ

คำตอบ:


9

ตั้งแต่รุ่งอรุณของเวลา (จริง ๆ แล้วย้อนหลังจากเวลาที่คนต้องจ่ายเงินจริงต่อวงจรคอมพิวเตอร์ที่พวกเขาใช้) Unix และมันเป็นโคลนที่มีระบบที่เรียกว่า Process Accounting ( acct) ในตัวสิ่งนี้ทำให้ผู้ดูแลระบบทราบได้อย่างแน่นอน สิ่งที่ผู้ใช้กำลังทำอยู่และสามารถเรียกเก็บเงินได้ตามนั้น

acctสิ่งอำนวยความสะดวกยังคงมีอยู่มากที่สุดใน Unix และ Linux ไปในวันนี้

ไซต์นี้: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.htmlบอกวิธีเปิดใช้งาน


สามารถใช้เพื่อบันทึกว่าผู้ใช้คนใดทำ sudo และ su และคำสั่งของรูตใดในภายหลัง
Daniel Beck

ฉันเชื่อว่ามันบันทึกทุกคำสั่งที่รันโดยผู้ใช้ tty และอื่น ๆ คุณสามารถจับคู่คำสั่งกับ tty กับผู้ใช้ที่ล็อกอินเข้าสู่ tty นั้นเพื่อติดตามสิ่งที่ผู้ใช้ต้องการหรือผ่าน sudo
Majenko

ขอบคุณฉันไม่รู้คุณสมบัตินี้ทั้งหมด อ่าน man page อย่างรวดเร็วแสดงให้เห็นว่าการบันทึกจะดำเนินต่อไปจนกว่าจะถึงสภาวะที่มีพื้นที่ดิสก์เหลือน้อยดังนั้นอาจจำเป็นต้องใช้สคริปต์ logrotate
jl6

ฉันคิดว่าการบัญชีกระบวนการเพิ่งบันทึกว่าโปรแกรมใดรันหรือไม่ไม่ใช่คำสั่งที่มีอาร์กิวเมนต์ทั้งหมด
Sirex

2

นี่เป็นวิธีที่ดีและรวดเร็วในการบันทึกคำสั่งเชลล์ทั้งหมด :

ขั้นตอนที่ 1:

ใช้เท็กซ์เอดิเตอร์ที่คุณชื่นชอบเพื่อเปิด / etc / bashrc และต่อท้ายบรรทัดต่อไปนี้ในตอนท้าย:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

ขั้นตอนที่ 2:

ตั้งค่า syslogger เพื่อดักจับ local6 ไปยังล็อกไฟล์โดยเพิ่มบรรทัดนี้ในไฟล์ /etc/syslog.conf:

local6.*                /var/log/cmdlog.log

[ดูโพสต์บล็อกที่สมบูรณ์ที่นี่]


ฉันแจ้งเตือนผู้ใช้จะสามารถปิดการใช้งานสิ่งนี้จะรีเซ็ตตัวแปรและเพราะมันถูกดำเนินการ"ก่อนที่จะออกพรอมต์หลักแต่ละครั้ง"ข้อเท็จจริงนี้จะไม่ถูกบันทึกไว้
dmckee --- ผู้ดูแลอดีตลูกแมว

2

คุณสามารถใช้ด้อม

มันง่ายมากที่จะติดตั้งและลบ (ไม่ต้องใช้เคอร์เนลโมดูลหรือการแพตช์) โปรดทราบว่านี่ไม่ใช่วิธีการตรวจสอบที่เหมาะสมและสามารถหลีกเลี่ยงได้อย่างง่ายดาย

การเปิดเผยข้อมูล: ฉันเป็นผู้ดูแลด้อมในปัจจุบัน


บอสต์ยานเซ Skufca ยังได้ให้คำแนะนำเพิ่มเติมสำหรับการติดตั้งด้อมในอูบุนตูที่นี่และยังอยู่ในความคิดเห็นเพิ่มเติมในหัวข้อเดียวกันที่นี่
karel

+1 สำหรับด้อม; มันให้บันทึกคำสั่งและอาร์กิวเมนต์ที่ดีใน /var/log/auth.log
David Goodwin

1

คุณสามารถใช้sudoshเป็น shell wrapper มันมีการบันทึกอัตโนมัติของทุกสิ่งที่คุณทำและสามารถเล่นไฟล์บันทึกได้ ดูเว็บไซต์สำหรับข้อมูลเพิ่มเติม

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