Làm thế nào để một hệ điều hành ngăn chặn một quá trình không có đặc quyền thực hiện một lệnh đặc quyền?


8

Trong Unix,

nếu bạn là người dùng khách và đã làm:

chmod 777 /

Nó sẽ thất bại.

Nhưng làm thế nào điều này trong nội bộ xảy ra ở cấp độ phần cứng?

Cho đến nay, tôi nghĩ đây là những gì xảy ra:

  • HĐH cố gắng thực hiện lệnh đó.
  • Thông tin về quyền có lẽ ở đâu đó trong bộ nhớ thứ cấp. Vì vậy, nó sẽ đưa ra một hướng dẫn viết.
  • Trước 2, Nó sẽ kiểm tra xem người dùng có đặc quyền làm việc này không. Nếu anh ta không, nó sẽ chỉ đưa ra một thông báo lỗi.

Đây có phải là cách nó xảy ra, hoặc là một gián đoạn được nêu ra khi một tình huống như vậy phát sinh? Có một thói quen trong bảng ISR trong bộ nhớ chính tương ứng với các hướng dẫn không được ưu tiên không?

Câu trả lời:


10

chmodlà một hoạt động hệ thống tập tin , không phải là một hướng dẫn đặc quyền. Quyền hệ thống tập tin không được xử lý ở cấp độ phần cứng. Phần mềm (cụ thể là HĐH) thấy rằng quá trình gọi cuộc gọi hệ thống không có đủ quyền để thực hiện thao tác trên đối tượng hệ thống tệp và cuộc gọi hệ thống trả về với lỗi cấp phép.


5

Thật ra, bạn đang hỏi hai câu hỏi khác nhau:

  1. Làm thế nào để một hệ điều hành ngăn chặn một quá trình không có đặc quyền thực hiện một lệnh đặc quyền?
  2. Tại sao một quá trình không có đặc quyền không thể gọi chmod 777 /?

Trả lời cho 2:

chmodbên trong gọi một hàm từ libc (cũng được gọi một cách thuận tiện chmod()). Hàm này kiểm tra xem người gọi có đủ đặc quyền cho hoạt động hay không - nếu không, nó sẽ trả về lỗi EPERM.

Câu trả lời cho 1 thú vị hơn:

Cơ chế chính xác phụ thuộc vào hệ điều hành và nền tảng phần cứng, nhưng về cơ bản là như thế này: Tất cả các bộ xử lý hiện đại đều có các tính năng bảo mật tích hợp. Điều này cho phép HĐH báo cho bộ xử lý: "chạy chương trình này, nhưng đừng để nó thực thi các hướng dẫn đặc quyền này". Vì vậy, bộ xử lý sẽ thực thi các hạn chế đối với các hướng dẫn được phép. Nếu chương trình cố gắng thực hiện một lệnh đặc quyền, bộ xử lý sẽ chuyển điều khiển trở lại HĐH, điều này thường sẽ chấm dứt chương trình xử lý sai. Để biết chi tiết, hãy xem, ví dụ: https://en.wikipedia.org/wiki/Ring_%28computer_security%29

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.