我们的小公司运行一个Ubuntu Server 11.10,有几个人有SSH访问权限。实际终端有时也会被使用。我们如何本地记录所有运行的Bash命令,以及用户和时间戳?
我们可以假设没有人是邪恶的并且积极试图避免记录,但我们仍然希望用户不能直接写入其日志文件。必须正确处理同时会话。
我们可以假设没有人是邪恶的并且积极试图避免记录,但我们仍然希望用户不能直接写入其日志文件。必须正确处理同时会话。
sudo -e /etc/bash.bashrc
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
sudo -e /etc/rsyslog.d/bash.conf
而且内容...
local6.* /var/log/commands.log
重新启动 rsyslog:
sudo service rsyslog restart
sudo -e /etc/logrotate.d/rsyslog
有一个要按相同方式轮转的日志文件列表...
/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message
/var/log/commands.log
http://www.linuxjournal.com/article/6144?page=0,1
在这个教程中可以找到其他的会计命令,比如last等等。
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
sudo make install
和sudo reboot
,而不是make install
和reboot
,但是make enable
命令呢?在Ubuntu中,这个命令需要加上sudo
前缀吗? - karelsudo apt-get install acct
export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'
PROMPT_COMMAND
,或者执行到非bash shell来轻松地停用它。 - Stefan Lasiewskilocal6
是有什么特别之处吗?它指的是什么? - Benubird