Rin*_*ind 15
你问的可以用......
sudo chattr +a ~$USER/.bash_history
sudo chattr +i ~$USER/.profile
Run Code Online (Sandbox Code Playgroud)
这将设置“仅附加”.bash_history
和“不可变位” .profile
,甚至 root 也无法删除或截断文件,除非删除该位。第二个命令阻止用户编辑.profile
.
接下来把它放在/etc/bash.bashrc
or 中/etc/.profile
:
# #Prevent unset of histfile, /etc/profile
HISTFILE=~/.bash_history
HISTSIZE=10000
HISTFILESIZE=999999
# Don't let the users enter commands that are ignored# in the history file
HISTIGNORE=""
HISTCONTROL=""
readonly HISTFILE
readonly HISTSIZE
readonly HISTFILESIZE
readonly HISTIGNORE
readonly HISTCONTROL
export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL
Run Code Online (Sandbox Code Playgroud)
这将锁定用户可能做出的最简单的操作来搞砸。但它不会阻止更有经验的用户......
CAP_LINUX_IMMUTABLE
能力的进程都可以删除不可变位kill -9 $$
。该命令将阻止写入历史记录。所以你问的问题是没有意义的。如果您不信任您的用户,请不要让他们进入您的系统。
如果这个问题是为了追踪黑客的行为而创建的……你可以完全忘记这一点;当它们在您的系统上时,它们不太可能使用 bash,并且此历史记录仅适用于 bash。
一个更好的选择是使用grsecurity或安装acct(GNU 会计实用程序)。
小智 8
这不是您要找的答案,但您真正想要的是 linux 的审计系统,而不是 bash。审计系统是专门为这样的事情设计的,而 shell 历史记录是一个方便的功能,有很多方法可以修改它,或者干脆不使用它,如上面的许多答案所述。
您无法保护.bash_history
文件不被删除。如果将其权限位设置为只读,bash 将无法写入其中。
rm
但是,您可以为您创建一个别名~/.bashrc
,这样,每次您想要删除某些内容时,它都会问您(y/n)
问题
将此行放入您的~/.bashrc
文件中。
alias rm="rm -i"
Run Code Online (Sandbox Code Playgroud)
还要确保只有您可以读取/写入该文件。
chmod 600 ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
应该做这项工作。