Гид по технологиям

Как использовать sudo на Linux — права, настройка и лучшие практики

9 min read Linux Обновлено 12 Dec 2025
Как использовать sudo на Linux — права и настройка
Как использовать sudo на Linux — права и настройка

sudo позволяет временно исполнить команду от имени другого пользователя (обычно root), не входя в систему под ним. Правильная конфигурация sudoers и использование групп/алиасов даёт гибкую модель делегирования прав: можно давать полный доступ, конкретные команды или ограниченные роли. Всегда редактируйте sudoers через visudo, минимизируйте привилегии, фиксируйте изменения и применяйте меры безопасности (аудит, ограничение команд, NOLOGIN для сервисных учёток).

Быстрые ссылки

  • sudo и права root
  • Список sudoers
  • Выполнение команды от имени другого пользователя
  • Редактирование файла sudoers
  • Добавление пользователей в группу sudo
  • Ограничение прав sudo для пользователей
  • Использование User_Alias в sudoers
  • Три быстрых приёма sudo
  • Безопасность и ответственность

Логотип Linux и терминал — иллюстрация

Что такое sudo и зачем оно нужно

sudo (substitute user do, ранее superuser do) — утилита для однократного повышения привилегий при выполнении команд. Вместо того чтобы постоянно работать под учётной записью root (что рискованно), администраторы обычно работают под обычной учётной записью и поднимают права только для конкретных команд. Это снижает площадь потенциальной ошибки и позволяет вести аудит: какие пользователи и какие команды запускали с повышенными правами.

Определение в одну строку: sudo — инструмент для временного выполнения команд от имени другого пользователя с возможностью детального контроля и аудита.

Важное: всегда редактируйте файл sudoers только через visudo. Неправильный синтаксис может заблокировать доступ к sudo для всех.

sudo и права root

В Linux почти всё обрабатывается как файл или через файловый интерфейс ядра. Права на файлы и каталоги — один из ключевых механизмов контроля доступа. Но у учётной записи root этих ограничений нет: root может изменить любые файлы и процессы. Это делает root мощным, но и опасным: ошибки или компрометация root приводят к полному контролю над системой.

Поэтому лучшая практика — не работать постоянно под root. Вместо этого используйте sudo для выполнения отдельных задач. sudo сохраняет журнал (audit), позволяет делегировать права выборочно и минимизировать длительную привилегированную сессию.

Список sudoers и базовая логика

Когда вы устанавливаете большинство современных дистрибутивов, пользователь, созданный в процессе установки, автоматически получает возможность использовать sudo (попадает в список sudoers или в соответствующую группу, например sudo или wheel). Содержимое, кто и какие команды может запускать с sudo, хранится в файле /etc/sudoers и в файлах под /etc/sudoers.d/. Но править напрямую /etc/sudoers опасно: используйте visudo — он заблокирует файл и проверит синтаксис.

Ключевые элементы sudoers:

  • Определения пользователей и групп (user, %group).
  • Алиасы: User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias.
  • Правила вида: who hosts = (runas) commands

Примеры:

  • %sudo ALL=(ALL:ALL) ALL — члены группы sudo могут запускать любые команды как любые пользователи/группы.
  • harry ALL=/usr/bin/apt-get — пользователь harry может запускать только apt-get с sudo.

Выполнение команды от имени другого пользователя

По умолчанию sudo выполняет команду как root. Чтобы запустить команду как другой пользователь, используется опция -u.

sudo -u mary whoami

Вывод whoami в этом примере — mary.

Чтобы получить интерактивную сессию как другой пользователь (так, будто вы залогинились он в неё), применяется -i:

sudo -i -u mary

Внутри вы можете выполнять команды: pwd, whoami, ls -hl и затем выйти через exit. Профили и скрипты входа пользователя (например, .bashrc, .profile) будут выполнены для этой сессии.

Сессия в терминале пользователя mary, показана команда sudo -i -u mary

Ключевые заметки:

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

Редактирование файла sudoers

Редактируйте sudoers только через visudo. visudo:

  • Блокирует файл от одновременного редактирования несколькими пользователями.
  • Проверяет синтаксис перед сохранением.
  • Позволяет откатить изменения при ошибках.

Примеры использования редактора по умолчанию:

  • На Ubuntu/Manjaro visudo может открыть nano.
  • На Fedora часто открывается vim.

Чтобы заставить visudo использовать nano (например, на Fedora), выполните:

sudo dnf install nano
sudo EDITOR=nano visudo

Редактор nano с открытым файлом sudoers

Важно: не используйте «принудительную» запись некорректного файла, если visudo предупредит об ошибках — лучше откатить изменения и исправить синтаксис.

Добавление пользователей в группу sudo

На многих дистрибутивах есть группа sudo (или wheel). Строка в sudoers вида %sudo ALL=(ALL:ALL) ALL даёт всем членам этой группы полный доступ через sudo.

Добавление пользователя tom в группу sudo:

sudo usermod -a -G sudo tom

Где:

  • -G указывает дополнительные группы,
  • -a добавляет группу к уже существующим (без -a вы перезапишете список групп).

