У меня есть Java-программа, которую я использую для автоматизации процесса создания настроек VPN для клиентов. Программа вызывает пару скриптов bash, создает и копирует файлы. Я должен запустить его под пользователем root, потому что вся конфигурация VPN находится в /etc /openvpn. Для этого каталога мне нужны права суперпользователя. На той же машине у меня есть сервер приложений Glassfish, и он будет вызывать упомянутую Java-программу. Glassfish запускается от имени пользователя без полномочий root.

Каков наилучший и наиболее безопасный способ запуска программы от имени пользователя root без ввода пароля, если я запускаю ее с помощью sudo?

2 ответа2

2

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

Добавление пользователя, под которым вы запускаете эту программу, в группу (возможно, только с правами на чтение), чтобы дать ему доступ к openvpn, и предоставление ему необходимых привилегий sudo (для запуска openvpn - настройки, идентичные тем, которые использует пользователь openvpn), должны помочь. безопасно.

Использование root - это ленивый способ;)

0

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

  • эхо ПАРОЛЬ | sudo -S КОМАНДА
  • добавив следующую строку в /etc /sudoers

    имя пользователя ALL =(ALL) NOPASSWD: COMMAND

Обратите внимание, что эта строка должна быть после всех определений группы. Вы можете проверить, какие привилегии sudo у вас есть, используя sudo -l . Для этого случая это дает:

(ALL) ALL
(ALL) NOPASSWD: COMMAND

Это означает, что для всех команд потребуется пароль, кроме КОМАНДЫ. Если бы мы поместили username ALL=(ALL) NOPASSWD: COMMAND перед определениями группы, то sudo -l выдает :

(ALL) NOPASSWD: COMMAND
(ALL) ALL

Для этого все равно потребуется пароль для КОМАНДЫ, поскольку (ALL) ALL указывается после строки NOPASSWD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .