LinuxВысокая

Исправляем sudo в Linux: причины и пошаговое решение

Гайд помогает быстро найти причину, по которой sudo перестаёт работать, и восстанавливает права администратора через проверку конфигурации, логов и политик безопасности.

Обновлено 28 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12Fedora 38/39CentOS 7/8/Stream

Введение / Зачем это нужно

Когда sudo перестаёт работать, вы теряете возможность устанавливать ПО, управлять сервисами и изменять системные настройки. Это может быть вызвано удалением пакета, ошибкой в /etc/sudoers, потерей прав на бинарный файл или изменением политик безопасности. В этом гайде вы узнаете, как быстро диагностировать проблему и вернуть контроль над системой безопасным и надёжным способом.

Требования / Подготовка

  • Доступ к терминалу под любой учётной записью (даже без прав администратора).
  • Возможность использовать su - или Live-образ (если система заблокирована полностью).
  • Пакет sudo установлен или возможность его переустановить.
  • Права на редактирование /etc/sudoers (только через visudo).

Пошаговая инструкция

Шаг 1: Проверить наличие и версию sudo

Убедитесь, что команда доступна и её путь указан в PATH:

which sudo
sudo --version

Если which sudo ничего не возвращает, возможно, пакет удалён или /usr/bin отсутствует в переменной окружения. Проверьте PATH:

echo $PATH

При необходимости временно добавьте путь:

export PATH=/usr/bin:$PATH

Шаг 2: Проверить права и владельца sudo

Права на /usr/bin/sudo должны быть 4755, а владелец — root:root. Проверьте это:

ls -l /usr/bin/sudo

Если права отличаются, восстановите их (требуется root):

su -
chmod 4755 /usr/bin/sudo
chown root:root /usr/bin/sudo

⚠️ Важно: бит setuid (4755) обязателен, иначе sudo не сможет повысить привилегии.

Шаг 3: Проверить синтаксис sudoers

Ошибки в /etc/sudoers или подключаемых файлах в /etc/sudoers.d/ блокируют работу команды. Провалидируйте конфигурацию:

visudo -c

Если вывод содержит ошибки, исправьте их:

visudo

Не редактируйте файл напрямую через nano или vi вне visudo — это может полностью заблокировать sudo. Убедитесь, что ваша строка доступа выглядит корректно, например:

username ALL=(ALL:ALL) ALL

или для группы:

%sudo   ALL=(ALL:ALL) ALL

Шаг 4: Проверить членство в группах

Убедитесь, что ваша учётная запись состоит в группе sudo или wheel:

groups

Если группы нет, добавьте её (требуется root):

su -
usermod -aG sudo username

После этого перезайдите в сеанс или выполните newgrp sudo, чтобы применить изменения.

Шаг 5: Проверить логи и политики PAM

Изучите системные журналы на предмет отказов:

journalctl -xe | grep sudo
cat /var/log/auth.log | grep sudo

Если там есть сообщения о блокировке или неверной конфигурации, проверьте /etc/pam.d/sudo. Убедитесь, что нет лишних или закомментированных строк, блокирующих аутентификацию. При необходимости восстановите оригинальный файл из пакета или документации дистрибутива.

Шаг 6: Восстановить доступ через Live-носитель

Если система недоступна даже для su - или повреждён корень, используйте Live-образ:

  1. Загрузитесь с USB-носителя.
  2. Смонтируйте корневой раздел:
sudo mount /dev/sdXn /mnt
  1. При необходимости смонтируйте псевдофайловые системы:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
  1. Исправьте /etc/sudoers или переустановите sudo в целевой системе:
sudo chroot /mnt
visudo
# или
apt reinstall sudo    # Ubuntu/Debian
dnf reinstall sudo    # Fedora/CentOS
  1. Перезагрузите систему.

Проверка результата

После исправлений убедитесь, что sudo работает корректно:

sudo whoami

Ожидаемый вывод — root. Проверьте также, что ваш пользователь может выполнять команды с повышением привилегий:

sudo ls /root

Если ошибок нет — доступ восстановлен.

Возможные проблемы

  • «sudo: no valid sudoers sources found» — повреждён или отсутствует /etc/sudoers. Исправьте его через visudo или Live-образ.
  • «sudo: must be setuid root» — бит setuid сброшен. Восстановите права chmod 4755 /usr/bin/sudo.
  • «username is not in the sudoers file» — пользователя нет в sudoers или группе sudo. Добавьте запись или членство в группе.
  • «sudo: unable to resolve host» — несоответствие имени хоста в /etc/hostname и /etc/hosts. Приведите их в соответствие или временно закомментируйте проблемную строку в sudoers, если она не критична.
  • Блокировка через PAM — проверьте /etc/pam.d/sudo и отключите лишние модули, например pam_access или pam_time, если они блокируют вашу учётную запись.

Часто задаваемые вопросы

Почему появляется ошибка «sudo: command not found»?
Как безопасно восстановить доступ, если испорчен файл sudoers?
Можно ли временно дать права без sudo?
Что делать, если sudo работал, но теперь требует пароль чужого пользователя?

Полезное

Проверить наличие и версию sudo
Проверить права и владельца sudo
Проверить синтаксис sudoers
Проверить членство в группах
Проверить логи и политики PAM
Восстановить доступ через Live-носитель

Эта статья помогла вам решить проблему?