Вероятно, было бы лучше использовать sudo для пользователя, запускающего программу Python. Вы можете указать конкретные команды и аргументы, которые можно запускать из sudo без пароля. Вот пример:
Есть много подходов, но я предпочитаю тот, который назначает наборы команд группам. Допустим, мы хотим создать группу, чтобы люди могли запускать tcpdump от имени пользователя root. Итак, давайте назовем эту группу tcpdumpers
.
Сначала вы должны создать группу с именем tcpdumpers
. Затем измените /etc/sudoers
:
# Command alias for tcpdump
Cmnd_Alias TCPDUMP = /usr/sbin/tcpdump
# This is the group that is allowed to run tcpdump as root with no password prompt
%tcpdumpers ALL=(ALL) NOPASSWD: TCPDUMP
Теперь любой пользователь, добавленный в группу tcpdumpers
, сможет запускать tcpdump следующим образом:
% sudo tcpdump
Оттуда вы можете легко запустить эту команду как подпроцесс.
Это избавляет от необходимости жестко кодировать пароль root в программном коде и обеспечивает детальный контроль над тем, кто может выполнять какие-либо действия с привилегиями root в вашей системе.