← Назад к вопросам

Что такое sudo в Linux?

1.0 Junior🔥 131 комментариев
#Linux

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое sudo в Linux?

sudo (сокращение от "superuser do" или "substitute user do") — это мощная утилита в Unix-подобных операционных системах, включая Linux, которая позволяет авторизованным пользователям выполнять команды с привилегиями другого пользователя, чаще всего суперпользователя (root). Это фундаментальный инструмент для управления безопасностью и разделения прав в системе.

Основная цель и принцип работы

Основная цель sudo — предоставить избирательный и контролируемый доступ к привилегированным командам, избегая необходимости входа в систему под учетной записью root. Это реализует принцип "минимальных привилегий": пользователь работает с обычными правами большую часть времени и получает повышенные права только для конкретных, заранее разрешенных задач.

Принцип работы:

  1. Пользователь вводит команду с префиксом sudo (например, sudo apt update).
  2. Система проверяет, есть ли у данного пользователя право на выполнение указанной команды. Эти права определяются в файле конфигурации /etc/sudoers.
  3. Если право есть, система запрашивает пароль самого пользователя (не пароль root).
  4. После успешной аутентификации команда выполняется с привилегиями целевого пользователя (по умолчанию — root).

Ключевые особенности и преимущества

  • Безопасность: В отличие от прямого входа под root или использования su, sudo не требует раскрытия пароля суперпользователя. Действия можно строго ограничить конкретными командами, что снижает риск случайного или злонамеренного повреждения системы.
  • Аудитинг и подотчетность: Все успешные и неуспешные попытки использования sudo по умолчанию логируются (обычно в /var/log/auth.log или /var/log/secure). В логах фиксируется кто, когда и какую команду запустил, что критически важно для расследования инцидентов.
  • Гибкость настройки: Файл sudoers позволяет детально настраивать политики:
    *   Разрешать выполнение только определенных команд.
    *   Разрешать выполнение команд без ввода пароля.
    *   Разрешать выполнение команд от имени любого другого пользователя.
    *   Настраивать переменные окружения.
    *   Группировать правила с помощью **псевдонимов** (User_Alias, Cmnd_Alias, Host_Alias).

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

Базовое использование для установки пакета:

sudo apt install nginx

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

sudo -u postgres psql

Эта команда запустит psql от имени пользователя postgres.

Редактирование конфигурационного файла с правами root:

sudo nano /etc/nginx/nginx.conf

Важные сопутствующие команды и файлы

  • visudoединственный безопасный способ редактирования файла /etc/sudoers. Эта команда блокирует файл, проверяет синтаксис на наличие ошибок перед сохранением, что предотвращает возможность "заблокировать" себя из системы из-за опечатки.
  • /etc/sudoers.d/ — директория, в которую можно помещать дополнительные файлы конфигурации. Это рекомендованный способ добавления своих правил, так как они не перезаписываются при обновлении основного пакета sudo.
  • sudo -l — выводит список команд, которые текущий пользователь может выполнять через sudo.

Пример правила в файле sudoers

Следующее правило позволяет пользователю alex выполнять команды управления пакетами (apt) и службами (systemctl) без ввода пароля:

# В файле /etc/sudoers (открываем через visudo)
alex ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt, /bin/systemctl

Отличие от su

Важно не путать sudo с командой su (substitute user):

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

Вывод: sudo — это не просто команда для получения прав root, а сложная система контроля доступа, которая является краеугольным камнем безопасной и управляемой эксплуатации Linux-систем. Её правильная настройка позволяет эффективно разделять обязанности, вести аудит действий и минимизировать риски, связанные с использованием учетной записи суперпользователя.

Что такое sudo в Linux? | PrepBro