ทำไม sudo-s ดีกว่า sudo su


28

ฉันได้เห็นความคิดเห็นจำนวนมากที่นี่ในอูบุนตูถามเกี่ยวกับการตั้งค่าในการใช้มากกว่าsudo -ssudo su

สำหรับฉันคำสั่งสองคำนั้นเหมือนกันทุกประการ แต่ทำไมsudo -sควรจะดีขึ้นหรือไม่


1
ฉันคิดsudo -iหรือsudo suดีกว่าsudo -sด้วยเหตุผลที่กล่าวถึงที่นี่: ubuntuforums.org/showpost.php?p=6188826&postcount=4นอกจากนี้: นี่เป็นสิ่งที่ซ้ำซ้อนของsuperuser.com/questions/29/…
จัด

ฉันคิดว่าคำถามนี้ควรถูกย้ายไปที่ unix.stackexchange.com
igi

คำตอบ:


26

ฉันคิดว่าsudo -sไม่ "ดีกว่า" มันแตกต่างกัน

sudo -s

เก็บไดเรกทอรี $ HOME ของคุณดังนั้นเมื่อคุณเริ่มโปรแกรมพวกเขาจะใช้ไฟล์ config (และไม่ใช่ของ root) ข้อเสีย: พวกเขายังสามารถเปลี่ยนความเป็นเจ้าของไฟล์ของคุณในไดเรกทอรี $ HOME ตัวอย่างทั่วไปคือ.Xauthorityไฟล์ แต่ฉัน ไม่เคยประสบปัญหากับสิ่งนั้น

sudo su หรือ sudo -i

โปรแกรมจะใช้โฮมไดเร็กทอรีของรูทและไฟล์กำหนดค่า สิ่งนี้อาจใช้งานง่ายกว่า แต่ก็หมายความว่าจะไม่ใช้การกำหนดค่าใด ๆ ที่คุณอาจตั้งค่าไว้สำหรับตัวคุณเอง (นามแฝงประวัติทุบตี ... )


1
โอเคตอนนี้ฉันเข้าใจความแตกต่าง ขอขอบคุณ!
fitojb

1
"sudo su" ไม่เท่ากับ "sudo -i" "sudo -i" เทียบเท่ากับ "sudo su -" แต่ "sudo su -" เก็บไดเรกทอรีการทำงานปัจจุบันไว้ในขณะที่ "sudo -i" จะย้ายคุณไปที่บ้านรูต
Gregory Pakosz

13

เพราะsudo -sจะไม่เปลี่ยนตัวแปรสภาพแวดล้อมของคุณโดยเฉพาะซึ่งจะอยู่$HOME HOME=/home/USERหากคุณใช้sudo suสิ่งนี้จะเปลี่ยนไปHOME=/rootซึ่งอาจมีผลข้างเคียงด้านลบเมื่อโปรแกรมที่คุณเริ่มพยายามเข้าถึงไดเรกทอรีหลักของผู้ใช้

ดังนั้นโดยทั่วไปมันก็เหมือนsudoเทียบกับgksudoเมื่อใช้โปรแกรมกราฟิก


5

นอกเหนือจากความแตกต่างที่กล่าวถึงแล้วกับตัวแปรสภาพแวดล้อมฉันพบว่าsudo suโง่และสิ้นเปลืองเพราะคุณกำลังขอsudoให้เรียกใช้suในฐานะรูทและขอให้มันรันเชลล์เป็นรูท เหตุใดจึงขอให้โปรแกรมถามโปรแกรมให้เชลล์รูทแก่คุณเมื่อคุณสามารถให้โปรแกรมแรกให้เชลล์นั้นแก่คุณได้ มันมีความหมายในทางปฏิบัติหรือไม่? ไม่ฉันแค่เพ้อเจ้อ


คุณพูดถูกมันค่อนข้างซ้ำซ้อน
fitojb

ไม่อย่างสมบูรณ์ถ้าคุณใช้sudo suเพื่อเป็นรูทใช่ไปsudo -iเลยตัวอย่างเช่น sudo su - myuserแต่จะช่วยเหลือเมื่อคุณต้องการที่จะกลายเป็นผู้ใช้ที่แตกต่างกัน
hggdh

2
มีความแตกต่างอื่น: sudo -iจะเปลี่ยนเป็น/rootไดเรกทอรีและsudo suจะอยู่ในไดเรกทอรีที่คุณอยู่
เรนต์

1
sudo -u myuser@hggdh,
psusi

3

ฉันจะไม่เห็นด้วยกับคำตอบอื่น ๆ เมื่อพิจารณากรณีเมื่อคุณต้องการเข้าสู่ระบบในฐานะผู้ใช้ที่ไม่มีเปลือก เป็นกรณีที่พบบ่อยมากกับผู้ใช้ที่ได้รับมอบหมายให้บริการ

การใช้ "sudo su" จะเริ่มเชลล์ที่ระบุโดยผู้ใช้ อย่างไรก็ตามในกรณีของผู้ใช้ที่กำหนดให้กระบวนการเซิร์ฟเวอร์เชลล์คือ / usr / bin / false และการบันทึกจะล้มเหลว แต่คุณควรป้อนเป็น:

sudo -sHu <server-user>

ที่จะนำคุณเข้าสู่ระบบและ cd ไปยังเส้นทางบ้านแม้ว่าผู้ใช้จะไม่ได้กำหนดเชลล์

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