Запускать несколько подпроцессов 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?

0 ответов

Другие вопросы по тегам