Главная
» LINUX
»
Как запустить команду sudo без пароля в Linux
Как запустить команду sudo без пароля в Linux
Вы можете запустить sudo без пароля , добавив NOPASSWDправило в политику sudoers. Самый безопасный подход — разрешить только ту административную команду, которая вам необходима, вместо того, чтобы отключать запрос пароля для каждой команды sudo.
Прежде чем что-либо менять, помните, что делает эта настройка: любой, кто получит контроль над вашей учетной записью, сможет выполнить разрешенную команду от имени root без дополнительной аутентификации. В руководстве sudoers это записывается NOPASSWDкак метка, которая отключает аутентификацию для соответствующих команд.
Почему команда `sudo -s` не является методом sudo без пароля
Более ранняя рекомендация по запуску команды sudo -sна самом деле не настраивает sudo без пароля. Эта -sопция запускает оболочку под управлением sudo, но политика sudo всё равно может потребовать предварительной аутентификации. Вы также можете увидеть, как несколько команд запускаются без дополнительного запроса, поскольку sudo обычно кэширует успешную аутентификацию на короткий период времени. Это отличается от постоянного NOPASSWDправила.
Выполнение определенной команды sudo без пароля
В этом примере пользователь может alexперезапустить Nginx без пароля. Замените имя пользователя, команду и аргументы значениями, соответствующими вашей системе.
1. Подтвердите свое имя пользователя и путь к команде.
Выполните следующие команды от имени обычного пользователя:
whoami
command -v systemctl
Вторая команда может вернуть /usr/bin/systemctl. Используйте путь, который сообщает ваша система. Правила Sudoers должны идентифицировать команды по их полному пути.
Перед написанием правила sudoers проверьте имя учетной записи и полный путь к команде.
2. Создайте отдельный файл конфигурации sudoers.
Вместо прямого редактирования используйте файл /etc/sudoers, расположенный в :visudo/etc/sudoers.d
sudo visudo -f /etc/sudoers.d/alex-nopasswd
Обычно на этом этапе настройки вам потребуется ввести свой пароль. visudoПредпочтительнее использовать , поскольку он проверяет синтаксис перед принятием изменений. В руководстве по visudo в Ubuntu также отмечается, что visudoблокирует файл во время редактирования и проверяет наличие ошибок синтаксического анализа.
visudoВместо редактирования основного файла политики с помощью обычного текстового редактора, откройте отдельный файл sudoers .
3. Добавьте самое узкое правило NOPASSWD, которое вам необходимо.
В примере перезапуска Nginx добавьте:
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
Это правило разрешает выполнение от имени root без аутентификации только той команды, которая имеет указанные аргументы. Чтобы разрешить выполнение нескольких конкретных команд, разделяйте их запятыми.
Если вы намеренно хотите, чтобы каждая команда sudo для одного пользователя выполнялась без аутентификации, то общее правило таково:
alex ALL=(ALL:ALL) NOPASSWD: ALL
Это гораздо менее безопасно и редко является лучшим выбором на рабочей станции или в системе общего пользования. Компрометированная пользовательская сессия будет иметь прямой путь к неограниченным привилегиям root.
Правило, специфичное для конкретной команды, безопаснее, чем предоставление права доступа NOPASSWD: ALL.
4. Проверьте и протестируйте правило.
После сохранения и выхода из редактора проверьте полную политику sudoers:
sudo visudo -c
Не пропускайте эту проверку. В visudoдокументации поясняется, что политика sudoers оценивается в целом, поэтому проверка всей конфигурации выявляет проблемы, которые могут быть связаны с включенными файлами.
Затем аннулируйте все кэшированные учетные данные sudo и проведите неинтерактивное тестирование:
sudo -k
sudo -n /usr/bin/systemctl restart nginx
Эта -nопция указывает sudo не запрашивать пароль. Если правило выполняется, команда запускается без запроса пароля. Если аутентификация все же требуется, sudo завершает работу с ошибкой, а не ожидает ввода. Это sudo -nособенно полезно для скриптов, которые ни в коем случае не должны зависать на запросе пароля.
Проверьте политику, очистите кэшированные учетные данные и используйте команду sudo -n, чтобы убедиться, что для выполнения команды действительно больше не требуется пароль.
Устранение неполадок с sudo без пароля
Команда по-прежнему запрашивает пароль: убедитесь, что имя пользователя, путь к команде и аргументы точно соответствуют записи в sudoers.
Выполнение этой команды запрещено: выполните команду sudo -l, чтобы просмотреть права доступа, предоставленные вашей учетной записи.
Похоже, что параметр drop-in игнорируется: используйте простое имя файла, например alex-nopasswd, . Некоторые конфигурации sudoers игнорируют файлы, /etc/sudoers.dимена которых содержат точку или заканчиваются суффиксами в стиле backup.
Вам необходимо отменить изменения: снова откройте всплывающее окно с помощью клавиши sudo visudo -f /etc/sudoers.d/alex-nopasswd, удалите или сузьте правило, сохраните и запустите sudo visudo -cснова.
Рекомендации по использованию
Используйте команду sudo без пароля только в случае конкретной необходимости, например, для строго контролируемого действия службы или задачи автоматизации. Предпочитайте точный путь к команде и точные аргументы, NOPASSWD: ALLпо возможности избегайте их использования и делайте правило sudoers как можно меньше, насколько позволяет задача. Это сохранит большую часть защиты sudo, при этом исключив запрос пароля там, где он действительно необходим.