Sudo выполняют команду в Pythonscript

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

Команда должна выполнить скомпилированный файл C++ (чье имя хранится в переменном "CMDexecutable"). Это скомпилировало файл C++, расположен во временной папке, которая создается как часть сервиса со случайным именем. Путь хранится в переменной "rundir_temp". Этот каталог свободно доступен по сети.

Теперь, у меня есть следующее в моем Pythonscript:

Popen(os.path.join(rundir_temp,CMDexecutable),stdout=PIPE)

Это не выполняет сценарий, который я имею. Я могу только выполнить скомпилированный файл C++ путем ввода следующего в терминале в то время как в "rundir_temp" каталоге:

sudo ./CMDexecutable

Все работает отлично затем.

Как я могу дать sudo права на эту команду в моем Pythonscript без жесткого кодирования мой пароль?

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

У меня есть Ubuntu 14.04 LTS и Python 2.7.6

Заранее спасибо!!

1
задан 13 April 2017 в 15:24

1 ответ

От Вашего вопроса не полностью ясно, необходимо ли быть внутренние каталог CMDexecutable (и таким образом cd первый) или если полный путь сделал бы, но единственная опция, которую я вижу, состоит в том, чтобы добавить сценарий к sudoers файл, как описано здесь .
Затем можно запустить скрипт с sudo, не имея необходимость вводить пароль.
можно просто работать (python) сценарий затем командой

sudo <script>

, как сказано, не будучи предложенным пароль.

(Очень) важное примечание

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

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

Редактирование

, Так как Вы упоминаете, Вы не можете измениться начальная буква команда для выполнения Вашего python сценарий в sudo команда, Вы могли сделать следующее:

  • Внутренний Ваш python сценарий, создайте команду, чтобы работать вторичный сценарий, работать с sudo:

    sudo <script>
    
  • Добавляют этот вторичный сценарий к sudoers файл, для выполнения без пароля. Таким образом, python (основной) сценарий выполнит команду, не имея необходимость вводить пароль.

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

0
ответ дан 26 July 2019 в 08:26

Другие вопросы по тегам:

Похожие вопросы: