ความแตกต่างที่สำคัญระหว่างคำสั่งเหล่านี้คือวิธีที่พวกเขา จำกัด การเข้าถึงฟังก์ชันของพวกเขา
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