web-dev-qa-db-fra.com

obliger les sudoers à utiliser leur propre fichier d'historique

Je n'arrive pas à faire en sorte que tout fonctionne avec Ubuntu. Ce devrait être une réponse simple. Peut-être que quelqu'un pourra m'aider. Tout ce que j'essaie de faire est de faire en sorte que les sudoers utilisent leur propre fichier d’historique, mais si je mets la variable history dans le fichier .bashrc pour root, avec:

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

rien ne semble arriver.

J'ai essayé de changer le /root/.bashrc et /etc/skel/.bashrc avec l'entrée ci-dessus. Rien. J’ai déjà eu à travailler avec CentOS (voir oblige les sudoers à utiliser leur propre fichier d’historique ).

J'ai même déplacé l'entrée au début du fichier, car j'ai trouvé quelques suggestions selon lesquelles elle pourrait être ignorée après un certain point, mais quel que soit le poste choisi, les fichiers d'historique ne sont pas créés. Si j'utilise ma touche fléchée mais les entrées d'historique sont là ... d'où qu'elles viennent, je n'en ai plus la moindre idée, cela semble être une sorte de magie, Voodoo semble-t-il.

Toute aide serait appréciée.

5
Willem P. Botha

Je viens de suivre ce que vous avez décrit, accompagné de quelques expériences

~$ 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

Ainsi, lorsque nous exécutons des commandes Sudo standard o lorsque nous utilisons Sudo -s pour obtenir un shell racine, nous utilisons déjà notre propre fichier d'historique.

Ce n'est que lorsque nous appelons Sudo -i pour obtenir un nom de connexion approprié que Shell utilise l'historique de la racine d'origine.

Maintenant, j'ai suivi votre exemple et modifié /root/.bashrc pour contenir

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

en première ligne.

La répétition des expériences ci-dessus avec Sudo -s et Sudo ls -l $HISTFILE a donné les mêmes résultats que précédemment (comme prévu). Mais Sudo -i m'a donné un shell sans historique (ni fichier d'historique non plus).

Après avoir exécuté

~$ 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

et se déconnecter

~$ 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

J'obtiens les résultats escomptés (y compris l'accès à "mon" historique en utilisant les touches fléchées).

N'oubliez pas que le contenu de /root/.bashrc ne concerne que exécuté pour un shell interactif sans login (comme Sudo -s), pour un login-shell (comme Sudo -i) /root/.bashrc est seulement source, et seulement si /root/.profile contient quelque chose comme

if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
3
guntbert