安全的 bash 历史记录使用

安全的 bash 历史记录使用

我知道用户发送到服务器的所有命令都会自动登录~/.bash_history

我想让我的同事访问我的电脑(我已经给了他一些有限的权限来通过 sudo 使用/etc/sudoers),即使我信任他,我还是想可靠地知道他在我的电脑上做了什么 - 所以我需要确定:

  • ~/.bash_history不能被妥协(他不能截断或以某种方式更改文件)
  • 他不能更改会影响日志记录的关键环境变量 - 例如 HISTCONTROL、HISTFILE 或 HISTSIZE
  • 他不能运行类似history -c

我不知道我是否忘记了什么,但我只是想确定,当我来到 PC 之后,我就会看到他所做的一切。

答案1

通过使 bash_history 和 bash 配置文件仅可追加来强化它们:

chattr +a /home/user/.bash_history
chattr +a /home/user/.bash_profile
chattr +a /home/user/.bash_login
chattr +a /home/user/.profile
chattr +a /home/user/.bash_logout
chattr +a /home/user/.bashrc

通过在 /home/user/.bashrc 中添加以下行来强化环境变量:

shopt -s histappend
readonly PROMPT_COMMAND="history -a"
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE
readonly HISTCMD
readonly HISTCONTROL
readonly HISTIGNORE

histappend告诉 bash 在交互式 shell 退出时将最后的 $HISTSIZE 行附加到 $HISTFILE 文件。 PROMPT_COMMAND在发出每个提示之前执行给定的命令。 history -a将在当前命令之前输入的命令附加到 $HISTFILE。

禁用对其他 shell 的访问:

chmod 750 csh
chmod 750 tcsh
chmod 750 ksh

相关内容