Как просмотреть историю sudo в Linux
Содержание
- Системный журнал аутентификации
- Как извлечь только записи sudo
- История команд оболочки
- Просмотр через journalctl (systemd)
- Графические просмотрщики журналов (GNOME, KDE, MATE)
- Разбор формата записей и примеры разбора
- Полезные команды для фильтрации и отчётов (grep/awk/sed/jq)
- Настройка логирования sudo (sudoers, rsyslog, journald)
- Централизованная запись и ротация логов
- Что искать при расследовании (SOP)
- Роли и чек-листы (админ, аудитор, пользователь)
- Безопасность и приватность логов
- Часто задаваемые вопросы
Системный журнал аутентификации
Большинство дистрибутивов Linux ведут отдельный журнал аутентификации — в Debian/Ubuntu это /var/log/auth.log, в RHEL/CentOS/Fedora/SUSE часто используется /var/log/secure или /var/log/audit/audit.log (если установлен auditd). Эти файлы содержат записи о попытках входа, вызовах sudo и связанных событиях.
Откройте файл с правами root, например так:
sudo nano /var/log/auth.logПримечание: путь может отличаться в зависимости от дистрибутива. Если запись лог-файла для sudo изменена в sudoers, проверьте её в /etc/sudoers или в файлах в /etc/sudoers.d.

Важно: raw-файл логов часто содержит много строк, не относящихся к sudo, поэтому разумно фильтровать его по ключевым словам (см. следующий раздел).
Как извлечь только записи sudo
Вместо прокрутки используйте grep для фильтрации. Примеры команд:
sudo grep -i "sudo" /var/log/auth.logИли, чтобы получить только последние N строк с sudo и записать в файл отчёта:
sudo grep -i "sudo" /var/log/auth.log | tail -n 200 > ~/sudo-report.txtЕсли ваш дистрибутив использует /var/log/secure:
sudo grep -i "sudo" /var/log/secureЧтобы включить временной диапазон, можно сочетать с awk или использовать journalctl (ниже). Пример с awk, выводящим строки за определённую дату (формат даты — образец для log, может отличаться):
sudo awk '/^Jun 20/ && /sudo/ {print}' /var/log/auth.logПолезный трюк: подсчёт сколько раз пользователи запускали sudo:
sudo grep "sudo" /var/log/auth.log | awk '{print $1,$2,$3,$9}' | sort | uniq -c | sort -nrЗдесь формат вывода может отличаться: подстройте индексы awk под вашу строку лога.

История команд оболочки
Файлы истории оболочки содержат команды, введённые конкретным пользователем в интерактивной сессии. Для Bash обычно ~/.bash_history, для zsh — ~/.zsh_history, для других оболочек — свои файлы.
Откройте историю конкретного пользователя:
sudo nano /home/USERNAME/.bash_historyОграничения истории оболочки:
- запись происходит при завершении сессии (если shell завершился корректно); команды из ещё открытой сессии могут отсутствовать;
- пользователи могут очистить или изменить файл истории;
- записи не содержат меток времени, если не включена соответствующая опция (HISTTIMEFORMAT для Bash).
Чтобы включить метки времени в Bash, добавьте в ~/.bashrc:
export HISTTIMEFORMAT="%F %T "После этого новые строки будут содержать временные метки.
Просмотр через journalctl (systemd)
Если система использует systemd, journalctl предоставляет централизованный журнал. Чтобы получить все записи, связанные с sudo:
sudo journalctl -u sudo.service -eНо чаще удобнее фильтровать по исполняемому файлу:
sudo journalctl -e /usr/bin/sudoПримеры полезных опций:
- последние N строк: –lines=100
- временной фильтр: –since=”2025-06-01” –until=”2025-06-02”
- вывод в формате JSON для дальнейшей обработки: -o json
Пример:
sudo journalctl --lines=50 -o short-iso /usr/bin/sudoЕсли вы хотите искать по конкретному пользователю:
sudo journalctl _UID=$(id -u username) /usr/bin/sudoили по полю _PID, _COMM и т.д. Формат полей systemd можно уточнить через man journalctl.

Графические просмотрщики журналов
Если вы работаете на рабочей станции с графическим окружением, можно использовать встроенные средства просмотра логов.
GNOME Logs
GNOME Logs (Logs) отображает журналы systemd и системные логи. Откройте «Приложения» и найдите «Журналы» или «Logs». Перейдите в вкладку «Security» (Безопасность) и введите в поиск «sudo», чтобы получить записи, связанные с привилегированными вызовами.

KSystemLog (KDE)
В KDE утилита KSystemLog предоставляет фильтр по ключевым словам. Откройте приложение и введите “sudo” в строку фильтра.

