history命令能查看到操作日期和时间的配置方法:
1)在/etc/profile文件中添加一行:
export HISTTIMEFORMAT="%F %T `whoami` "
2)保存后,执行加载命令:
source /etc/profile
3)然后检查History命令的执行结果:
日志记录操作:
export HISTORY_FILE=/var/log/history/`date '+%Y%m'`.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'
在/etc/profile文件中保存上面的修改。然后创建目录:
mkdir -p /var/log/history
再加载/etc/profile文件:
source /etc/profile
检查配置结果情况:
[root@vm1 history]# cat 202308.log
2023-08-12 18:54:05 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:05 root mkdir -p /var/log/history
2023-08-12 18:54:10 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:10 root source /etc/profile
2023-08-12 18:54:12 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:10 root source /etc/profile
2023-08-12 18:54:18 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:10 root source /etc/profile
2023-08-12 18:54:20 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:20 root ll
2023-08-12 18:54:26 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:26 root cd /var/log/history
2023-08-12 18:54:26 ##### root pts/0 (192.168.17.1) #### 2023-08-12 18:54:26 root ll
2023-08-12 10:58:39 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:39 root history
2023-08-12 10:58:40 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:39 root history
2023-08-12 10:58:40 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:39 root history
2023-08-12 10:58:40 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:39 root history
2023-08-12 10:58:40 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:39 root history
2023-08-12 10:58:45 ##### root pts/0 (192.168.17.1) #### 2023-08-12 10:58:45 root ll
其中,我们看到还有一个问题,就是命令被重复记录了多次。那这个应该是有办法能解决的。
将用户执行的每个shell命令记入日志比最初想象的要来得困难。shell的历史功能原本旨在帮助用户使用以前用过的命令。我们都知道这种使用场合:你刚输入了一个长长的字段,可是拼错了一个字符。shell的历史让你可以改正这一个字符,而不必输入其余的所有字符。
然而, shell历史很难满足审计的目的。换言之,它不是为了确保系统安全而设计的。
对于bash shell来说,问题显得尤其困难,因为该shell的目的是,不管用什么办法,尽可能为用户简化生活——所以,它拥有所有的“花哨功能”(bells and whistles)。必须顾及所有这些多种功能,并且防止对历史文件进行更改。