Повышение привелегий без ввода пароля

Материал из sysadm
Перейти к навигации Перейти к поиску

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

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

Для решения этой проблемы, в Линукс есть возможность разрешить выполнение определенной команды с определенными параметрами через sudo без ввода пароля.

Добавьте разрешение в файл /etc/sudoers

%vpnusers ALL = NOPASSWD: /sbin/openvpn /etc/openvpn/client/myHost.ovpn

Данная строка разрешает пользователям обладающим правом запуска sudo и включенным в группу vpnusers выполнять команду без ввода пароля, при этом строка запуска должна в точности соответствовать разрешению

sudo /sbin/openvpn /etc/openvpn/client/myHost.ovpn

Если попытаться выполнить так, то будет запрошен пароль

sudo /sbin/openvpn /etc/openvpn/client/otherHost.ovpn
sudo openvpn /etc/openvpn/client/myHost.ovpn
sudo /sbin/openvpn --config /etc/openvpn/client/myHost.ovpn

Более подробно о синтаксисе задания разрешений в файле /etc/sudoers смотрите в справке man sudoers