Если KSystemLog запрашивает пароль и отказывает — это поведение связано с попыткой приложения получить привилегии для доступа к защищённым файлам. Можно нажать «Ignore» (Игнорировать), чтобы запустить без привилегий (тогда часть логов будет недоступна).
MATE Log File Viewer
MATE предлагает простой просмотрщик логов (Log File Viewer). Откройте приложение и выберите auth.log. Затем используйте встроенный поиск по слову «sudo».

Разбор формата записей и примеры разбора
Типичная строка в /var/log/auth.log может выглядеть так (пример):
Jun 20 09:42:31 hostname sudo: alice : TTY=pts/2 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt updateПояснения:
- Дата/время — когда произошло событие;
- hostname — имя машины;
- процесс и пользователь — здесь sudo и имя пользователя alice;
- TTY — терминал, откуда выполнена команда (если применимо);
- PWD — текущая рабочая директория;
- USER — целевой пользователь (обычно root);
- COMMAND — выполненная команда.
Пример парсинга с awk, чтобы получить: дата, пользователь, команда:
sudo grep "sudo" /var/log/auth.log | awk -F"sudo: " '{print $1" | "$2}' | sed 's/; / | /g'Или более точно с регулярным выражением:
sudo grep "sudo" /var/log/auth.log | perl -ne 'if(/(\w+ \d+ \d+:\d+:\d+) (\S+) sudo: +([^:]+) : .*COMMAND=(.*)$/){print "$1 | $3 | $4\n"}'(Регулярные выражения и индексы полей зависят от формата ваших логов — подгоняйте под свою систему.)
Полезные команды и шаблоны для отчётов
Быстрые бейслайн-команды:
- Все записи sudo, отсортированные по пользователю:
sudo grep "sudo" /var/log/auth.log | awk -F"sudo: " '{print $2}' | cut -d":" -f1 | sort | uniq -c | sort -nr- Список последних 100 команд, выполненных через sudo, с датой:
sudo grep "sudo" /var/log/auth.log | tail -n 100- Экспорт в CSV (простая версия):
sudo grep "sudo" /var/log/auth.log | perl -ne 'if(/^(\w+\s+\d+\s+\d+:\d+:\d+) (\S+) sudo: +([^:]+) : .*COMMAND=(.*)$/){print "$1,$2,$3,$4\n"}' > sudo_history.csv- Использование journalctl в JSON и jq для выборки:
sudo journalctl /usr/bin/sudo -o json | jq -r '"\(.__REALTIME_TIMESTAMP) | \(.UID) | \(.MESSAGE)"'Настройка логирования sudo
В sudo можно задать файл для логов через sudoers. Откройте /etc/sudoers через visudo и проверьте параметр Defaults logfile=…
Пример установки лог-файла:
Defaults logfile="/var/log/sudo.log"После этого sudo будет писать в указанный файл. Однако многие дистрибутивы по умолчанию логируют через syslog/journal — изменение sudoers полезно, если хотите отдельный файл.
Дополнительно можно включить флаги для логирования команд и окружения:
Defaults log_input, log_outputЭти опции заставят sudo записывать ввод/вывод сеанса (потребует настроенного пэра sudo_logsrvd для безопасного хранения).
Важно: изменение sudoers делайте только через visudo, чтобы избежать ошибок синтаксиса.
Централизованная запись и ротация логов
Для корпоративных систем имеет смысл отправлять логи на центральный сервер (rsyslog, syslog-ng, journal-gateway). Также убедитесь, что настроена ротация логов (logrotate) и что файлы логов не становятся группой записи или доступны анонимно.
Пример конфигурации rsyslog для пересылки на удалённый сервер:
*.* @@logs.example.com:514Настройка ротации: /etc/logrotate.d/sudo или обновление /etc/logrotate.conf, чтобы лог-файлы не росли бесконтрольно.
Что искать при расследовании: пошаговый SOP
- Сбор: экспортируйте все записи sudo за период инцидента в отдельный файл.
- sudo journalctl /usr/bin/sudo –since=”2025-06-20” –until=”2025-06-21” -o short-iso > /tmp/sudo-20250620.log
- Идентификация пользователей: подсчитайте, кто запускал sudo и когда.
- sudo grep “sudo” /tmp/sudo-20250620.log | awk ‘{print $9}’ | sort | uniq -c | sort -nr
- Корреляция с командами: найдите подозрительные команды (установка пакетов, изменение конфигураций, создание пользователей, изменение sudoers).
- Дополнительные источники: ~/.bash_history каждой подозрительной учётки, /var/log/auth.log, системные логи (daemon, syslog), auditd (если включён).
- Снимите образ машины или сохраните журналы в защищённом месте для аудита.
- Закройте доступ (измените пароли/ключи, отозовите временные полномочия).
- Проведите постинцидентный анализ и обновите политики (минимизация NOPASSWD, настройка MFA для sudo, централизованное логирование).
Критерии приёмки: способы убедиться, что расследование завершено
- собраны логи за весь период инцидента;
- подтверждён список пользователей и их команд;
- приняты меры по устранению уязвимости;
- документы обновлены (SOP, изменения конфигурации).
Роли и чек-листы
Администратор
- проверить /var/log/auth.log и journalctl на sudo-записи;
- просмотреть /etc/sudoers и /etc/sudoers.d;
- при необходимости временно отозвать привилегии;
- включить более подробное логирование (если бизнес-процесс позволяет).
Аудитор
- собрать экспорт логов в неизменном виде;
- сверить записи sudo с журналами работы приложений и сетью;
- проверить ротацию и хранение логов;
- убедиться в наличии политик хранения и доступа.
Пользователь (с привилегиями)
- понимайте, что все sudo-вызовы логируются;
- избегайте использования sudo для повседневных задач;
- не передавайте свой пароль и ключи.
Безопасность и приватность логов
Логи sudo содержат команды и иногда части путей или переменных среды, которые могут содержать персональные данные или чувствительную информацию (токены, имена пользователей). При обработке и хранении логов учитывайте правила конфиденциальности и законодательства (например, GDPR в ЕС): храните логи в защищённой среде, реализуйте контроль доступа и политику удаления старых записей.
Советы по защите:
- ограничьте доступ к логам через права файловой системы;
- используйте шифрование канала при пересылке логов;
- применяйте ротацию и архивирование с шифрованием;
- документируйте, кто и зачем имеет доступ к журналам.
Альтернативные подходы и дополнительные инструменты
- auditd / ausearch: более детальная аудит- система ядра; полезна если нужно фиксировать создание/удаление файлов, сокетов и т.д.
- SIEM (Elastic/Graylog/Splunk): централизованный сбор, корреляция и оповещение по событиям sudo.
- sudo_logsrvd: позволяет сохранять ввод/вывод сессий sudo (подходит для высоких требований к аудиту).
Примеры неудач и когда методика может не сработать
- Пользователь удалил или подправил ~/.bash_history — историю оболочки нельзя считать надёжным источником сама по себе.
- Если sudo настроен на логирование в кастомный файл и вы его не знаете, стандартные grep/journalctl могут ничего не найти; проверьте sudoers.
- Если лог-файлы были перезаписаны или удалены злоумышленником, потребуется восстановление с резервных копий или централизованных логов.
Полезная шпаргалка команд (Cheat sheet)
- Просмотр auth.log любым pager:
sudo less /var/log/auth.log- Фильтрация по sudo:
sudo grep -i "sudo" /var/log/auth.log | less- Последние 50 строк из journalctl для sudo:
sudo journalctl -u sudo.service -n 50 --no-pager- Экспорт в CSV (простая форма):
sudo grep "sudo" /var/log/auth.log | perl -ne 'if(/^(\w+\s+\d+\s+\d+:\d+:\d+) (\S+) sudo: +([^:]+) : .*COMMAND=(.*)$/){print "$1,$2,$3,$4\n"}' > /tmp/sudo.csvЧасто задаваемые вопросы
Можно ли показывать только последние записи sudo в journalctl?
Да. Например, чтобы показать последние 10 записей:
sudo journalctl --lines=10 -e /usr/bin/sudoИли задать временной интервал:
sudo journalctl --since=yesterday --until=today -e /usr/bin/sudoЧто если я не использую Bash — возможно ли посмотреть историю sudo?
Да. Логи sudo ведутся независимо от оболочки и записываются в системные журналы. Файлы истории оболочек отличаются: у каждой оболочки — свой файл (~/.history, ~/.zsh_history и т.д.).
KSystemLog требует пароль и отказывает — сломана ли программа?
KSystemLog по умолчанию пытается получить привилегии для доступа к защищённым журналам. Если вы отказываете доступ, приложение всё равно может работать в урезанном режиме (нажмите «Ignore»). При отказе чаще всего просто не будут доступны защищённые файлы логов.
Итог
Просмотр истории sudo — важная часть администрирования и расследования инцидентов. Используйте комбинацию системных логов (/var/log/auth.log или /var/log/secure), journalctl и истории оболочки для полной картины. Настройте централизованное логирование, ротацию и ограничьте доступ к логам, чтобы обеспечить безопасность и соответствие правилам хранения данных.
Image credit: Unsplash
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента