ระบบปฏิบัติการป้องกันกระบวนการที่ไม่ได้รับสิทธิพิเศษจากการดำเนินการคำสั่งพิเศษอย่างไร


8

ใน Unix

หากคุณเป็นผู้ใช้ทั่วไปและทำ:

chmod 777 /

มันจะล้มเหลว

แต่สิ่งนี้เกิดขึ้นภายในระดับฮาร์ดแวร์ได้อย่างไร

จนถึงตอนนี้ฉันคิดว่านี่คือสิ่งที่เกิดขึ้น:

  • ระบบปฏิบัติการพยายามดำเนินการคำสั่งนั้น
  • ข้อมูลเกี่ยวกับสิทธิ์อาจอยู่ในหน่วยความจำรอง ดังนั้นมันจะออกคำสั่งการเขียน
  • ก่อน 2 มันจะตรวจสอบว่าผู้ใช้มีสิทธิ์ทำเช่นนี้หรือไม่ ถ้าเขาไม่ใช่มันก็แค่ออกข้อความแสดงข้อผิดพลาด

นี่เป็นวิธีการที่เกิดขึ้นหรือถูกขัดจังหวะเมื่อสถานการณ์ดังกล่าวเกิดขึ้น? มีรูทีนในตาราง ISR ในหน่วยความจำหลักที่สอดคล้องกับคำสั่งที่ไม่มีสิทธิพิเศษหรือไม่?

คำตอบ:


10

chmodเป็นการดำเนินการของระบบไฟล์ไม่ใช่คำสั่งพิเศษ สิทธิ์ระบบไฟล์ไม่ได้รับการจัดการในระดับฮาร์ดแวร์ ซอฟต์แวร์ (เฉพาะระบบปฏิบัติการ) เห็นว่ากระบวนการการเรียกสายระบบไม่ได้มีสิทธิ์เพียงพอในการดำเนินการบนวัตถุระบบแฟ้มและผลตอบแทนที่เรียกระบบด้วยข้อผิดพลาดได้รับอนุญาต


5

ที่จริงแล้วคุณถามคำถามสองข้อที่แตกต่างกัน:

  1. ระบบปฏิบัติการป้องกันกระบวนการที่ไม่ได้รับสิทธิพิเศษจากการดำเนินการคำสั่งพิเศษอย่างไร
  2. เหตุใดจึงเป็นกระบวนการที่ด้อยโอกาสไม่เรียกchmod 777 /?

คำตอบสำหรับ 2:

chmodเรียกใช้ฟังก์ชันภายในจาก libc (เรียกอีกอย่างว่าสะดวกchmod()) นี้การตรวจสอบฟังก์ชั่นไม่ว่าจะเป็นผู้โทรมีสิทธิ์เพียงพอสำหรับการดำเนินงาน - EPERMถ้าไม่ก็จะส่งกลับข้อผิดพลาด

คำตอบสำหรับ 1 น่าสนใจยิ่งขึ้น:

กลไกที่แน่นอนขึ้นอยู่กับระบบปฏิบัติการและแพลตฟอร์มฮาร์ดแวร์ แต่โดยทั่วไปมันเป็นเช่นนี้: โปรเซสเซอร์ที่ทันสมัยทั้งหมดมีคุณสมบัติความปลอดภัยในตัว สิ่งนี้ทำให้ระบบปฏิบัติการสามารถบอกโปรเซสเซอร์ได้: "เรียกใช้โปรแกรมนี้ แต่อย่าให้มันทำตามคำแนะนำพิเศษเหล่านี้" ดังนั้นโปรเซสเซอร์จะบังคับใช้ข้อ จำกัด ตามคำแนะนำที่อนุญาต หากโปรแกรมพยายามดำเนินการคำสั่งที่มีสิทธิพิเศษโปรเซสเซอร์จะส่งการควบคุมกลับไปยังระบบปฏิบัติการซึ่งโดยปกติจะยุติโปรแกรมที่ทำงานผิดปกติ สำหรับรายละเอียดโปรดดูเช่นhttps://en.wikipedia.org/wiki/Ring_%28computer_security%29

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