我知道用户发送到服务器的所有命令都会自动登录~/.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