ปัญหาของฉัน: sudo
ฉันมีโปรแกรมหลามและการเปิดตัวของผู้ใช้โดยใช้ บางครั้งฉันต้องกลับบ้านของผู้ใช้และฉันสามารถทำได้โดยรู้ชื่อเท่านั้น:
import pwd
pwd.getpwnam(username)
ดังนั้น: ฉันจะรับชื่อผู้ใช้ที่เปิดตัวโปรแกรมได้อย่างไร
ขอบคุณสำหรับคำแนะนำ. ตกลงฉันจะตั้งค่าของฉันไป
—
rubik
euid
SUDO_UID
sudo
ปล่อยให้HOME
ตัวแปรสภาพแวดล้อมไม่เปลี่ยนแปลง (ซึ่งสามารถแทนที่ได้ในเวลาคอมไพล์หรือรันไทม์) แต่คุณอาจจะหรืออาจไม่สามารถใช้ตัวแปรสภาพแวดล้อมขึ้นอยู่กับสิ่งที่คุณต้องการให้เกิดขึ้นหากผู้ใช้ระบุค่าที่แตกต่างกันสำหรับHOME
(สิ่งที่หาก bob ทำงานHOME=/home/joe sudo your_script
?) คุณควรตั้งค่า euid ของคุณให้เป็นผู้ใช้ที่โทร (กำหนดโดยSUDO_UID
) ก่อนที่จะเข้าถึงระบบไฟล์ใด ๆ (นอกเหนือจากสิ่งที่ต้องใช้สิทธิ์รูทในสคริปต์ของคุณ)