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

    Команда Simple-Server
    03.06.2026
    9 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Смена пользователя на root

    Ещё один способ получить неограниченные привилегии — сменить текущего пользователя на root. Это можно сделать с помощью команды смены пользователя su (от англ. substitute user).

    Запуск команды от пользователя root

    Если вам нужно выполнить какое-то разовое действие с привилегиями суперпользователя, не нужно создавать новую оболочку. Вместо этого воспользуйтесь командой sudo. Но в отличие от su, вам нужно будет ввести пароль учётной записи текущего пользователя, а не root.

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

    Присвоение привилегий sudo

    По умолчанию пользователи создаются в системе без доступа к sudo. Это делается вручную с помощью добавления учётной записи к одноимённой группе:

    usermod -aG sudo username

    В CentOS группа с полными привилегиями администратора называется wheel, значит вы можете использовать примеры выше, заменив sudo на wheel.

    Настроить команду sudo можно в файле /etc/sudoers, в нём хранятся все нужные параметры. Этот файл напрямую влияет на работу системы, если он сконфигурирован неправильно или содержит ошибки синтаксиса, система может начать работать некорректно.

    Чтобы избежать потери прав суперпользователя, предусмотрена команда visudo. Она ничем не отличается от обычного текстового редактора, но при сохранении проверяет файл на ошибки синтаксиса.

    Работать с файлом sudoers вы можете в любом удобном текстовом редакторе. По умолчанию visudo открывает vi (в Ubuntu — nano), но может работать и с другими. Для этого выберете нужный вариант с помощью команды update-alternatives:

    sudo update-alternatives --config editor

    В CentOS задать редактор по умолчанию ещё проще — в ~/.bashrc нужно добавить строку:

    export EDITOR=`which [editor]`

    где [editor] — название программы-редактора.

    После того, как вы определились с редактором, в котором вам удобно работать с файлом, можно приступать к настройке sudo.

    Для работы с файлом sudoers у вас уже должен быть доступ к учётной записи суперпользователя. Откройте файл с помощью программы visudo:

    В нашей оболочке откроется**** файл sudoers. По умолчанию он состоит из нескольких групп строк.

    Первые три строки — определяют настройки по умолчанию. Они обеспечивают перезапись пользовательских настроек, чтобы избежать работы вредоносных программ или переменных.

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

    mail_badpass указывает, что система будет отправлять на почту, указанную в настройках root, неудачные попытки получить неограниченные привилегии.

    secure_path определяет путь для операций sudo. Иными словами, она содержит каталоги, в которых ОС будет искать приложения. Переопределяя пользовательские настройки, мы избегаем выполнения потенциально вредоносных программ.

    Вы можете добавлять настройки по умолчанию с помощью псевдонима Default. Например, если у вас сложный пароль, вы можете расширить количество попыток ввода с трёх (по умолчанию) до 5.

    Sudo сохраняет данные сеанса в течение 5 минут после первой аутентификации. Это сделано, чтобы вам не нужно было каждый раз при выполнении программ вводить пароль. Вы можете сбросить форсировать запрос пароля с помощью флага -k при выполнении команды sudo. Если нужно вводить пароль каждый раз, установите значение этого таймаута 0.

    Defaults timestamp_timeout=0

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

    Defaults passwd_timeout=5 Defaults logfile=/var/log/sudo.journal.log

    Пользовательские привилегии

    Четвёртая строка определяет привилегии sudo для root. Она содержит имя пользователя, список хостов, пользователей, групп и команд.

    root    ALL=(ALL:ALL) ALL

    Рассмотрим внимательнее, как она расшифровывается. В начале стоит имя пользователя, затем указываются его привилегии. Первое ALL означает, что правило применяется ко всем хостам и IP-адресам. Второе ALL указывает на то, что пользователь может запускать команды от имени любого пользователя, третье — от имени любой группы. Четвёртое ALL применяет эти правила ко всем командам.

    То есть эта строка означает, что пользователь root может выполнять любые команды от лица всех групп и пользователей после ввода sudo.

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

    Добавим новые полномочия для пользователя Simple-Server-backup, которому нужно выполнять команду монтирования директории root/backup.d. Для этого добавим следующую строку:

    Simple-Server-backup ALL=(root) /bin/mount /root/backup.d

    Теперь пользователь Simple-Server-backup сможет запустить команду sudo mount /root/backup.d со своим паролем, а не с паролем пользователя root.

    Настройка пользовательских привилегий позволяет очень гибко настраивать систему. Например, вы можете разрешать выполнение определённых команд без пароля с помощью флага NOPASSWD или вообще ограничить пользователя одной программой.

    Подключение других файлов

    Строка, которая начинается с #includedir означает подключение конфигурации из других источников. В данном случае указано, что нужно применить правила из файлов внутри каталога /etc/sudoers.d, при этом подключается любой файл, если он не содержит в названии точку или не заканчивается тильдой (~).

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

    Так как все файлы из этого каталога подключаются в основной файл, редактировать их нужно с помощью visudo. Для того, чтобы открыть отдельный файл, добавьте флаг -f:

    visudo -f /etc/sudoers.d/config_file

    Чтобы упростить работу с конфигурацией файла sudoers, разработчики предусмотрели псевдонимы. Они позволяют создавать списки пользователей, флагов и команд и группировать их. Они делятся на четыре типа:

    User_Alias. Псевдоним пользователей, которые будут использовать sudo.

    Runas_Alias. Псевдоним пользователей, от имени которых команды будут выполняться.

    Host_Alias. Псевдоним хоста. Представляет собой список IP-адресов или хостов, с которых выполняются программы.

    Cmnd_Alias. Псевдоним команды.

    Например, отредактируем файл sudoers так, чтобы различные пользователи могли запускать скрипты резервирования системы от пользователя root.

    User_Alias Users = Simple-Server-backup,remote,hal9000 Host_Alias REMOTE = simple-server.tech Cmd_Alias Cmds = /root/backup

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

    Users Hosts = (root) Cmds

    Теперь пользователи Simple-Server-backup, remote, hal9000 смогут запускать команды бэкапа от имени пользователя root на хосте REMOTE.

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

    Users ALL = (root) NOPASSWD: /bin/mount

    …а размонтировать уже нельзя:

    Users ALL = (root) NOEXEC: /bin/umount

    В нашей системе мы можем разрешить всем пользователям группы admin обновлять пакеты Ubuntu, но без ввода пароля:

    Cmnd_Alias APT_UPDATE = /usr/bin/apt-get update,/usr/bin/apt-get upgrade ... %admin ALL=(ALL) NOPASSWD: APT_UPDATE

    Псевдонимы помогут эффективно делить пользователей на группы и выдавать им права (или забирать их с помощью флага NOEXEC) на выполнение только определённых команд.

    В случае конфликта правил в приоритете более поздние. Так что располагайте в начале файла более общие установки, чем конкретнее правило, тем ниже его стоит расположить.

    Вы можете запускать команды sudo от имени тех пользователей или групп, которых задали в файле sudoers. Используйте для этого флаги -u и -g соответственно.

    Чтобы посмотреть привилегии для вашего пользователя, просто используйте команду sudo -l. Вы увидите список всех правил из файла /etc/sudoers. Так вы поймёте, на что именно у вас есть разрешение в системе.


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны