Mój problem: mam program w języku Python, a użytkownik uruchamia go za pomocą sudo
. Czasami muszę zabrać użytkownika do domu i mogę to zrobić, znając tylko jego nazwę:
import pwd
pwd.getpwnam(username)
Więc: jak mogę uzyskać nazwę użytkownika, który uruchomił program?
sudo
pozostawiaHOME
nienaruszoną zmienną środowiskową (można to zmienić w czasie kompilacji lub wykonywania). Ale możesz, ale nie musisz, używać zmiennej środowiskowej, w zależności od tego, co chcesz się wydarzyć, jeśli użytkownik określi inną wartośćHOME
(co, jeśli bob działaHOME=/home/joe sudo your_script
?). Prawdopodobnie powinieneś ustawić swój euid na użytkownika wywołującego (podanego przezSUDO_UID
) przed uzyskaniem dostępu do dowolnego systemu plików (poza tym, co faktycznie wymaga uprawnień roota w skrypcie).euid
naSUDO_UID
.Odpowiedzi:
Kiedy odpalasz coś z
sudo
ustawionymi kilkoma zmiennymi środowiskowymi, szczególnie myślę, że szukaszSUDO_UID
. Powinny być one dostępne dla każdego programu działającego przez zwykłe kanały dostępu do zmiennych środowiskowych.Możesz zobaczyć inne rzeczy ustawione przez oszustwo takie jak to z powłoki:
sudo env | grep SUDO
źródło
SUDO_UID
iSUDO_USER
. Jeszcze raz dziękuję.SUDO_USER
było dokładnie tym, czego szukałem.