Vấn đề của tôi: Tôi có một chương trình Python và người dùng khởi chạy nó bằng cách sử dụng sudo
. Đôi khi tôi phải đưa người dùng về nhà và tôi chỉ có thể làm điều này khi biết tên của nó:
import pwd
pwd.getpwnam(username)
Vì vậy: làm thế nào tôi có thể nhận được tên của người dùng đã khởi chạy chương trình?
Cám ơn bạn đã cho lời khuyên. Ok, tôi sẽ đặt mình
—
rubik
euid
vào SUDO_UID
.
sudo
lá cácHOME
biến môi trường còn nguyên vẹn (điều này có thể ghi đè tại compile- hoặc thời gian chạy). Nhưng bạn có thể hoặc không thể sử dụng biến môi trường, tùy thuộc vào điều bạn muốn xảy ra nếu người dùng chỉ định một giá trị khác choHOME
(điều gì xảy ra nếu bob chạyHOME=/home/joe sudo your_script
?). Bạn có thể nên đặt euid của mình cho người dùng đang gọi (được cung cấp bởiSUDO_UID
) trước khi thực hiện bất kỳ quyền truy cập hệ thống tệp nào (ngoài mọi thứ thực sự cần có quyền root trong tập lệnh của bạn).