sudo запрашивает пароль при каждом использовании — это намеренная мера безопасности. Система убеждается, что привилегированную команду выполняет именно пользователь, а не скрипт или программа, пытающаяся получить несанкционированный доступ.
Тем не менее бывают случаи, когда пароль нужно отключить: автоматизированные скрипты и CI/CD-пайплайны, системное обслуживание на изолированных серверах, окружения разработки где частые вводы пароля мешают работе. Для продакшн-серверов с публичным доступом отключать пароль не рекомендуется.
Как это работает: директива NOPASSWD
Поведение sudo настраивается в файле /etc/sudoers. Добавление директивы NOPASSWD к строке пользователя или группы отключает запрос пароля для указанных команд.
Редактировать /etc/sudoers нужно только через visudo — утилита проверяет синтаксис перед сохранением и не даёт записать сломанный файл. Ошибка в sudoers может полностью заблокировать доступ к sudo.
sudo visudo
Отключить пароль для конкретного пользователя
Найти раздел User privilege specification и добавить строку:
linux90 ALL=(ALL) NOPASSWD: ALL

Расшифровка формата linux90 ALL=(ALL) NOPASSWD: ALL:
linux90— имя пользователя- первое
ALL— с любого хоста (ALL)— от имени любого пользователяNOPASSWD:— без запроса пароля- последнее
ALL— для любых команд
Сохранить и закрыть. В vi: Esc, затем :wq. После этого sudo не будет запрашивать пароль у linux90 ни для каких команд.
Отключить пароль только для отдельных команд
Если нужно сохранить запрос пароля для большинства команд, но отключить его для конкретных — например apt и reboot:
linux90 ALL=(ALL) NOPASSWD: /usr/bin/apt, /sbin/reboot
Пути должны быть абсолютными. Команды указываются через запятую. Для всех остальных команд пароль будет запрашиваться как обычно.
Найти полный путь к команде:
which apt
which reboot
Отключить пароль для группы пользователей
Чтобы применить настройку ко всем пользователям группы — использовать префикс % перед именем группы:
%group_name ALL=(ALL) NOPASSWD: ALL
Например, для группы deploy:
%deploy ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl
Все пользователи группы deploy смогут выполнять apt и systemctl без пароля.
Добавить пользователя в группу:
sudo usermod -aG deploy username
Использовать файл в sudoers.d (рекомендуемый способ)
Вместо редактирования основного файла /etc/sudoers лучше создать отдельный файл в директории /etc/sudoers.d/. Это удобнее при управлении несколькими пользователями и безопаснее при обновлениях системы:
sudo visudo -f /etc/sudoers.d/linux90
Содержимое файла:
linux90 ALL=(ALL) NOPASSWD: ALL
Права файла должны быть 0440:
sudo chmod 0440 /etc/sudoers.d/linux90
Файлы из /etc/sudoers.d/ подключаются автоматически через директиву #includedir в основном sudoers.
Проверить, что настройка применилась
sudo -l -U linux90
В выводе должна быть строка с NOPASSWD:
(ALL) NOPASSWD: ALL
Или переключиться на пользователя и проверить:
su - linux90
sudo apt update
Пароль запрошен не будет.
Вернуть запрос пароля
Удалить строку с NOPASSWD через visudo или удалить созданный файл из sudoers.d:
sudo rm /etc/sudoers.d/linux90
Шпаргалка
| Задача | Строка в sudoers |
|---|---|
| Без пароля для пользователя | user ALL=(ALL) NOPASSWD: ALL |
| Без пароля для конкретных команд | user ALL=(ALL) NOPASSWD: /usr/bin/apt, /sbin/reboot |
| Без пароля для группы | %group ALL=(ALL) NOPASSWD: ALL |
| Открыть sudoers безопасно | sudo visudo |
| Отдельный файл для пользователя | sudo visudo -f /etc/sudoers.d/username |
| Проверить права пользователя | sudo -l -U username |