заставьте sudoers использовать их собственный файл истории

Я просто, может казаться, не заставляю это работать в Ubuntu, это должен быть простой ответ, возможно, кто-то может помочь мне. Все, что я пытаюсь сделать, заставляют sudoers использовать их собственный файл истории, но если я установил var истории в .bashrc для корня с:

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

ничего, кажется, не происходит.

Я попытался измениться /root/.bashrc и /etc/skel/.bashrc с вышеупомянутой записью.Ничего. Я заставил это работать в CentOS прежде (См., заставляют sudoers использовать их собственный файл истории).

Я даже переместил запись в запуск файла, когда я нашел некоторые предложения, которые указали, что это может быть проигнорировано после определенного момента, но независимо от положения, не создаются файлы истории. Если я использую свою клавишу со стрелкой однако, записи истории там..., куда они прибывают от, у меня больше нет подсказки, на некоторое волшебство, Voodoo кажется, что это кажется.

Любая справка ценилась бы.

5
задан 13 April 2017 в 05:37

1 ответ

Я просто следовал за тем, что Вы описали, сопровождаемый несколькими экспериментами

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

Таким образом, когда мы выполняем стандарт sudo команды или когда мы используем sudo -s для получения корневой оболочки, мы уже используем наш собственный файл истории.

Только, когда мы вызываем sudo -i для получения надлежащей оболочки входа в систему, исходная корневая история используется.

Теперь я последовал Вашему примеру и отредактировал /root/.bashrc содержать

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

как первая строка.

Повторение выше экспериментов с sudo -s и sudo ls -l $HISTFILE приведенный те же результаты как прежде (как ожидалось). Но sudo -i дал мне оболочку без истории (и никакого файла истории любой).

После выполнения

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

и выходить из системы

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

Я получаю ожидаемые результаты (включая доступ к "моей" истории при помощи клавиш со стрелками.

Следует иметь в виду что содержание /root/.bashrc только выполняются для интерактивной, оболочки невхода в систему (как sudo -s), для оболочки входа в систему (как sudo -i) /root/.bashrc только получен, и только если /root/.profile содержит что-то как

if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
3
ответ дан 23 November 2019 в 10:26

Другие вопросы по тегам:

Похожие вопросы: