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?
euid
na SUDO_UID
.
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).