防止用户在shell中执行history -c命令

防止用户在shell中执行history -c命令

是否可以阻止特定用户history -c在 shell 中执行命令。

答案1

history命令是 bash 内置命令(你可以在 中的第 4348 行找到它man bash)。因此你可以使用类似这样的在这种情况下。

你可以做的是通过使其成为仅附加来强化:/home/username/.bash_history

sudo chattr +a /home/username/.bash_history

此外,您还必须通过添加以下行来强化历史环境变量:/home/username/.bashrc

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

来源:https://superuser.com/questions/308882/secured-bash-history-usage

答案2

作为 Radu 答案的替代方案,这将把chown所有与 bash 相关的文件授予 root 权限,然后授予其他用户只读访问权限(除.bash_history和 之外.bashrc,他们将拥有读取和附加权限)

将这些行添加到$HOME/.bashrc

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

然后在终端中执行以下命令:

sudo chown root /home/$USER/.bash_history 
sudo chown root /home/$USER/.bash_profile 
sudo chown root /home/$USER/.bash_login
sudo chown root /home/$USER/.profile
sudo chown root /home/$USER/.bash_logout
sudo chown root /home/$USER/.bashrc

sudo chmod o+rwt     /home/$USER/.bash_history 
sudo chmod o+rt,a+x  /home/$USER/.bash_profile 
sudo chmod o+rt,a+x  /home/$USER/.bash_login
sudo chmod o+rt,a+x  /home/$USER/.profile
sudo chmod o+rwt,a+x /home/$USER/.bash_logout
sudo chmod o+rwt,a+x /home/$USER/.bashrc

sudo chattr +a /home/$USER/.bash_history 
sudo chattr +a /home/$USER/.bash_logout
sudo chattr +a /home/$USER/.bashrc

警告:未经测试,提供ABSOLUTELY NO WARRANTY

相关内容