ตั้งค่าตัวแปรสภาวะแวดล้อมโกลบอลใน Linux ที่จะทำงานเมื่อรูท


2

เมื่อฉัน SSH ลงในกล่อง Linux ฉันต้องการให้/etc/profileไฟล์บันทึกผลลัพธ์ของwhoamiคำสั่งไปยังตัวแปรสภาวะแวดล้อมโกลบอล

ถ้าฉันจะรูทด้วยคำสั่งsudo su -ฉันไม่ต้องการให้คำสั่งนั้นรันอีกครั้งเมื่อไปรูท ฉันต้องการให้มันใช้ผลลัพธ์ของwhoamiชื่อผู้ใช้ปกติของฉันก่อนที่ฉันจะรูทและต้องการเข้าถึงตัวแปรนั้นในฐานะผู้ใช้รูทแม้ว่ามันจะรัน/etc/profileไฟล์อีกครั้งเมื่อฉันรูท

ฉันจะทำอย่างไรเพื่อเรียกใช้คำสั่งนั้นเพียงครั้งเดียวใน/etc/profileคำสั่ง

คำตอบ:


5

การเก็บรักษาตัวแปรสภาพแวดล้อมผ่านเชลล์การเข้าสู่ระบบจำเป็นต้องมีสวิตช์-m รักษาตัวแปรสภาพแวดล้อมที่ผ่านมา sudo ต้องมีการเปลี่ยนแปลงเพื่อenv_keepใน/ etc / sudoers ถึงอย่างนั้นการทำเช่นนี้ก็ไม่แน่นอน

โชคดีที่มีวิธีอื่นที่จะไปเกี่ยวกับเรื่องนี้ ตัวอย่างเช่น tty ของคุณเป็นของผู้ใช้ที่คุณเข้าสู่ระบบในตอนแรก ดังนั้นการเพิ่มสิ่งนี้ลงในตอนท้ายของ / etc / profile:

TTY=$(tty)
if [ -n "$TTY" ]; then
    WHOAMI=`ls -al $TTY | awk '{print $3}'`
fi

คุณจะตั้งค่าตัวแปร WHOAMI เป็นเจ้าของ tty หากมีอยู่ให้ผ่านทั้ง sudo และ non-sudo su ไปที่ root:

[corman@localhost ~]$ sudo su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]# logout
[corman@localhost ~]$ su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]#

2
ทำความสะอาดนิดหน่อยที่จะเขียนWHOAMI=$(stat --format="%U" "$TTY")
เกล็นแจ็คแมน

3

คุณอาจใช้lognameแทนwhoami!


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