ทั้ง Debian และ Ubuntu จัดส่ง/etc/sudoers
ไฟล์ที่มีDefaults env_reset
ซึ่งจะรีเซ็ตตัวแปรสภาพแวดล้อม
อย่างไรก็ตามพฤติกรรมของenv_reset
ถูกเปลี่ยนจากการไม่แตะ $ HOME เพื่อรีเซ็ตเป็นโฮมของผู้ใช้เป้าหมาย
Ubuntu ตัดสินใจที่จะแก้ไขเวอร์ชันของพวกเขาsudo
เพื่อให้พฤติกรรมก่อนหน้านี้:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
ใน Ubuntu เพื่อที่จะตั้งค่าตัวแปร $ สภาพแวดล้อมที่บ้านให้กับผู้ใช้เป้าหมายหนึ่งที่มีการตั้งค่าอย่างใดอย่างหนึ่งDefaults always_set_home
หรือDefaults set_home
(ซึ่งในกรณีนี้เท่านั้นsudo -s
จะได้รับบ้านปรับปรุง) /etc/sudoers
ในของพวกเขา
ข้อผิดพลาดที่ตัวติดตาม Ubuntu นี้มีเหตุผลเพิ่มเติมบางประการที่ไม่ได้ตั้งค่า $ HOME ใน sudo:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
ดูความคิดเห็น # 4:
หาก HOME ถูกลบออกไปเช่น vim, bash เป็นต้นจะใช้ /root/.vimrc, /root/.bashrc เป็นต้นแทนที่จะเป็นผู้ใช้ ~ / .vimrc, ~ / .bashrc เป็นต้นในขณะที่มันเป็นความคิดที่ไม่ดี ในการเรียกใช้ไคลเอนต์ X ผ่าน sudo พวกเขาอาจจะมองในตำแหน่งที่ไม่ถูกต้องสำหรับไฟล์การกำหนดค่าและมีโอกาสที่ไคลเอนต์ X11 อาจไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ X11 ได้หากพวกเขามุ่งไปที่ไฟล์. Xauthority ผิด
เป็นการตัดสินใจอย่างมีสติของนักพัฒนา Ubuntu
คำตอบนี้มีรายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือก sudoers เช่นalways_set_home
:
https://unix.stackexchange.com/a/91572/281844
มีคำถามที่สองในคำถามของคุณsudo echo $HOME
ซึ่งยังแสดงถึงบ้านของผู้ใช้แม้ใน Debian
สิ่งนี้เกิดขึ้นเพราะเชลล์กำลังขยายตัว$HOME
ก่อนรันsudo
คำสั่ง
ดังนั้นนี่คือ:
$ sudo echo $HOME
ถูกขยายโดยเชลล์เป็นครั้งแรก:
$ sudo echo /home/user
จากนั้น sudo จะเรียกใช้งานecho /home/user
เป็นรูท ...
สิ่งนี้ควรแสดงให้เห็นถึงความแตกต่างเช่นกัน:
$ sudo bash -c 'echo $HOME'
/root
หรือรับรูทเชลล์แบบเต็มและดูตัวแปรสภาพแวดล้อมที่นั่น:
$ sudo -s
# echo $HOME
/root