Linux配置的历史命令删除

配置目的:

隐私、安全

cat /etc/profile.d/history.sh 
####Operation log####
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
echo "" > .bash_history
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
export OLD_PWD=$PWD;
fi;
if [ -z "$LAST_CMD" ]; then
logger -t shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
logger -t shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'
  1. 获取用户IP地址:
     

    bash

    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
    • who -u am i:这个命令用于显示当前登录用户的信息。-u 选项通常用于显示用户的登录时间、登录终端等信息,但在这个上下文中可能不是必需的,因为主要目的是获取用户名和登录终端。am i 是一个常见的用法,用于仅显示当前用户的信息。
    • 2>/dev/null:将标准错误重定向到 /dev/null,意味着忽略错误信息(例如,如果用户不在终端上登录,who -u am i 可能会失败)。
    • awk '{print $NF}':使用 awk 打印每行的最后一个字段,这通常是登录终端(例如 pts/0)。
    • sed -e 's/[()]//g':使用 sed 删除所有的括号字符。这是因为登录终端信息可能包含括号,例如 (tty1),而这里只想要纯文本形式的终端名。
  2. 设置历史命令的时间格式:
     

    bash

    export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
    • 这行命令设置了历史命令的时间格式,包括日期(%F)、时间(%T)、当前用户名(`whoami`)和用户IP地址(${USER_IP})。
  3. 清空历史记录文件:
     

    bash

    echo "" > .bash_history
    • 这行命令将 .bash_history 文件清空,意味着每次启动 shell 时,之前的命令历史都会被清除。
  4. 配置命令执行后的行为:
     

    bash

    export PROMPT_COMMAND='\
    if [ -z "$OLD_PWD" ];then
    export OLD_PWD=$PWD;
    fi;
    if [ -z "$LAST_CMD" ]; then
    logger -t shell_cmd "[$OLD_PWD]$(history 1)";
    fi ;
    if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
    logger -t shell_cmd "[$OLD_PWD]$(history 1)";
    fi ;
    export LAST_CMD="$(history 1)";
    export OLD_PWD=$PWD;'
    • PROMPT_COMMAND 是一个环境变量,它在每次显示命令提示符之前执行。这里它被设置为一个复杂的 if 语句块,用于记录命令执行的上下文。
    • 首先,如果 OLD_PWD(上一个工作目录)为空,则将其设置为当前工作目录($PWD)。
    • 然后,如果 LAST_CMD(上一个执行的命令)为空,使用 logger 命令记录当前工作目录和刚刚执行的命令(通过 history 1 获取)。
    • 接着,如果 LAST_CMD 不为空,并且刚刚执行的命令与 LAST_CMD 不同,也记录这个新命令。
    • 最后,更新 LAST_CMDOLD_PWD 的值。

总的来说,这段代码的目的是在每次执行命令时,记录命令的执行时间、执行用户、用户IP地址、当前工作目录以及命令本身,使用 logger 命令将这些信息写入系统日志。这有助于审计和监控用户的 shell 活动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值