ยังไม่มีใครมี✓ดังนั้นฉันจึงรวบรวมคำตอบที่มีทุกอย่างที่ฉันสามารถนึกได้
1 เมื่อคุณเรียกใช้ไฟล์ปฏิบัติการบางครั้งระบบปฏิบัติการจะปฏิเสธการอนุญาตของคุณ ตัวอย่างเช่นการรัน make install ด้วยคำนำหน้าเป็นพา ธ ของระบบจะต้องใช้ sudo ในขณะที่คำนำหน้าเป็นพา ธ ที่ไม่ใช่ระบบจะไม่ถูกขอให้ sudo ระบบปฏิบัติการตัดสินใจอย่างไรว่าการเรียกใช้งานโปรแกรมจะต้องใช้สิทธิ์มากกว่าที่ผู้ใช้มีก่อนที่โปรแกรมจะทำอะไร
ไม่มันจะไม่ทำเมื่อเริ่มปฏิบัติการได้ มันทำเมื่อผู้ปฏิบัติการพยายามทำบางสิ่ง
ระบบปฏิบัติการจะตรวจสอบการอนุญาตระบบไฟล์และความสามารถ (สิ่งเหล่านี้ไม่รวมอยู่ในการอนุญาตระบบไฟล์และรวมถึงการลดระดับ nice, mknode, เครือข่ายระดับต่ำบางอย่าง, ฆ่ากระบวนการของผู้อื่น, รีบูต, ตั้งเวลาเป็นต้น) หากคุณไม่มีสิทธิ์คุณก็ไม่สามารถทำได้ รูทมีความสามารถอย่างเต็มรูปแบบรวมถึง CAP_DAC_OVERRIDE (เพิกเฉยการอนุญาตไฟล์)
2 บางครั้งการรันโปรแกรมจะไม่ได้รับอนุญาต แต่โปรแกรมจะสามารถทำสิ่งต่าง ๆ ได้มากขึ้นถ้ามันรันด้วย sudo ตัวอย่างเช่นเมื่อเรียกใช้ du ในบางไดเรกทอรีระบบเฉพาะกับ sudo เท่านั้นที่จะสามารถเข้าถึงบางไดเรกทอรีได้ เหตุใด OS จึงไม่ปฏิเสธการอนุญาตให้เรียกใช้โปรแกรมดังกล่าวหรือต้องการการแจ้งเตือนสิทธิพิเศษเพิ่มเติมก่อนที่โปรแกรมจะสามารถทำงานได้
ระบบปฏิบัติการไม่สามารถรู้ว่าโปรแกรมจะทำอะไร ดังนั้นขึ้นอยู่กับโปรแกรมที่จะตรวจสอบการอนุญาตก่อนที่จะเริ่มและตัดสินใจว่าจะทำอย่างไร ไม่จำเป็นต้องทำเช่นนี้
หมายเหตุ: สำหรับแอนดรอยด์มีรายการอยู่ในแอปพลิเคชันนี้จะประกาศสิทธิ์พิเศษที่อาจใช้ ระบบปฏิบัติการจะฆ่าแอปพลิเคชันใด ๆ ที่พยายามใช้สิทธิ์ที่ไม่ได้ประกาศไว้และระบบปฏิบัติการไม่ได้รับประกันว่าจะได้รับสิทธิพิเศษทุกครั้ง เช่นการเข้าถึงเครือข่ายอาจไม่สามารถใช้ได้
2 จริงหรือไม่ที่ทุกครั้งที่ sudo ทำงาน su ก็จะทำงานเช่นกันและทุกครั้งที่ su ทำงานได้ sudo ก็จะทำงานเช่นกัน หรือด้วย su ผู้ใช้สามารถทำได้มากกว่า sudo ระบบปฏิบัติการตัดสินใจได้อย่างไรว่า sudo ทำงานอย่างไรและเมื่อใดที่ su ต้องการ
sudo
และsu
ทำบางสิ่งบางอย่างคร่าวๆ ความแตกต่างบางประการคือการจัดการตัวแปรสภาพแวดล้อมและการหลีกเลี่ยงปัญหาความปลอดภัยอื่น ๆ อย่างไรก็ตามทั้งคู่เป็นเครื่องมือที่อนุญาตให้คุณเป็นผู้ใช้อื่นและทั้งคู่มีผู้ใช้รูทเริ่มต้น
su
เป็นเครื่องมือดั้งเดิมคุณจะต้องป้อนรหัสผ่านของผู้ใช้ / กลุ่มที่คุณต้องการเปลี่ยน
sudo
เป็นรุ่นที่ใหม่กว่าและจำเป็นต้องมีเพื่อให้คุณป้อนรหัสผ่านของคุณเอง แต่สามารถกำหนดค่าให้ยอมรับรหัสผ่านของผู้ใช้ / กลุ่มที่คุณเปลี่ยนเป็นหรือไม่มีรหัสผ่านเลย นอกจากนี้ยังอนุญาตให้มีการกำหนดค่าจำนวนมากซึ่งคำสั่งใดที่มันจะทำงานกับใครและจะรับรองความถูกต้องกับโปรแกรมนี้สำหรับผู้ใช้รายนี้บนเครื่องนี้อย่างไร นอกจากนี้ยังsudoedit
มีส่วนหนึ่งของsudo
และสามารถใช้เพื่ออนุญาตให้แก้ไขในฐานะผู้ใช้อื่นและหลีกเลี่ยงปัญหาด้านความปลอดภัยของการทำ sub-shelling จากตัวแก้ไข (เรียกผู้บริหารจากตัวแก้ไขเพื่อเรียกใช้กระบวนการตามอำเภอใจด้วยสิทธิ์ที่เพิ่มขึ้น)