история не отображается как пользователь sudo

В некоторых моих установках Ubuntu, когда я запускаю sudo su и становлюсь пользователем sudo, я могу напечатать историю и просмотреть список команд, запускаемых от имени пользователя sudo. Тем не менее, на моей одной установке Ubuntu, по какой-то причине, когда я запускаю sudo su и набираю history, я просто получаю это:

$ sudo su
# history
1  history 

Но я точно знаю, что многие команды выполнялись как пользователь sudo, но когда я ssh out и ssh возвращаюсь на свой сервер Ubuntu, они не отображаются, как на других серверах. У меня есть какой-то переключатель или что-то отключено на этом сервере? Как я могу восстановить доступ для просмотра истории команд, запускаемых от имени пользователя sudo?

4
задан 4 December 2013 в 05:02

2 ответа

Некоторые возможности, почему вы не сохраняете историю оболочки:

  • Ваша корневая оболочка не /bin/bash, но /bin/sh (символическая ссылка на /bin/dash). Измените это с помощью команды chsh.
  • Файловая система, в которой находится /root, монтируется только для чтения, поэтому файл истории не может быть записан.
  • Переменная HISTFILE установлена ​​на значение, отличное от /root/.bash_history. Пустой файл отключает историю, другие значения используются в качестве места для записи истории.
0
ответ дан 4 December 2013 в 05:02

history то, что известно как встроенное. Это - по существу функция удара, которая работает в рамках Вашей сессии (как остальная часть входа, который питается ~/.bash_history также).

Когда Вы работаете sudo something, это происходит в рамках Вашей сессии, не корень. Кроме того, когда что-то выполняется с sudo, он' не порождает отдельную сессию удара и затем выполнять команду. Это просто выполняется с соответствующими полномочиями (я упрощаю истину несколько).

Это мягко подрезает другую точку оболочки Lekensteyn. Это верно, это просто не имеет значения. Никакой корень bash или dash оболочка, выполняющая команду. Можно доказать это путем выполнения чего-то как sudo -u $USER whoami и затем взгляд на ~/.bash_history. Существует только одна команда. Если бы это было другой оболочкой, то я ожидал бы видеть sudo -u $USER whoami сопровождаемый whoami.

Также sudo su -c 'echo $0' производит родительскую оболочку (bash в моем случае), хотя я не уверен, значительно ли это столь же.


Так или иначе, когда Вы работаете sudo something это просто входит в Ваше собственное ~/.bash_history. Если Вы хотите видеть команду, с которой Вы работали sudo, выполненный:

grep -E '^sudo' ~/.bash_history
7
ответ дан 4 December 2013 в 05:02

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

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