ความแตกต่างที่สำคัญระหว่างคำสั่งเหล่านี้คือวิธีที่พวกเขา จำกัด การเข้าถึงฟังก์ชันของพวกเขา
su (ซึ่งหมายถึง "ผู้ใช้สำรอง" หรือ "เปลี่ยนผู้ใช้") - ทำเช่นนั้นมันจะเริ่มเชลล์อินสแตนซ์อื่นด้วยสิทธิ์ของผู้ใช้เป้าหมาย เพื่อให้แน่ใจว่าคุณมีสิทธิ์ที่จะทำอย่างนั้นก็ขอให้คุณใส่รหัสผ่านของผู้ใช้เป้าหมาย ดังนั้นในการเป็นรูทคุณต้องรู้รหัสผ่านรูท หากมีผู้ใช้หลายคนในเครื่องของคุณที่ต้องการเรียกใช้คำสั่งในฐานะรูทพวกเขาจำเป็นต้องรู้รหัสผ่านรูท - โปรดทราบว่ามันจะเป็นรหัสผ่านเดียวกัน หากคุณต้องการเพิกถอนสิทธิ์ผู้ดูแลระบบจากหนึ่งในผู้ใช้คุณต้องเปลี่ยนรหัสผ่านรูทและบอกให้คนเหล่านั้นที่ต้องการเข้าถึง - ยุ่งเท่านั้น
sudo (อืม ... ผู้ช่วยในการจำคืออะไร Super-User-DO?)แตกต่างไปจากเดิมอย่างสิ้นเชิง มันใช้ไฟล์กำหนดค่า (/ etc / sudoers) ซึ่งแสดงว่าผู้ใช้รายใดมีสิทธิ์ในการดำเนินการเฉพาะ (เรียกใช้คำสั่งเป็นรูท ฯลฯ ) เมื่อเรียกใช้มันจะขอรหัสผ่านของผู้ใช้ที่เริ่มต้น - เพื่อให้มั่นใจว่า ขั้วมันเดียวกัน "โจ" /etc/sudoersที่ระบุไว้ใน ในการเพิกถอนสิทธิ์ผู้ดูแลระบบจากบุคคลคุณเพียงแค่ต้องแก้ไขไฟล์กำหนดค่า (หรือลบผู้ใช้ออกจากกลุ่มที่มีรายชื่ออยู่ในการกำหนดค่านั้น) สิ่งนี้ส่งผลในการจัดการสิทธิพิเศษที่สะอาดกว่ามาก
ด้วยเหตุนี้rootผู้ใช้ระบบ Debian หลายคนจึงไม่ได้ตั้งรหัสผ่าน - นั่นคือไม่สามารถเข้าสู่ระบบในฐานะ root โดยตรง
นอกจากนี้/etc/sudoersอนุญาตให้ระบุตัวเลือกเพิ่มเติม - เช่นผู้ใช้ X เท่านั้นที่สามารถเรียกใช้โปรแกรม Y เป็นต้น
sudo suชุดค่าผสมที่ใช้บ่อยจะทำงานดังต่อไปนี้ก่อนsudoขอรหัสผ่านจากคุณและหากคุณได้รับอนุญาตให้เรียกใช้คำสั่งถัดไป ( su) ในฐานะผู้ใช้ขั้นสูง เนื่องจากsuมีการเรียกใช้โดยrootไม่ต้องการให้คุณป้อนรหัสผ่านของผู้ใช้เป้าหมาย ดังนั้นsudo suอนุญาตให้คุณเปิดเชลล์ในฐานะผู้ใช้รายอื่น (รวมถึงรูท) หากคุณได้รับอนุญาตให้เข้าถึง/etc/sudoersไฟล์super-user
su userในการเข้าสู่ระบบจากเปลือกที่ไม่น่าเชื่อถือsu - userแต่ ดูunix.stackexchange.com/q/7013/8250