มันยิ่งขึ้นอยู่กับวิธีที่คุณเรียกโปรแกรมของคุณด้วยหรือsudo
เช่นในระบบที่ฉันเป็นในขณะนี้:su
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
โดยที่ [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / sbin: / bin
Env = ตัวแปรสภาพแวดล้อมถูกรีเซ็ต 1 และ 5 นำมาจาก $ USER ใน 2,3,4
ดังนั้นสคริปต์หรือโปรแกรมที่จะเปิดตัวพร้อมกับตัวเลือกที่แตกต่างกันสามารถมองเห็นที่แตกต่างกัน$PATH
, $HOME
เปลือกของมันสามารถอ่านที่แตกต่างกัน.bashrc
, .profile
และตัวแปรสภาพแวดล้อม $HOME
มันอ่านไฟล์ที่เกี่ยวข้องกับ ผู้ใช้แต่ละคนสามารถปรับเปลี่ยนสภาพแวดล้อมของเขาในวิธีที่แตกต่างกัน (ตัวแปร$PATH
,, .bashrc, .profile, .bash_profile, alias ... ) โดยเฉพาะอย่างยิ่งผู้ใช้สามารถมีลำดับที่แตกต่างกันของไดเรกทอรีในของเขา$PATH
และเป็นผลให้สคริปต์สามารถดำเนินการคำสั่งเช่นใน/home/$USER/bin
แทนจากนั้นหนึ่งในเส้นทางที่คาดหวังจากราก
คุณสามารถเรียกใช้โปรแกรมที่อยู่ภายใต้sudo -i
ตามที่คุณได้ลงทะเบียนเป็นรากที่มีsu -
แต่คุณสามารถมีพฤติกรรมที่แตกต่างกันถ้าคุณใช้มันด้วยหรือsudo MyCommand
su -c MyCommand
จากman su
:
ในส่วนคำอธิบาย: สภาพแวดล้อมในปัจจุบันมีการส่งผ่านไปยังเปลือกใหม่
ค่าของ$ PATH จะถูกรีเซ็ตเป็น / bin: / usr / bin สำหรับผู้ใช้ปกติหรือ / sbin: / bin: / usr / sbin: / usr / bin สำหรับ superuser
...
ในส่วนของตัวเลือก:
- , -l , --login
จัดเตรียมสภาพแวดล้อมคล้ายกับสิ่งที่ผู้ใช้คาดหวังว่าจะมีผู้ใช้เข้าสู่ระบบโดยตรง
จากมนุษย์ sudo
-i , --login
รันเชลล์ที่ระบุโดยรายการฐานข้อมูลรหัสผ่านของผู้ใช้เป้าหมายเป็นเชลล์ล็อกอิน ซึ่งหมายความว่าไฟล์ทรัพยากรเฉพาะการเข้าสู่ระบบเช่น. profile หรือ .login จะถูกอ่านโดยเชลล์ หากระบุคำสั่งคำสั่งจะถูกส่งไปยังเชลล์เพื่อดำเนินการผ่านตัวเลือกเชลล์ของ -c หากไม่ได้ระบุคำสั่งเชลล์เชิงโต้ตอบจะถูกดำเนินการ sudo
พยายามเปลี่ยนเป็นโฮมไดเร็กทอรีของผู้ใช้นั้นก่อนรันเชลล์ คำสั่งทำงานกับสภาพแวดล้อมที่คล้ายกับที่ผู้ใช้จะได้รับในการเข้าสู่ระบบ ส่วนคำสั่งสภาพแวดล้อมในเอกสารคู่มือ sudoers (5) วิธีที่ตัวเลือก -i ส่งผลกระทบต่อสภาพแวดล้อมที่คำสั่งจะทำงานเมื่อมีการใช้นโยบาย sudoers