HCRM博客

CentOS操作记录,如何高效管理和追踪Linux系统操作?

CentOS 操作记录

背景和起因

CentOS操作记录,如何高效管理和追踪Linux系统操作?-图1
(图片来源网络,侵权删除)

在 Linux 服务器上,尤其是 CentOS 系统中,记录用户的操作日志是一项重要的任务,系统管理员会使用history 命令来查看用户的命令历史,但这种方法存在一些局限性,例如默认只保存最近的 1000 条命令,无法详细记录用户的来源 IP 地址、操作时间等信息,为了更全面地记录所有用户的操作,我们需要采用更复杂的方法来实现这一目标。

自动记录脚本

为了实现详细的用户操作记录,可以在/etc/profile 文件的末尾追加以下脚本:

set user history
history
USER=whoami
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 /var/log/history ]; then
    mkdir /var/log/history
    chmod 777 /var/log/history
fi
if [ ! d /var/log/history/${LOGNAME} ]; then
    mkdir /var/log/history/${LOGNAME}
    chown R ${LOGNAME}:${LOGNAME} /var/log/history/${LOGNAME}
    chmod 770 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=date +"%Y%m%d_%H:%M:%S"
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 660 /var/log/history/${LOGNAME}/*history* 2>/dev/null

脚本解析

获取当前用户:使用whoami 命令获取当前登录用户的用户名。

获取用户 IP 地址:通过who u am i 命令获取用户的 IP 地址,并使用awksed 进行处理,如果没有获取到 IP 地址,则使用主机名代替。

创建日志目录:检查是否存在/var/log/history 目录,如果不存在则创建,并设置适当的权限。

CentOS操作记录,如何高效管理和追踪Linux系统操作?-图2
(图片来源网络,侵权删除)

用户专属目录:为每个用户在日志目录下创建专属目录,并设置权限。

设置历史记录文件:将用户的历史记录文件路径设置为/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT,其中包含用户名、登录 IP 地址和操作时间。

修改历史记录大小:将HISTSIZE 设置为 4096,确保保存更多的历史记录。

效果

每次用户登录到退出系统时,都会生成一个以用户名、登录 IP 地址和操作时间为文件名的日志文件,文件里面包含本次用户的所有操作记录。

查看和清除历史记录

查看历史记录

要查看当前用户执行过的命令,可以使用history 命令:

CentOS操作记录,如何高效管理和追踪Linux系统操作?-图3
(图片来源网络,侵权删除)
history

如果不加参数,默认显示全部操作记录。

清除历史记录

要清除所有历史记录,可以使用以下命令:

history c

执行完后可以再执行一次history 命令查看是否成功清除。

要删除特定的历史记录,可以使用d 参数,后面跟上要删除的记录编号:

history d 2

这将删除编号为 2 的历史记录。

常见问题解答(FAQs)

问题1:如何修改历史记录的文件数限制?

默认情况下,history 命令只保存最近的 1000 条命令,可以通过修改/etc/profile 文件中的HISTSIZE 变量来增加保存的历史记录数,将HISTSIZE 设置为 4096:

export HISTSIZE=4096

然后重新加载配置文件或重新启动终端:

source /etc/profile

问题2:如何查看特定用户的操作记录?

每个用户的操作记录都保存在/var/log/history/${LOGNAME} 目录下,文件名格式为${USER}@${USER_IP}_$DT,要查看特定用户的操作记录,可以导航到该目录并查看相应的日志文件,要查看用户admin 的操作记录,可以使用以下命令:

cd /var/log/history/admin
ls l
cat admin@192.168.1.1_20240705_123045

这将列出admin 用户的所有操作记录文件,并显示指定文件的内容。

分享:
扫描分享到社交APP
上一篇
下一篇