Запускать несколько подпроцессов Python от имени другого пользователя, повышая привилегии только один раз
У меня есть скрипт Python, который должен запускаться от имени конкретного пользователя. Итак, первое, что он делает, это проверяет пользователя и su
перед соответствующим пользователем. Тем не менее, будущее использование subprocess.run
все еще работают как исходный пользователь.
В консоли пользователь переключается, но остальные вещи не видны, пока я exit
от пользователя, на которого я переключился.
Вот код Python:
#!/usr/bin/env python3
import subprocess
REQD_USER = "someuser"
user = subprocess.run(['whoami'], stdout=subprocess.PIPE, universal_newlines=True)
if user.stdout != REQD_USER:
print("Changing user to: " + REQD_USER)
subprocess.run(['su', REQD_USER], stdout=subprocess.PIPE, universal_newlines=True)
# successfully switches users here
subprocess.run(['whoami'], stdout=subprocess.PIPE)
Последний subprocess
строка не выводится на консоль, пока я exit
от пользователя, к которому я переключился и вернулся к исходному пользователю, и распечатывает оригинального пользователя.
Как я могу переключиться на другого пользователя (при условии, что у меня есть его пароль) и продолжать выполнять команды в оболочке как новый пользователь без sudo?