У меня есть сценарий (A.py
), который будет генерировать новые процессы (B.py
) динамически, но эти сценарии должны быть созданы как root
. Если я бегуPython sudo privileges
$ python A.py
как обычный пользователь, а затем, когда я бегу
>>> subprocess.Popen('sudo nohup python B.py &')
мне нужно ввести root
пароль для запуска. Я действительно не хочу этого делать.
Теперь, если я бегу первый сценарий как root
$ sudo python A.py
тогда я буду иметь возможность запускать
>>> subprocess.Popen('nohup python B.py &')
как нормальный. Вещь, которая касается меня, - это период ожидания с помощью sudo, и он будет снижаться до нормальных привилегий, а затем, когда A.py
хочет, чтобы запустить/убить процесс, он попросит пароль и перестанет работать по назначению.
- Будет запущен
sudo python A.py
сохранить привилегии суперпользователя для жизни сценария, или он потеряет ее сsudo timeout
(я считаю, по умолчанию 15мин) как обычный терминал? - Есть ли лучший способ сделать это?
'setuid' [обычно игнорируется в сценариях оболочки] (http: // www.faqs.org/faqs/unix-faq/faq/part4/section-7.html). Также см. [Это] (http://unix.stackexchange.com/a/2910). – Dougal
Интересно, я этого не знал. Однако предложение perl может помочь. –
На самом деле, удалены вещи perl suid; см. комментарии там. – Dougal