ตามที่คุณระบุไว้ในคำถามความแตกต่างที่สำคัญคือสภาพแวดล้อม
sudo su - เมื่อเทียบกับ sudo -i
ในกรณีที่sudo su -มันเป็นเปลือกเข้าสู่ระบบเพื่อให้/etc/profile, .profileและ.bashrcจะดำเนินการและคุณจะพบว่าตัวเองในไดเรกทอรีบ้านรากกับสภาพแวดล้อมของราก
sudo -iเกือบจะเป็นเช่นเดียวกับ(จำลองการเข้าสู่ระบบเริ่มต้น) ตัวเลือกที่ทำงานเปลือกที่ระบุโดยรายการฐานข้อมูลรหัสผ่านของผู้ใช้เป้าหมายเป็นเปลือกเข้าสู่ระบบ ซึ่งหมายความว่าการเข้าสู่ระบบเฉพาะไฟล์ทรัพยากรเช่น, หรือจะอ่านและดำเนินการโดยเปลือกsudo su --i.profile.bashrc.login
sudo su เมื่อเทียบกับ sudo -s
sudo suเรียกด้วยคำสั่งsudo suBash ถูกเรียกว่าเป็นเชลล์ที่ไม่ได้ล็อกอินแบบโต้ตอบ ดังนั้นรันเท่านั้นbash .bashrcคุณจะเห็นว่าหลังจากเปลี่ยนเป็นรูทแล้วคุณยังอยู่ในไดเรกทอรีเดิม:
user@host:~$ sudo su
root@host:/home/user#
sudo -sอ่าน$SHELLตัวแปรและดำเนินการกับเนื้อหา หาก$SHELLมี/bin/bashมันเรียกใช้sudo /bin/bashซึ่งหมายความว่า/bin/bashจะเริ่มต้นเป็นเปลือกที่ไม่ได้เข้าสู่ระบบดังนั้นจุดไฟล์ทั้งหมดจะไม่ถูกดำเนินการ แต่bashตัวเองอ่าน bashrcของผู้ใช้ที่โทร สภาพแวดล้อมของคุณยังคงเหมือนเดิม บ้านของคุณจะไม่เป็นบ้านของคนรูท ดังนั้นคุณจะรูต แต่ในสภาพแวดล้อมของผู้ใช้ที่โทรมา
ข้อสรุป
การ-iตั้งค่าสถานะถูกเพิ่มลงsudoในปี 2004เพื่อจัดเตรียมฟังก์ชันที่คล้ายกันsudo su -ดังนั้นsudo su -เทมเพลตสำหรับsudo -iและตั้งใจทำงานเช่นนั้น ฉันคิดว่ามันไม่สำคัญว่าคุณจะใช้เรื่องใดเว้นแต่ว่าสภาพแวดล้อมนั้นไม่สำคัญ
ส่วนที่เพิ่มเข้าไป
จุดพื้นฐานที่ต้องกล่าวถึงในที่นี้sudoคือออกแบบมาเพื่อรันคำสั่งเดียวเพียงคำสั่งเดียวที่มีสิทธิ์สูงกว่า มันไม่ได้ตั้งใจจะเปลี่ยนผู้ใช้จริงๆและปล่อยให้รูทเชลล์เปิดทิ้งไว้ เมื่อเวลาผ่านsudoไปมีการขยายด้วยกลไกดังกล่าวเพราะผู้คนรู้สึกรำคาญว่าทำไมต้องใช้sudoต่อหน้าทุกคำสั่ง
ดังนั้นความหมายของการsudoถูกทำร้าย sudoมีวัตถุประสงค์เพื่อส่งเสริมให้ผู้ใช้ลดการใช้สิทธิ์รูทให้น้อยที่สุด
สิ่งที่เรามีตอนนี้กำลังsudoเป็นที่นิยมมากขึ้นเรื่อย ๆ มันรวมอยู่ในการกระจาย linux เกือบทุกที่รู้จักกันดี suเครื่องมือเดิมเพื่อสลับไปยังบัญชีผู้ใช้อื่น สำหรับโรงเรียนเก่า * ระวังเก๋าสิ่งดังกล่าวเช่นsudoอาจดูเหมือนไม่มีความจำเป็น มันเพิ่มความซับซ้อนและพฤติกรรมที่เป็นไปได้มากขึ้นกับกลไกที่เรารู้จักจากระบบปฏิบัติการตระกูล Microsoft และขัดกับปรัชญาของความเรียบง่ายของระบบ * nix
ฉันไม่ได้เป็นทหารผ่านศึกจริงๆ แต่ในความเห็นของฉันsudoก็มักจะเป็นหนามอยู่ข้างฉันเสมอจากเวลาได้รับการแนะนำและฉันก็พยายามหลีกเลี่ยงการใช้งานsudoถ้ามันเป็นไปได้ ฉันลังเลที่จะใช้sudoมากที่สุด ในทุกระบบของฉันบัญชีรูทเปิดใช้งาน แต่สิ่งต่าง ๆ อาจมีการเปลี่ยนแปลงเวลาอาจจะมาถึงเมื่อsuจะถูกคัดค้านและsudoแทนที่suอย่างสมบูรณ์
ดังนั้นผมคิดว่ามันจะเป็นสิ่งที่ดีที่สุดที่จะใช้sudoของกลไกภายใน ( -s, -i) แทนที่จะอาศัยเป็นเครื่องมือเก่า ๆ suเช่น
ubuntusu -พวกเขาสร้างปัญหาและตอนนี้มีการอภิปรายกันอย่างไม่รู้จบเกี่ยวกับวิธีแก้ปัญหา