history
- это встроенная команда оболочки bash, а sudo
не работает со встроенными командами оболочки.
Что такое встроенная команда, а что нет?
Я использовал команду, which
«возвращает пути к файлам (или ссылкам), которые будут выполняться в среде», чтобы подтвердить, что history
не была внешней (для bash) командой.
Например, бег
$ which history
$
ничего не возвращает и код выхода равен 1 (одна или несколько указанных команд не существует или не исполняются) [FYI смотрите код выхода с помощью echo $?
], во время бега
$ which ls
/bin/ls
$
и код выхода 0 (все указанные команды найдены и выполнимы).
Кроме того, в bash вы можете найти справку по встроенным командам с help
(или выполнить поиск на странице man bash
). Например, набрав
$ help history
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps
arg [arg...]
Display or manipulate the history list.
...
показывает справочную информацию Bash. Запуск команды help non-bash-command
возвращает что-то похожее на это:
$ help ls
bash: help: no help topics match `ls'. Try `help help' or `man -k ls' or
`info ls'.
и код выхода 1
Так что же делал sudo?
Вы можете искать в своей истории команды sudo
ваш пользователь выполнил (и не пропустил, сохранив их в истории) с помощью grep '^sudo' .bash_history
или history|less
или аналогичного.
Или в Ubuntu файл /var/log/auth.log
хранит записи о том, что sudo
делал для всех пользователей, ищет там "sudo" (другие дистрибутивы могут использовать файл /var/log/secure
) или может использование
sudo grep sudo /var/log/auth.log
или запустите sudo journalctl _COMM=sudo
если у вас есть systemd.
См. Вопрос «Подробно о командах sudo, выполняемых всеми пользователями» в Unix и Linux для более подробной информации.