我編寫了一個腳本,用於發送登錄到日誌文件的人的日期和用戶名以記錄誰已經登錄。我想知道如何將此腳本設置爲當用戶登錄時自動執行,而不必在終端中手動運行它。注:用戶名是登錄的當前用戶登錄後自動運行Bash腳本
我的代碼:
#!/bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log
我編寫了一個腳本,用於發送登錄到日誌文件的人的日期和用戶名以記錄誰已經登錄。我想知道如何將此腳本設置爲當用戶登錄時自動執行,而不必在終端中手動運行它。注:用戶名是登錄的當前用戶登錄後自動運行Bash腳本
我的代碼:
#!/bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log
解決此問題的更優雅的方法是從日誌文件中讀取,這些日誌文件已被寫入並且不能被用戶更改。沒有人可以說它比Bjørne Malmanger's in his answer更好:
我不會相信用戶給你提供的信息。作爲root你 把它;-)
一個很好的方式做,這是last
命令,這是偉大的,因爲它巧妙地顯示所有登錄:圖形,控制檯和SSH。
last
不太優雅但仍然安全的方法是在/var/log/auth.log上執行grep。在我的Gnome/Ubuntu系統,我可以用它來追蹤圖形登錄:需要爲每個登錄類型被發現
grep "session opened for user USERNAME"
爲您的機器正確的模式:圖形,控制檯和SSH。這很麻煩,但是如果你需要的信息比last
的信息更遠,你可能需要這樣做。
直接回答你的問題:
您可以修改這樣的腳本來獲取用戶名
#!bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/$(whoami)/boot.log
這行添加到/ etc/profile文件
. /path/to/script.sh
這是不安全,但因爲用戶將能夠編輯自己的日誌
把它放在〜/ .bash_profile中。它將在每次登錄時運行。
爲什麼不'您是否使用last
命令?
我不會相信用戶給你提供的信息。作爲根你採取;-)
是否有任何安全考慮?你相信用戶嗎?特別是 - 如果用戶有能力禁用日誌記錄或篡改他/她登錄的現有記錄,那麼這樣做是否正確? – ruakh 2012-03-12 20:21:48