Проверка групп пользователя:

groups

Если Tom в группах tom и sudo, он получит права sudo. Mary, если остаётся только в группе mary, права иметь не будет.

Пример: попытка открыть /etc/shadow без sudo завершится отказом; с sudo — при наличии прав будет доступ.

Файл /etc/shadow открыт через less с привилегиями sudo

Ограничение прав sudo для отдельных пользователей

Иногда нужно разрешить пользователю выполнить всего одну или несколько конкретных команд с повышенными правами (например, установка пакетов), но не давать полный root-доступ. Это делается добавлением строки в sudoers с указанием полного пути к разрешённым командам.

Пример: дать harry право запускать только apt-get:

# откройте visudo
sudo visudo

# добавьте строку
harry    ALL=/usr/bin/apt-get

Обратите внимание: путь к команде должен быть абсолютным. Можно перечислять несколько команд через запятую.

Проверка синтаксиса:

sudo visudo -c

Пример использования harry:

sudo apt-get install finger

Попытка выполнить другую команду требующую sudo (например shutdown) будет отклонена.

Запись sudoers для harry, разрешающая apt-get

Использование User_Alias и других алиасов

Если вам нужно присвоить одни и те же права нескольким пользователям, вместо дублирования строк лучше использовать User_Alias.

Пример:

# в sudoers
User_Alias INSTALLERS = harry, mary
INSTALLERS    ALL=/usr/bin/apt-get

Теперь и harry, и mary могут запускать apt-get, и изменение списка пользователей производится в одном месте.

sudoers с добавленным User_Alias INSTALLERS

Полезные алиасы:

  • Cmnd_Alias — группирует команды (например, PKGMGMT = /usr/bin/apt-get, /usr/bin/dnf).
  • Runas_Alias — группирует учётные записи, от имени которых можно запускать команды.
  • Host_Alias — если у вас централизованное управление sudo через сеть.

Пример Cmnd_Alias:

Cmnd_Alias PKGMGMT = /usr/bin/apt-get, /usr/bin/apt, /usr/bin/dnf
Installer ALL = (root) PKGMGMT

Три быстрых приёма sudo

  • Повтор последней команды с sudo:
sudo !!
  • Сбросить срок аутентификации (чтобы снова запросил пароль):
sudo -k
  • Просмотр неудачных и успешных попыток в журнале аутентификации:
less /var/log/auth.log

Просмотр /var/log/auth.log с записями sudo

В логе будут строки с указанием пользователя, TTY и команды.

Практическое руководство — шаг за шагом (Playbook)

Ниже — рабочий набор действий для повседневных сценариев администратора.

  1. Добавить пользователя в систему и дать ограничённые права на установку пакетов:
sudo adduser developer
sudo usermod -a -G developers developer
sudo EDITOR=nano visudo
# Добавить в sudoers:
User_Alias PKG_ADMINS = developer
Cmnd_Alias PKG_CMD = /usr/bin/apt-get, /usr/bin/apt
PKG_ADMINS ALL=(root) PKG_CMD
  1. Дать пользователю один off-boarding шаг: удалить из группы sudo и проверить логи.
sudo deluser developer sudo
sudo tail -n 200 /var/log/auth.log
  1. Быстрая проверка синтаксиса sudoers:
sudo visudo -c
  1. Откат при ошибках: если visudo пометил файл как некорректный, восстановите из резервной копии или из /etc/sudoers.d/.

Критерии приёмки:

  • Пользователь может выполнить только разрешённые команды.
  • visudo -c возвращает OK.
  • Все изменения задокументированы и под контролем версий (например, в CMDB).

Рольовые чек-листы

Администратор:

  • Использовать visudo для правок.
  • Минимизировать список команд для пользователей.
  • Включить аудит и хранить записи логов.
  • Регулярно пересматривать членство в группах sudo.

Разработчик/DevOps:

  • Запрашивать минимум прав для задач.
  • Использовать sudo для кратковременных действий, не держать открытые root-сессии.
  • Документировать команды, требующие прав.

Оружник безопасности/инженер SOC:

  • Настроить централизованный сбор логов.
  • Настроить оповещения на неудачные попытки sudo или запуск критичных команд.

Когда sudo не подходит (контрпримеры)

  • Для автоматизации в CI/CD: не храните пароль пользователя для выполнения sudo. Вместо этого используйте отдельные сервисные учётные записи с ограниченными правами или инструменты управления конфигурацией (Ansible, Salt) с безопасным хранением ключей.
  • Если нужен постоянный фоновой доступ к ресурсам от имени сервиса — используйте системные сервисы (systemd service с нужным пользователем) вместо назначения sudo права «всегда».
  • Не давайте sudo на shell (например, /bin/bash) напрямую: это эквивалентно передачи root.

Модель зрелости делегирования привилегий

  • Уровень 0 — все пользователи root: рискованно.
  • Уровень 1 — группа sudo для нескольких администраторов: удобно, но широко.
  • Уровень 2 — назначение прав по ролям с алиасами и списками команд: баланс безопасности и удобства.
  • Уровень 3 — централизованное управление sudo, аудит, интеграция с LDAP/AD и CI: промышленный подход.

