Как subprocess.call () может быть запущен как суперпользователь, если скрипт не был запущен как суперпользователь? - PullRequest
0 голосов
/ 12 октября 2019

Я написал следующий код, полностью ожидая, что он вызовет исключение при попытке его запустить. reboot должен быть запущен от имени суперпользователя, и способ, которым я ожидал запустить этот скрипт, был из не-корневого контекста и без использования sudo. ( user pi на моем Raspberry Pi )

import subprocess

subprocess.call(["sudo", "reboot"])

Однако, к моему удивлению, приведенные выше строки действительно перезагружают мою систему, даже когда скрипт запускается без sudo, внекорневая оболочка. Как это работает?

РЕДАКТИРОВАТЬ:

$ sudo -l
Matching Defaults entries for pi on [HOSTNAME]:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
    env_keep+=NO_AT_BRIDGE

User pi may run the following commands on [HOSTNAME]:
    (ALL : ALL) ALL
    (ALL) NOPASSWD: ALL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...