O que você pede pode ser feito com ...
sudo chattr +a ~$USER/.bash_history
sudo chattr +i ~$USER/.profile
Isso definirá o "somente acréscimo" para .bash_history
e "bit imutável" para .profile
e até mesmo o root não poderá excluir ou truncar o arquivo, a menos que esse bit seja removido. O segundo comando impede que o usuário edite as configurações de .profile
.
Em seguida, coloque isso em /etc/bash.bashrc
ou /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
Isso bloqueará as ações mais simples que um usuário pode fazer para estragar tudo. Mas não vai parar os usuários mais experientes ...
- um usuário pode simplesmente mudar para outro shell e você não verá nada registrar.
- qualquer pessoa com a senha do administrador ou qualquer processo com o recurso
CAP_LINUX_IMMUTABLE
pode remover o bit imutável
Os comandos - que começam com um espaço por padrão não são armazenados no histórico.
- você não pode interromper um
kill -9 $$
. Esse comando impedirá a gravação na história.
Então, o que você pergunta é bastante inútil. Se você não confia em seus usuários, não os deixe em seu sistema.
Se esta questão foi criada para interceptar ações de hackers ... você pode esquecer totalmente isso; eles não são propensos a usar o bash quando estão no seu sistema e esse histórico funciona apenas com o bash.
Uma opção muito superior seria usar grsecurity ou instalar acct (Utilitários de Contabilidade do GNU).