От root «не найдены» reboot и shutdown, в журнале странные сообщения, подозрение на вирус: разница между su и su -, и почему читать журнал буквально

Что было. После обновления администратор заметил: в журнале каждые ~50 секунд сообщения об USB-устройстве ввода, команды reboot и shutdown от root отвечают «команда не найдена», редактор ведёт себя странно при правке системных файлов. Вывод: «вирус». Тема так и называлась.

Что оказалось. Две независимые бытовые причины. Сообщения в журнале шли от мыши с плохим контактом в док-станции, которую делили между двумя компьютерами. А «команда не найдена» появлялась потому, что пользователь переходил в root командой su без дефиса: при этом сохраняется окружение обычного пользователя, в PATH которого нет /usr/sbin и /sbin, где лежат reboot, shutdown, iptables, useradd. Модератор указал на su -; автор подтвердил и снял подозрения.

Правило. Переходить в root через su - (полный вход с окружением root) или sudo -i; для одиночных команд sudo команда. su без дефиса оставляет HOME, PATH и переменные пользователя, из-за чего и команды не находятся, и конфиги пишутся не туда (~/.vimrc, ~/.ssh остаются пользовательскими), и владельцы созданных файлов путаются.

Как проверить, что дело в PATH. echo $PATH в сессии root: должен содержать /usr/local/sbin:/usr/sbin:/sbin. Полный путь /usr/sbin/reboot работает всегда. В Debian 12+ /sbin и /usr/sbin объединены с /usr/sbin, но в PATH каталог всё равно должен присутствовать.

Как отличать шум от компрометации. Признаки заражения: неизвестные процессы с высокой нагрузкой, новые записи в cron и systemd, новые ключи в authorized_keys, исходящие соединения на незнакомые адреса, подменённые бинарники (debsums -c, rpm -Va), скрытые процессы (ps против /proc). Признаки бытовых проблем: сообщения ядра про конкретное USB-устройство, ошибки «команда не найдена» при неполном PATH, странности редактора при неверном TERM. Начинать с чтения сообщения дословно: в нём почти всегда назван виновник (в данном случае модель мыши).

Если подозрение всё же осталось. Не «лечить» вслепую: снять список процессов, соединений, cron и ключей, сравнить с эталоном, проверить контрольные суммы пакетов. Об этом есть отдельные разборы про заражения майнерами и их признаки.

Команда описана в документации Ubuntu.