Я написал следующий код, полностью ожидая, что он вызовет исключение при попытке его запустить. 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