запустить скрипт bash с повышенными привилегиями из многопоточного вызова Python подпроцесса - PullRequest
0 голосов
/ 19 февраля 2019

Я программирую на python под linux и использую multiprocessing_pool.apply_async для вызова скрипта bash с использованием subprocess.check_output

Скрипт bash вызывает alien и rpmbuild.Команда инопланетянина должна запускаться с правами root, и поэтому команда rpmbuild делает это, следуя команде root sed, чтобы исправить некоторые идиосинкразии rpm.

В настоящий момент, если я хочу преобразовать несколько debs в rpms,Я должен ввести свой пароль администратора несколько раз.

Можно ли ввести пароль администратора только один раз?то есть что скрипт всегда вызывается с различными переменными как новые процессы, но всегда повышенные привилегии после одной записи пароля?В настоящее время я использую pkexec для вызова сценария, когда sudo используется в самом сценарии.

Большое спасибо

1 Ответ

0 голосов
/ 19 февраля 2019

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

$ sudo python -c "import os ; os.system('whoami')"
root

Так что запустите вашу вещь как обычно, но с sudo до python.Если вам нужно запустить несколько сценариев Python и ввести пароль только один раз, введите sudo su.После этого вы будете пользователем root для всех команд (без указания sudo), пока не закроете сеанс терминала.

Альтернативные способы ввода пароля:

  1. Вы можете использовать sudo -A, если вы хотите, чтобы для пароля отображалось приглашение в графическом интерфейсе.
  2. Вы можете использовать sudo -S если вы хотите передать пароль как stdin.

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

...