比较Unix和linux的历史命令记录
这里使用的unix版本是sun 的solaris9,linux版本是centos5.5,比较二者历史命令记录的一些异同点来。
Solaris有个极为有用的记账功能,通过设置日志文件对每个用户的每一条命令进行记录linux命令,这一功能默认是不开启的,为了打开它,需要执行/usr/lib/acct/目录下的accton文件,格式如下:/usr/lib/acct/accton /var/adm/pact。在sun手册上,只有这一种用法linux命令,但这样的缺点是明显的,大多数有经验的***者一定不会放过/var/adm和/var/log这两个目录,发现pacct文件,会获取root用户的命令历史记录,同时又可以删除自己的记录。这种情况其实有个很好的解决办法,执行/usr/lib/acct/accton,后面跟一个别的目录和文件即可。如下面:/usr/lib/acct/accton /home/log/commandlog。管理员想查看记录时,只要把commandlog这个文件拷贝到/var/adm下,改为pacct,使用命令lastcomm命令就可以查看记录了。如果想关闭,输入/usr/lib/acct/accton.即可。
Linux下也有命令历史记录,默认下用户输入的命令会被记录在~/.bash_history(以默认bash为例),可以用命令history来查看,每个用户的命令历史记录都记录在各自的文件里。
现在来说说说二者的不同,solaris里面是用syslogd来实现的记账功能,记录的每个用户的每个命令,所有记录都在同一个文件里,用lastcomm查看时,能看到执行命令的用户和时间,但没有记录命令的参数。
Linux中的命令历史记录是由bash(以bash为默认shell)来完成的,记录是各自用户的每个命令,并且记录了命令的参数,但默认是没有显示执行命令的时间的,可以通过设置,让history命令显示命令执行的时间。如下面的设置:
# vi /etc/bashrc
添加下面三行
# 让系统记录每条历史命令的执行时间。注意最后的"号前面要放个空格
export HISTTIMEFORMAT=""%Y-%m-%d_%H:%M:%S "
# 设置保存历史命令的文件大小
export HISTFILESIZE=1000000
# 保存历史命令条数
export HISTSIZE=2000
保存退出
执行命令 source /etc/bashrc使配置立即生效。