Я хочу к 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
Заранее спасибо!!
От Вашего вопроса не полностью ясно, необходимо ли быть внутренние каталог CMDexecutable
(и таким образом cd
первый) или если полный путь сделал бы, но единственная опция, которую я вижу, состоит в том, чтобы добавить сценарий к sudoers
файл, как описано здесь .
Затем можно запустить скрипт с sudo
, не имея необходимость вводить пароль.
можно просто работать (python
) сценарий затем командой
sudo <script>
, как сказано, не будучи предложенным пароль.
довольно очевидно, что необходимо сохранить сценарий в месте, где это не может быть отредактировано без sudo
полномочия. Так как сценарий может работать, не вводя пароль, необходимо быть уверены, что его содержание не изменяется никаким другим процессом или возможно вредоносным кодом.
, Кроме того, (мог бы быть излишне, но так как я не знаю точный контекст) по той же причине, необходимо сделать абсолютно уверенным, что CMDexecutable
и все, что это выполняет, не является никакой возможной целью для "злонамеренных изменений".
, Так как Вы упоминаете, Вы не можете измениться начальная буква команда для выполнения Вашего python
сценарий в sudo
команда, Вы могли сделать следующее:
Внутренний Ваш python
сценарий, создайте команду, чтобы работать вторичный сценарий, работать с sudo:
sudo <script>
Добавляют этот вторичный сценарий к sudoers
файл, для выполнения без пароля. Таким образом, python
(основной) сценарий выполнит команду, не имея необходимость вводить пароль.
я хотел бы подчеркнуть однако, что это кажется пэчворком, и у меня нет понимания в возможных угрозах безопасности. Сделайте так или иначе уверенными все файлы, работайте от потока первого sudo
, команда "дерево" не является никакими возможными целями для злонамеренного редактирования.