Mối quan hệ giữa root và kernel là gì? [đóng cửa]


8

Dựa trên một phần của câu trả lời đầu tiên của câu hỏi này :

đọc từ một tệp (kernel phải kiểm tra xem các quyền cho phép bạn đọc từ tệp đã nói hay không, và sau đó kernel thực hiện các hướng dẫn thực tế vào đĩa để đọc tệp)

Nó đòi hỏi phải có đặc quyền root để thay đổi quyền cho một tập tin. Với quyền root, người dùng có thể truy cập bất kỳ tệp nào mà không phải lo lắng về quyền. Vì vậy, có bất kỳ mối quan hệ giữa root và kernel?


Câu hỏi quá mơ hồ / không rõ ràng để có thể trả lời.
psusi

Câu hỏi này thực tế liên quan đến một số điều. Nó có thể yêu cầu một người đọc về cuộc gọi hệ thống , cấp đặc quyềncấp đặc quyền . Tôi không biết làm thế nào để từ câu hỏi tốt hơn. Bằng cách nào đó, Steven D hiểu ý của tôi.
Ron Vince

Câu trả lời:


13

Đầu tiên, làm rõ:

Nó đòi hỏi phải có đặc quyền root để thay đổi quyền cho một tập tin.

Từ man 2 chmod, chúng ta có thể thấy rằng lệnh gọi hệ thống chmod () sẽ trả về EPERM (lỗi quyền) nếu:

UID hiệu quả không phù hợp với chủ sở hữu của tệp và quy trình này không có đặc quyền (Linux: nó không có khả năng CAP_FOWNER).

Điều này thường có nghĩa là bạn hoặc là cần phải là chủ sở hữu của tập tin hoặc người dùng root. Nhưng chúng ta có thể thấy rằng tình hình trong Linux có thể phức tạp hơn một chút.

Vì vậy, có bất kỳ mối quan hệ giữa root và kernel?

Như văn bản bạn đã trích dẫn đã chỉ ra, kernel có trách nhiệm kiểm tra xem UID của quá trình thực hiện cuộc gọi hệ thống (nghĩa là người dùng đang chạy như vậy) có được phép thực hiện những gì nó yêu cầu không. Do đó, siêu năng lực của root xuất phát từ thực tế là kernel đã được lập trình để luôn cho phép một hoạt động được yêu cầu bởi người dùng root (UID = 0).

Trong trường hợp của Linux, hầu hết các quyền kiểm tra khác nhau xảy ra đều kiểm tra xem UID đã cho có khả năng cần thiết hay không . Hệ thống khả năng cho phép kiểm soát chi tiết hơn đối với những người được phép làm những gì.

Tuy nhiên, để duy trì ý nghĩa UNIX truyền thống của người dùng "root", một quy trình được thực hiện với UID bằng 0 có tất cả các khả năng.

Lưu ý rằng trong khi các quy trình chạy dưới dạng UID = 0 có các đặc quyền siêu người dùng, chúng vẫn phải thực hiện các yêu cầu của kernel thông qua giao diện gọi hệ thống.

Do đó, một quá trình không gian người dùng, ngay cả khi chạy bằng root, vẫn bị giới hạn ở những gì nó có thể làm khi nó đang chạy trong " chế độ người dùng " và hạt nhân đang chạy trong " chế độ kernel ", thực sự là các chế độ hoạt động riêng biệt cho CPU. Trong chế độ kernel, một tiến trình có thể truy cập bất kỳ bộ nhớ hoặc đưa ra bất kỳ lệnh nào. Trong chế độ người dùng (trên CPU x86 thực tế có một số chế độ được bảo vệ khác nhau), một quá trình chỉ có thể truy cập vào bộ nhớ của chính nó và chỉ có thể đưa ra một số hướng dẫn. Do đó, một quá trình không gian người dùng đang chạy như root vẫn chỉ có quyền truy cập vào các tính năng chế độ kernel mà kernel tiếp xúc với nó.


Chúng ta nên nói rằng root hoặc UID = 0 có đặc quyền cấp kernel? Hoặc có bất kỳ hạn chế nào được áp dụng bởi kernel cho root?
Ron Vince

Các quy trình chạy dưới dạng UID = 0 có các đặc quyền siêu người dùng; tuy nhiên, họ vẫn thực hiện các yêu cầu của kernel thông qua giao diện gọi hệ thống. Một quá trình không gian người dùng, ngay cả khi chạy bằng root, vẫn bị giới hạn ở những gì nó có thể làm khi nó đang chạy trong "chế độ người dùng" và kernel đang chạy trong "chế độ kernel", thực sự là các chế độ hoạt động riêng biệt cho CPU. Một quá trình không gian người dùng đang chạy như root vẫn chỉ có quyền truy cập vào các tính năng chế độ kernel mà kernel tiếp xúc với nó. Xem linfo.org/kernel_mode.html để biết thêm thông tin.
Steven D

Tôi đã thêm lời khen của mình vào câu trả lời với một số liên kết.
Steven D

Bạn có bất kỳ khuyến nghị về sách Unix?
Ron Vince

Owh..cảm ơn bạn đã nói điều đó. Tôi vẫn đang làm bài phê bình văn học dựa trên các câu trả lời đã cho. Họ chỉ ra ý tưởng và tài liệu văn học nhưng tôi chưa chắc chắn xác định đúng hay sai của những câu trả lời đó.
Ron Vince
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.