faz sudoers usar seu próprio arquivo de histórico

6

Eu simplesmente não consigo fazer funcionar no Ubuntu, deve ser uma resposta simples, talvez alguém possa me ajudar. Tudo o que estou tentando fazer é fazer com que os sudoers usem seu próprio arquivo de histórico, mas se eu definir o histórico var no .bashrc para raiz com:

HISTFILE="/root/.bash_history.$SUDO_USER"

nada parece acontecer.

Eu tentei alterar o /root/.bashrc e /etc/skel/.bashrc com a entrada acima. Nada. Eu consegui isso para trabalhar no CentOS antes (Veja fazer sudoers usar seus próprios arquivo de histórico ).

Eu até movi a entrada para o início do arquivo, pois encontrei algumas sugestões que declararam que ele pode ser ignorado depois de um certo ponto, mas, independentemente da posição, os arquivos de histórico não estão sendo criados. Se eu usar a minha chave de flecha, no entanto, as entradas do histórico estão lá ... de onde elas vêm, eu não tenho mais pistas, parece algum tipo de magia, Voodoo parece.

Qualquer ajuda seria apreciada.

    
por Willem P. Botha 16.11.2016 / 08:00

1 resposta

3

Eu apenas segui o que você descreveu, acompanhado por alguns experimentos

~$ sudo -s
~# ls -l $HISTFILE
-rw------- 1 g g 44174 Jan  4 16:26 /home/g/.bash_history

~$ sudo -i
~# ls -l $HISTFILE
-rw------- 1 root root 2356 Jan  4 16:23 /root/.bash_history

~$ sudo ls -l $HISTFILE
-rw------- 1 g g 44174 Jan  4 16:26 /home/g/.bash_history

Então, quando estamos executando os comandos padrão sudo ou quando usamos sudo -s para obter um shell raiz, já estamos usando nosso próprio arquivo histórico.

Somente quando invocamos sudo -i para obter um shell de login apropriado, o histórico de raiz original é usado.

Agora segui o seu exemplo e editei /root/.bashrc para conter

HISTFILE="/root/.bash_history.$SUDO_USER"

como primeira linha.

As repetições acima das experiências com sudo -s e sudo ls -l $HISTFILE produziram os mesmos resultados de antes (como esperado). Mas sudo -i me deu um shell sem histórico (e nenhum arquivo de histórico).

Depois de executar

~$ sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan  4 17:16 .bash_history
~# echo $HISTFILE
/root/.bash_history.g
~# ls -l $HISTFILE
ls: cannot access '/root/.bash_history.g': No such file or directory

e desconectando-se

~$ sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan  4 17:16 .bash_history
-rw------- 1 root root   52 Jan  4 17:25 .bash_history.g

Eu obtenho os resultados esperados (incluindo o acesso ao "meu" histórico usando as teclas de seta.

Lembre-se de que o conteúdo de /root/.bashrc é apenas executado para um shell interativo de não-login (como sudo -s ), para um shell de login (como sudo -i )/root/.bashrc é somente originado e somente se /root/.profile contiver algo como

if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
    
por guntbert 04.01.2017 / 17:33