Рекомендации по безопасности и жёсткое укрепление

  • Ограничивайте команды по абсолютным путям.
  • Используйте Cmnd_Alias, чтобы группировать команды и минимизировать дублирование.
  • Не разрешайте запуск shell-утилит (sh, bash) через sudo.
  • Включите запись команд в лог (Defaults logfile=”/var/log/sudo.log” или централизованный rsyslog).
  • Настройте timeout на аутентификацию (Defaults timestamp_timeout=0 или другое значение).
  • Отключите NOPASSWD для команд, которые могут быть использованы в атаке, если это не требуется по автоматизации.
  • Регулярно проверяйте /etc/sudoers.d/ на неожиданные файлы.

Пример безопасной строки:

Cmnd_Alias SYSTEM = /usr/sbin/shutdown, /usr/bin/systemctl
AdminGroup ALL=(ALL) NOPASSWD: SYSTEM

Здесь AdminGroup может выключать и перезапускать службы без ввода пароля, но не имеет полного shell-доступа.

Советы по отладки и частые ошибки

  • Ошибка синтаксиса в sudoers — используйте visudo -c, и просмотрите последнее сохранённое состояние.
  • Если вдруг вы потеряли доступ к sudo на всех учётках, загрузитесь в однопользовательский режим или используйте live-образ для восстановления /etc/sudoers.
  • Помните, что пути к программам важны: /usr/bin/apt и /usr/bin/apt-get — разные записи.

Совместимость и миграция

  • На Debian/Ubuntu основная группа называется sudo; на RHEL/Fedora/ CentOS — wheel. Учитывайте это при написании инструкций и скриптов.
  • Централизованное управление через LDAP/AD: можно управлять членством в группах глобально и использовать sudoers.d с шаблонами.

Чеклист для проверки непосредственно перед изменением прав

  • Сделать резервную копию /etc/sudoers и каталога /etc/sudoers.d/.
  • Выполнить visudo -c после изменений.
  • Записать изменения в систему контроля конфигураций (git, CMDB).
  • Уведомить заинтересованные команды.

Карта принятия решений (Mermaid)

flowchart TD
  A[Нужно ли sudo?] -->|Нет| B[Не назначать sudo]
  A -->|Да| C[Нужен полный доступ?]
  C -->|Да| D[Добавить в группу sudo/wheel]
  C -->|Нет| E[Указать конкретные команды в sudoers]
  E --> F{Несколько пользователей?}
  F -->|Да| G[Создать User_Alias]
  F -->|Нет| H[Добавить строку для пользователя]
  D --> I[Проверить audit и логирование]
  G --> I
  H --> I

Короткая шпаргалка команд (cheat sheet)

  • Открыть sudoers: sudo EDITOR=nano visudo
  • Проверка синтаксиса: sudo visudo -c
  • Добавление пользователя в группу sudo: sudo usermod -a -G sudo USER
  • Повтор последней команды с sudo: sudo !!
  • Сброс кеша пароля sudo: sudo -k
  • Просмотр логов sudo: less /var/log/auth.log

Частые вопросы (FAQ)

Q: Нужен ли абсолютный путь к команде в sudoers?

A: Да — всегда указывайте полный путь к исполняемому файлу, иначе злоумышленник может подменить команду в PATH.

Q: Можно ли дать sudo без запроса пароля?

A: Да, через NOPASSWD, но это уменьшает уровень защиты; используйте только для автоматизации, где это действительно необходимо.

Q: Как откатить ошибочный sudoers?

A: Используйте visudo, восстановите резервную копию файла /etc/sudoers или загрузитесь в однопользовательский режим для правки.

Однострочная глоссарий

  • sudo: утилита для выполнения команд от имени другого пользователя.
  • visudo: безопасный редактор sudoers с проверкой синтаксиса.
  • sudoers: конфигурационный файл /etc/sudoers и /etc/sudoers.d/.
  • User_Alias, Cmnd_Alias: алиасы в sudoers для группировки учёток и команд.

Краткое резюме

  • Используйте sudo для минимизации времени работы с правами root.
  • Редактируйте sudoers только через visudo и проверяйте синтаксис.
  • Делегируйте права точечно: алиасы, конкретные команды, группы.
  • Настройте аудит и логи, регулярно пересматривайте права.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Outlook и Hotmail на Android — настройка и советы
Электронная почта

Outlook и Hotmail на Android — настройка и советы

Сменить поисковик по умолчанию в Android
Android браузеры

Сменить поисковик по умолчанию в Android

Как отследить потерянный смартфон, планшет или ПК
Безопасность

Как отследить потерянный смартфон, планшет или ПК

Windows 11: устройство застряло в режиме планшета
Windows

Windows 11: устройство застряло в режиме планшета

Плагин Zoom для Outlook: установка и использование
Инструкции

Плагин Zoom для Outlook: установка и использование

Резервное копирование Gmail с GMVault — быстро и по расписанию
Резервное копирование

Резервное копирование Gmail с GMVault — быстро и по расписанию