Eu acredito que isso seja possível. Eu começaria criando um arquivo de log por usuário (porque não tenho certeza dos efeitos colaterais do compartilhamento de um arquivo de histórico em pool). Então, por exemplo, vou
mkdir /var/log/history
touch /var/log/history/soneil
chown root:soneil /var/log/history/soneil
chmod 660 /var/log/history/soneil
Portanto, eu tenho um arquivo de histórico que pertence a root, mas 'soneil' pode gravar em.
Então, um pouco de mágica: chattr +a /var/log/history/soneil
Agora, 'soneil' só pode ser acrescentado à história, é de outra maneira imutável para todos, menos para o root.
Então eu tenho meu arquivo de log preparado, eu só preciso usá-lo.
em / etc / bashrc (no Ubuntu eu notei que isso é /etc/bash.bashrc):
export HISTFILE=/var/log/history/$USER
readonly HISTSIZE
readonly HISTFILE
readonly HISTIGNORE
readonly HISTCONTROL
O readonly builtin é bastante auto-explicativo, e acredito que poderia ser igualmente aplicável à função do SvenW também.
Testado, isso tem o mesmo problema que o arquivo de histórico normal; está escrito no logout e não tem registro de data e hora. então, ordenar eventos seria confuso. Eu acho que se eu tivesse que fazer isso sozinho, eu adicionaria
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
readonly PROMPT_COMMAND
para forçar o histórico a ser liberado para o disco toda vez que um novo prompt for desenhado. Há também um HISTTIMEFORMAT
envar que adicionará registros de data e hora ao arquivo de histórico, mas em um formato não muito bonito (configurar o var em um formato mais bonito afeta apenas a saída de 'history', não o conteúdo do próprio arquivo).