Linux记录用户执行命令

该脚本用于在Linux系统中详细记录每个用户的命令执行历史,包括时间、用户、IP地址等信息,并防止用户删除日志。通过设置环境变量和权限,确保命令历史的完整性和安全性。日志存储在指定目录,并使用chattr命令禁止普通用户删除。
摘要由CSDN通过智能技术生成
#!/bin/bash
# By lumia98@vip.qq.com
# 记录用户执行命令及IP地址
# 登录提示权限不足可以忽略,因为这是禁止用户删除权限提示;
# Linux详细记录每个用户的执行命令
# 缺陷不能记录vim里的命令

# 文件存放在 /etc/profile.d 或者/etc/profile
# source /etc/profile 生效或者重启系统;

# 创建目录
hislog_dir="/tmp/hislog"
[ -d ${hislog_dir} ] || mkdir -p ${hislog_dir}

# 第一次请先赋予目录权限,方便普通用户也能记录
# chmod 777 ${hislog_dir}

# 创建存放日志文件
export HISTFILE="${hislog_dir}/$(date '+%F').his"
# 给这个文件最大权限,让普通账号的命令也能记录
# -x 判断文件是否有执行权限;-w 文件是否有写入权限; -r 文件是否有读取权限
[ -x  ${hislog_dir}/$(date '+%F').his  ] || chmod 777 -R ${hislog_dir}/$(date '+%F').his

# 权限(只能root用户可以查看),开启这个普通账号无法记录命令
#umask 000 $HISTFIE

#定义保存的命令日志文件
export HISTTIMEFORMAT='%F %T '
#定义命令日志格式
export PROMPT_COMMAND='user=$(who am i | sed "s/[ ][ ]*/ /g"); history 1 \
| { read x date time cmd; echo "${date} ${time} ${user} $(whoami) ${cmd}";} >> $HISTFILE'

# 禁止用户删除权限;取消sudo chattr -a
chattr +a -R ${hislog_dir}

# ${date} ${time} 当前操作命令时间
# ${user} 登录用户
# $(whoami) 当前执行命令的用户
记录的命令格式如下,截取了一小段
[root@test ~]# more /tmp/hislogs/2020-12-30.his 
2020-12-30 15:58:34 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos su - root
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:36 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos more /tmp/hislogs/2020-12-30.his
2020-12-30 16:04:44 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ls -ls
2020-12-30 16:04:45 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos more /tmp/hislogs/2020-12-30.his
2020-12-30 16:04:49 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos cd
2020-12-30 16:04:49 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos cd
2020-12-30 16:05:09 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll
2020-12-30 16:05:15 centos pts/1 2020-12-30 15:54 (12.21.13.24) root vim /etc/profile.d/history.sh
2020-12-30 16:05:37 centos pts/1 2020-12-30 15:54 (12.21.13.24) root source  /etc/profile
2020-12-30 16:05:38 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll
2020-12-30 16:05:41 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll /tmp/
2020-12-30 16:05:43 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll /tmp/hislogs/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值