ในลินุกซ์ได้รับสิทธิประโยชน์ของรากอยู่ในจุดหนึ่งแบ่งออกเป็น "ความสามารถ" man 7 capabilities
เพื่อให้คุณสามารถได้รับรายชื่อเต็มของสิทธิพิเศษรากโดยการมองเข้าไปในเอกสารว่า
ในการตอบคำถามของคุณคำสั่งจะต้องทำงานเป็นรูทเมื่อต้องการหนึ่งในสิทธิพิเศษเหล่านี้และไฟล์ที่ไม่ใช้งานสคริปต์นั้นไม่มีความสามารถที่เกี่ยวข้องที่ตั้งค่าไว้ในข้อมูลเมตาของไฟล์ (เช่นถ้าสคริปต์ไพ ธ อนต้องการความสามารถ จะต้องอยู่ในล่ามหลามที่ระบุในบรรทัด Shebang)
โปรดทราบว่าคำสั่งบางอย่างที่จำเป็นต้องมีการเข้าถึงรูทไม่จำเป็นต้องมีสิ่งที่ต้องการsudo
เนื่องจากมีการตั้งค่าบิต SUID ในการปฏิบัติการของพวกเขา บิตนี้ทำให้เกิดการเรียกใช้งานเพื่อเรียกใช้ในฐานะเจ้าของ (โดยทั่วไปคือรูท) เมื่อดำเนินการโดยผู้ที่มีสิทธิ์เข้าถึง ตัวอย่างคือsudo
ตัวเองเนื่องจากการเปลี่ยนผู้ใช้เป็นการกระทำที่มีสิทธิพิเศษที่ต้องทำ
แก้ไข: ฉันบันทึกจากคำถามของคุณที่คุณอาจมีความคิดที่คุณสามารถตรวจสอบว่าคำสั่งจะต้องเข้าถึงรากก่อนเรียกใช้ นั่นไม่ใช่กรณี บางครั้งโปรแกรมอาจต้องการสิทธิ์รูทและบางครั้งอาจไม่ใช่และนี่อาจเป็นการตัดสินใจของโปรแกรมเนื่องจากข้อมูลที่ให้ไว้ในระหว่างรันไทม์ ยกตัวอย่างเช่นการเรียกvim
เช่นเดียวกับที่ไม่มีข้อโต้แย้งจากนั้นผ่านชุดของการกดแป้นพิมพ์และการวางบอกให้เขียนสิ่งที่ไฟล์ไม่ได้รับอนุญาตให้เขียนหรืออาจดำเนินการคำสั่งอื่นที่ตัวเองจะต้องมีสิทธิ์รูท ไม่มีอะไรเกี่ยวกับคำสั่งก่อนที่จะดำเนินการอาจบ่งบอกว่าในที่สุดมันก็จะต้องเข้าถึงราก นั่นคือสิ่งที่สามารถกำหนดได้ในจุดที่มันพยายามทำสิ่งที่ต้องการ
อย่างไรก็ตามนี่คือตัวอย่างเล็ก ๆ น้อย ๆ จาก manpage ที่อ้างอิงถึงสิทธิ์ของ root:
- ทำการจัดการโดยพลการของโพรเซส UIDs (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
- ข้ามไฟล์อ่านเขียนและดำเนินการตรวจสอบสิทธิ์ (DAC เป็นตัวย่อของ "การควบคุมการเข้าถึงตามอำเภอใจ")
- ข้ามการตรวจสอบสิทธิ์สำหรับการส่งสัญญาณ (ดู kill (2)) ซึ่งรวมถึงการใช้การดำเนินการ ioctl (2) KDSIGACCEPT
- ดำเนินการต่าง ๆ ที่เกี่ยวข้องกับเครือข่าย:
- การกำหนดค่าอินเตอร์เฟส
- การบริหาร IP ไฟร์วอลล์การปลอมแปลงและการบัญชี
- ปรับเปลี่ยนตารางเส้นทาง
- ผูกซ็อกเก็ตเข้ากับพอร์ตพิเศษของโดเมนอินเทอร์เน็ต (หมายเลขพอร์ตน้อยกว่า 1024)
- โหลดและยกเลิกการโหลดโมดูลเคอร์เนล (ดู init_module (2) และ delete_module (2));
- ตั้งค่านาฬิการะบบ (settimeofday (2), stime (2), adjtimex (2)); ตั้งค่านาฬิกาเรียลไทม์ (ฮาร์ดแวร์)
- ดำเนินการช่วงของการดำเนินการดูแลระบบรวมถึง: quotactl (2), เมานต์ (2), umount (2), swapon (2), swapoff (2), sethostname (2) และ setdomainname (2);
- ใช้รีบูต (2) และ kexec_load (2)
- ใช้ chroot (2)
- เพิ่มค่า nice ของกระบวนการ (nice (2), setpriority (2)) และเปลี่ยนค่า nice สำหรับกระบวนการโดยพลการ