目录
shell的命令历史记录
需求
相关参数
实现步骤
>>>系统需要一个目录用来记录所有用户的命令历史记录,来做安全保护。
>>>创建一个目录/var/history,该目录会创建文件记录所有登录用户的历史命令,
文件以 username-userid.log 格式命名;(默认用于记录用户历史命令的文件是当前用户家目录下的.bash_history)
>>>所有用户执行过的命令都会被追加到对应的文件中 ,并且不能删除和修改 ——>特殊属性a
>>>用户输入的命令要实时刷入硬盘 ——> 特殊属性s
目录格式如下:
[bei@localhost ~]$ ls -al /var/history/
dr-xr-xrwx. 2 root root 4096 Aug 7 22:43 .
drwxr-xr-x. 22 root root 4096 Jul 22 00:05 ..
-rw-------. 1 bei bei 76219 Sep 18 20:18 bei-507.log
-r--------. 1 root root 12815 Sep 18 20:17 root-0.log
文件格式如下:
[bei@localhost ~]$ cat -n /var/history/bei-507.log | tail -5
4363 ls -al
4364 #1537327334
4365 history
4366 #1537327341
4367 ifconfig
参数 |
描述 |
HISTFILE |
用于指定保存命令历史记录的路径及文件名称(默认~/.bash_history) |
HISTFILESIZE |
用于指定保存命令记录文件中的最大行数(默认值500,建议设置为null) |
HISTSIZE |
命令历史记录中的记录的命令最大行数(默认值500,建议设置为100000) |
HISTTIMEFORMAT |
在历史记录文件中,使用注释符来区分时间戳和相关命令 可设置history命令显示的历史记录条目关联的时间戳输出格式 history命令输出为: [bei@localhost ~]$ history | tail -5 2188 2018-09-18 20:22:14 (192.168.20.xxx) bei history 2189 2018-09-18 20:22:21 (192.168.20.xxx) bei ifconfig 2190 2018-09-18 20:22:49 (192.168.20.xxx) bei cat -n /var/history/bei-507.log | tail -5 2191 2018-09-18 20:27:45 (192.168.20.xxx) bei history | tail -10 2192 2018-09-18 20:27:51 (192.168.20.xxx) bei history | tail -5 |
HISTCONTROL |
控制命令在历史列表中记录方式 ignorespace:以空格开头的行不会记录在历史中 ignoredups:忽略重复的命令 ignoreboth:参数ignorespace和ignoredups同时生效 |
关于readonly |
变量前写上readonly,非root用户变量不可更改 |
>>>创建目录/var/history ——> mkdir /var/history
给目录/var/history赋予所有人的写权限 ——> chmod a+w /var/history
给目录/var/history赋予特殊属性a ——> chattr +a /var/history
>>>编辑/etc/profile修改shell命令记录的参数
readonly HISTFILE=/var/history/$USER-$UID.log #设置保存命令历史记录的路径及文件名称
readonly HISTSIZE=null
readonly HISTFILESIZE=500000
readonly HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[{}]//g' ` `whoami ` "
shopt -s histappend #一个用户可以同时打开多个终端
readonly PROMPT_COMMAND="history -a" #实时追加当前历史命令到history文件
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export HISTSIZE HISTCONTROL
说明:
>>>以上内容是本人学习的总结
>>>如还有错误,请留言,指正
>>>亦可分享自己的想法,互相学习