Linux history设置

自定义存储文件:

默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新加载shell, 则/var/log/history.txt文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。

#vi ~/.bash_profile 
HISTFILE=/var/log/history.txt

重新加载:
source .bash_profile

#但是这种记录方式不是实时的,而且不安全

Linux中实时记录历史命令

先创建一个日志文件
touch /var/local/cmd.log
chmod 002 /var/local/cmd.log
注意权限修改,权限时任意用户可以写,但是所有用户不能读执行,属主和同组用户不可写。
其目的就是达成可以记录但是不让看的目标。当然root用户特殊。

[root@localhost log]# vim /etc/profile
#最下方添加下面内容:
export HISTORY_FILE=/var/local/cmd.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ## `hostname` ## $(who am i |awk "{print \$1}") ## $(who am i |awk "{print \$2}") ## $realsourceip ## $(history 1 | { read x cmd; echo " $cmd"; })"; } >>$HISTORY_FILE'
realsourceip=`who am i | awk -F"[()]" '{print $2}'`

source /etc/profile   #生效

#PROMPT_COMMAND略作说明:

date +%Y-%m-%d %T                            #输出生时间
hostname                                      #输出主机名
$(who am i |awk "{print \$1}")                #输出用户名
$(who am i |awk "{print \$2}")                  #输出登陆方式
`who am i | awk -F"[()]" '{print $2}'`          #即变量realsourceip,输出登陆ip
$(history 1 | { read x cmd; echo " $cmd"; })      #输出用户执行的命令
所有数据以“##”作为分隔符
测试效果如下:
[root@localhost log]# tail -f /var/local/com.log 
2020-08-20 09:11:21 ## localhost.localdomain ## root ## pts/1 ## 10.12.237.73 ##  source /etc/profile
2020-08-20 09:11:39 ## localhost.localdomain ## root ## pts/2 ## 10.12.237.73 ##  reboot
2020-08-20 09:11:41 ## localhost.localdomain ## root ## pts/2 ## 10.12.237.73 ##  ls
2020-08-20 09:11:42 ## localhost.localdomain ## root ## pts/2 ## 10.12.237.73 ##  ll
2020-08-20 09:11:44 ## localhost.localdomain ## root ## pts/2 ## 10.12.237.73 ##  pwd


#让linux的history命令显示时间

# 临时生效
[root@localhost ~]# export HISTTIMEFORMAT='%F %T'
显示用户:export HISTTIMEFORMAT="%F %T `whoami` "

# 永久生效
在/etc/profile 中最后增加
export HISTTIMEFORMAT="%y-%m-%d %H:%M:%S "

source /etc/profile

实现通过记录登陆后的IP地址和某用户名所操作的历史记录

通过在/etc/profile里面加入以下代码就可以实现:

PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/dbasky ]
then
mkdir /tmp/dbasky
chmod 777 /tmp/dbasky
fi
if [ ! -d /tmp/dbasky/${LOGNAME} ]
then
mkdir /tmp/dbasky/${LOGNAME}
chmod 300 /tmp/dbasky/${LOGNAME}
fi
export HISTSIZE=100000
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT"
chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null

source /etc/profile 使用脚本生效

退出用户,重新登录

上面脚本在系统的/tmp新建个dbasky目录,记录所有登陆过系统的用户和IP地址(文件名),每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史,可以用这个方法来监测系统的安全性。

[email protected]:[/root]cd /tmp/dbasky/root/
[email protected]:[/tmp/dbasky/root]ll
总用量 8
-rw-------. 1 root root 74 9月   1 10:40 10.12.237.97 dbasky.2020-09-01_10:19:30
-rw-------. 1 root root 95 9月   1 10:40 10.12.237.97 dbasky.2020-09-01_10:19:56
[email protected]:[/tmp/dbasky/root]cat 10.12.237.97\ dbasky.2020-09-01_10\:19\:30 
history | more
vim /etc/profile
source /etc/profile
history 
cd
ll
logout

猜你喜欢

转载自blog.csdn.net/Doudou_Mylove/article/details/108336350