linux ksh 历史命令,防止Linux中的bash(和ksh)历史记录更改
這是一個將所有執行的命令發送到syslog服務器的解決方案.
以下是將用戶執行的所有命令的副本發送到Syslog服務器的兩種方法.第一個將使用Bash“陷阱”功能.第二個是在Bash源代碼中應用的補丁.
使用陷阱
只需在/ etc / profile中添加以下行:
function log2syslog
{
declare command
command=$(fc -ln -0)
logger -p local1.notice -t bash -i — $USER : $command
}
trap log2syslog DEBUG
在Bash啟動時解析并執行/ etc / profile.目標是使用陷阱功能,并在每次用戶生成活動時調用函數.陷阱功能(log2syslog)將從歷史記錄中提取最后一個命令,并使用logger命令將其記錄到Syslog.很容易實現,但這種方法:
spawns new process at each command logged (can have a negative effect when the server activity is high)
is not transparent to the user (regular users can’t edit /etc/profile but can read it!)
這就是為什么第二種方法將是首選的原因.
使用補丁
該方法是在Bash源樹上應用補丁并重新編譯shell.它需要一個帶有編譯器和源代碼的環境,但這種方法將使用更少的cpu并且將完全透明!
可以使用here的補丁示例.將補丁手動應用于Bash 4源樹需要五分鐘.
以下是Syslog消息的示例:
Feb 27 19:30:51 honey bash: HISTORY: PID=21099 UID=1000 echo foo!
總結
以上是生活随笔為你收集整理的linux ksh 历史命令,防止Linux中的bash(和ksh)历史记录更改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux按键驱动中的结构体,linux
- 下一篇: linux驱动双摄像头,详解linux