วิธีรับชื่อของผู้ใช้ที่เปิดตัว `sudo '


12

ปัญหาของฉัน: sudoฉันมีโปรแกรมหลามและการเปิดตัวของผู้ใช้โดยใช้ บางครั้งฉันต้องกลับบ้านของผู้ใช้และฉันสามารถทำได้โดยรู้ชื่อเท่านั้น:

import pwd

pwd.getpwnam(username)

ดังนั้น: ฉันจะรับชื่อผู้ใช้ที่เปิดตัวโปรแกรมได้อย่างไร


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

ขอบคุณสำหรับคำแนะนำ. ตกลงฉันจะตั้งค่าของฉันไปeuid SUDO_UID
rubik

คำตอบ:


22

เมื่อคุณปิดไฟอะไรกับคู่ของตัวแปรสภาพแวดล้อมที่ได้รับการตั้งเฉพาะผมคิดว่าคุณกำลังมองหาsudo SUDO_UIDโปรแกรมเหล่านี้ควรเข้าถึงได้ผ่านช่องทางปกติของการเข้าถึงตัวแปรสภาพแวดล้อม

คุณสามารถเห็นสิ่งอื่น ๆ ที่กำหนดโดยการโกงเช่นนี้จากเปลือก: sudo env | grep SUDO


1
+1 ว้าว! ขอบคุณมาก! นั่นคือสิ่งที่ฉันกำลังมองหา ฉันคิดว่าฉันจะใช้และSUDO_UID SUDO_USERขอขอบคุณอีกครั้ง.
rubik

1
SUDO_USERเป็นสิ่งที่ฉันกำลังมองหา
ฟีนิกซ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.