Linux

Команда sudo в Linux: полное руководство по использованию и настройке

В этом гайде вы узнаете, как работают права администратора в Linux через команду sudo. Мы разберём базовое использование, настройку файла sudoers, безопасность и решение частых проблем.

Обновлено 17 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 8+Linux в целом

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

Команда sudo — это фундаментальный инструмент управления Linux-системой. Она позволяет выполнять задачи, требующие прав суперпользователя (root), без постоянного входа в систему от его имени. Это повышает безопасность: все действия с sudo логируются, а пользователь работает с минимально необходимыми привилегиями. После прохождения этого гайда вы сможете безопасно устанавливать ПО, управлять службами и изменять системные файлы.

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

  1. Доступ к терминалу (Ctrl+Alt+T или SSH-подключение).
  2. Учётная запись пользователя, добавленная в группу sudo (обычно создаётся при установке Ubuntu/Debian).
  3. Знание пароля этого пользователя.
  4. Для редактирования sudoers — хотя бы один работающий sudo-доступ.

Шаг 1: Базовое использование sudo

Перед любой командой, требующей повышенных прав, просто добавьте sudo. Система запросит пароль текущего пользователя (не пароль root!).

Примеры:

# Обновление списка пакетов (Debian/Ubuntu)
sudo apt update

# Перезапуск веб-сервера nginx
sudo systemctl restart nginx

# Установка программы (пример для CentOS)
sudo yum install htop

# Редактирование защищённого файла (например, конфигурации сети)
sudo nano /etc/network/interfaces

Важно: После ввода пароля sudo кэширует аутентификацию. В течение 15 минут (по умолчанию) последующие команды sudo не будут запрашивать пароль.

Шаг 2: Понимание механизма и таймера

sudo работает по принципу "доверенной delegation". Вы не становитесь root, но ваша команда выполняется с егоUID. Кэширование управляется параметром timestamp_timeout в /etc/sudoers.

  • Проверить оставшееся время кэша: sudo -v (если пароль не нужен — время ещё не вышло).
  • Принудительно обновить таймер (ввести пароль): sudo -k (аннулирует текущий кэш).

Шаг 3: Настройка прав через файл sudoers (visudo)

Никогда не редактируйте /etc/sudoers напрямую в текстовом редакторе. Всегда используйте visudo — он проверяет синтаксис перед сохранением, что предотвращает потерю доступа к системе.

  1. Откройте конфигурацию:
    sudo visudo
    

    По умолчанию откроется редактор nano (в Ubuntu) или vi (в CentOS).
  2. Добавьте пользователя в группу sudo (если этого ещё не сделано). Обычно есть строка:
    %sudo   ALL=(ALL:ALL) ALL
    

    Убедитесь, что ваш пользователь в группе sudo (groups $USER).
  3. Настройте правило без пароля для конкретной команды (например, для reboot):
    username ALL=(ALL) NOPASSWD: /usr/bin/systemctl reboot
    

    Внимание: Указывайте полный путь к команде (which systemctl).
  4. Запретите выполнение опасных команд (например, passwd для других пользователей):
    username ALL=(ALL) ALL, !/usr/bin/passwd
    
  5. Сохраните и выйдите. В nano: Ctrl+X, затем Y и Enter.

Шаг 4: Безопасность и лучшие практики

  • Минимальные права: Давайте пользователям только те права, которые необходимы для работы. Избегайте ALL=(ALL) ALL для ненужных пользователей.
  • Путь к команде: Всегда указывайте абсолютный путь в sudoers (например, /usr/bin/apt, а не просто apt). Это предотвращает выполнение вредоносного скрипта с таким же именем из PATH.
  • Группы: Используйте группы (%developers, %admin) для управления правами, а не отдельных пользователей.
  • Аудит: Все команды с sudo логируются в /var/log/auth.log (Debian/Ubuntu) или /var/log/secure (CentOS). Проверяйте их при подозрении на несанкционированный доступ.

Шаг 5: Типичные ошибки и их решение

Симптом / ОшибкаПричинаРешение
username is not in the sudoers fileПользователь не добавлен в группу sudo или нет записи в sudoers.1. Войти под root (если есть пароль root) или через восстановление системы.
2. Добавить пользователя: usermod -aG sudo username.
3. Перезайти.
sudo: command not foundПакет sudo не установлен (редко в современных дистрибутивах).Установить от root: apt install sudo (Debian/Ubuntu) или yum install sudo (CentOS).
sudo: no tty present and no askpass program specifiedПопытка выполнить sudo в неинтерактивном скрипте без возможности ввода пароля.Использовать sudo -S с передачей пароля через stdin (небезопасно!) или настроить NOPASSWD для конкретной команды в sudoers.
sudo: parsing error in /etc/sudoers near line XСинтаксическая ошибка в sudoers после редактирования без visudo.1. Запустить sudo visudo -c для проверки.
2. Исправить ошибку, используя sudo visudo (если ещё есть доступ).
3. Если доступ потерян — загрузиться в single-user mode и исправить файл вручную.

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

  1. Базовый тест: Выполните команду, требующую прав, например sudo whoami. Если вывод root — всё работает.
  2. Проверка прав пользователя:
    sudo -l
    
    Вы увидите список команд, которые можете выполнять от root, и требуется ли пароль.
  3. Проверка группы:
    groups
    
    В списке должна быть группа sudo (или wheel в CentOS).

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

  • Потеря доступа после редактирования sudoers: Если вы допустили синтаксическую ошибку и сохранили файл (без visudo), sudo перестанет работать. Вам потребуется доступ к системе в однопользовательском режиме (recovery mode) для исправления файла.
  • Разные пути к командам: В разных дистрибутивах системные утилиты могут лежать в разных местах (/usr/sbin/ vs /sbin/). При написании правил в sudoers используйте which <command> для определения полного пути.
  • Зависимости от переменной PATH: При выполнении через sudo PATH может меняться. Лучше всегда указывать полный путь к исполняемому файлу в скриптах и правилах sudoers.
  • Таймаут пароля слишком короткий: Чтобы увеличить время кэширования (например, до 30 минут), добавьте в sudoers (через visudo): Defaults timestamp_timeout=30. Значение -1 отключает истечение срока.

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

Что такое sudo и зачем он нужен?
Как добавить пользователя в группу sudo?
Почему sudo просит пароль только первый раз?
Как безопасно редактировать файл sudoers?

Полезное

Проверка наличия прав sudo
Базовое использование sudo
Запуск оболочки root (осторожно!)
Настройка прав через sudoers (visudo)
Проверка конфигурации sudoers