Вызов сценария оболочки из сценария Python с использованием привилегий root

1

Я пытаюсь вызвать оболочку script shell_script.sh из python script (python_script.py) с помощью команды вызова. shell_script.sh вызывает исполняемый файл, который требует доступа root для выполнения.

python_script.py вызывает shell_script.sh с помощью subprocess.call().

См. ниже: subprocess.call(['/complete_path/shell_script.sh', 'param1', 'param2', 'param3'], shell=True)

Когда я пытаюсь выполнить python script python_script.py, он разрешает мне разрешение.

Я пробовал разные способы.

a) Вызов python с sudo - sudo python python_script.py

b) Вызывать sudo внутри метода вызова - subprocess.call(['sudo' '/complete_path/shell_script.sh', 'param1', 'param2', 'param3'], shell=True)

Какой лучший способ решить эту проблему.

Спасибо.

Теги:
root
sudo

2 ответа

1

Я бы поместил логику в python_script.py, чтобы проверить его UID и сбой, если не выполняется как root. if os.getuid() != 0:. Это гарантирует, что он работает только от root, ether от корневого входа или sudo.

Если вы получаете отказ в доступе при попытке выполнить python_script.py, вам нужно установить бит выполнения на нем. chmod +x python_script.py

  • 0
    Я уже попробовал оба. Это все еще не работает.
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню