Моя проблема: у меня есть программа на Python, и пользователь запускает ее, используя sudo
. Иногда мне нужно добраться до дома пользователя, и я могу сделать это, только зная его имя:
import pwd
pwd.getpwnam(username)
Итак: как я могу получить имя пользователя, запустившего программу?
sudo
листыHOME
переменной среды нетронутая (это может быть переопределены в compile- или во время выполнения). Но вы можете или не сможете использовать переменную окружения, в зависимости от того, что вы хотите сделать, если пользователь указывает другое значениеHOME
(что, если bob запускаетсяHOME=/home/joe sudo your_script
?). Вы, вероятно, должны установить свой euid для вызывающего пользователя (заданного пользователемSUDO_UID
), прежде чем делать какой-либо доступ к файловой системе (кроме того, что фактически требует разрешения root в вашем скрипте).euid
для себяSUDO_UID
.Ответы:
Когда вы запускаете что-то с
sudo
помощью пары переменных окружения, я думаю, что вы ищетеSUDO_UID
. Они должны быть доступны для любой программы, работающей по обычным каналам доступа к переменным среды.Вы можете увидеть другие вещи, установленные обманом, как это из оболочки:
sudo env | grep SUDO
источник
SUDO_UID
иSUDO_USER
. Еще раз спасибо.SUDO_USER
было именно то, что я искал.