Không ai có ✓, vì vậy tôi đưa ra một câu trả lời có mọi thứ tôi có thể nghĩ ra.
1 Khi bạn chạy một tệp thực thi, đôi khi HĐH sẽ từ chối sự cho phép của bạn. Ví dụ: chạy make install với tiền tố là đường dẫn hệ thống sẽ cần sudo, trong khi với tiền tố là đường dẫn không phải hệ thống sẽ không được yêu cầu sudo. Làm thế nào để HĐH quyết định rằng việc chạy một tệp thực thi sẽ đòi hỏi nhiều đặc quyền hơn người dùng có, ngay cả trước khi chương trình làm điều gì đó?
Không, nó không được thực hiện khi một thực thi được bắt đầu. Nó được thực hiện khi thực thi cố gắng làm một cái gì đó.
Os sẽ kiểm tra các quyền và khả năng của hệ thống tệp (các quyền này không được bao phủ bởi các quyền của hệ thống tệp và bao gồm giảm mức độ đẹp, mknode, một số nội dung mạng cấp thấp, tiêu diệt các quy trình khác, khởi động lại, đặt thời gian, v.v.). Nếu bạn không có quyền thì bạn không thể làm được. Root có đầy đủ các khả năng, bao gồm cả CAP_DAC_OVERRIDE (bỏ qua quyền truy cập tệp).
2 Đôi khi, chạy chương trình sẽ không bị từ chối cấp phép, nhưng chương trình sẽ có thể làm nhiều việc hơn nếu chương trình được chạy bằng sudo. Ví dụ, khi chạy du trên một số thư mục hệ thống, chỉ với sudo, nó mới có thể truy cập một số thư mục. Tại sao HĐH không từ chối cấp phép chạy một chương trình như vậy, hoặc thân thiện thông báo thêm đặc quyền được ưu tiên hơn, trước khi chương trình có thể chạy?
HĐH không thể biết chương trình sẽ làm gì. Vì vậy, tùy thuộc vào chương trình để kiểm tra quyền trước khi bắt đầu và quyết định phải làm gì. Nó không phải làm điều này mặc dù.
Lưu ý: trên Android có một bảng kê khai, trong ứng dụng này khai báo những đặc quyền nào nó có thể sử dụng. HĐH sẽ giết bất kỳ ứng dụng nào cố gắng sử dụng một đặc quyền mà nó không khai báo và HĐH không phải lúc nào cũng đảm bảo rằng một đặc quyền có thể được tôn vinh. ví dụ truy cập mạng có thể không có sẵn.
2 Có đúng là bất cứ khi nào sudo hoạt động, su cũng sẽ hoạt động và bất cứ khi nào su hoạt động, sudo cũng sẽ hoạt động? hoặc với su, một người dùng có thể làm nhiều hơn với sudo? HĐH quyết định khi nào sudo hoạt động và khi nào cần su?
sudo
và su
làm đại khái việc lấy mẫu. Một số khác biệt là xử lý biến môi trường và tránh sự cố bảo mật khác. Tuy nhiên, cả hai đều là công cụ cho phép bạn trở thành người dùng khác và cả hai đều có người dùng root mặc định.
su
là công cụ ban đầu, nó yêu cầu bạn nhập mật khẩu của người dùng / nhóm mà bạn đang thay đổi.
sudo
là mới hơn và theo mặc định, bạn phải nhập mật khẩu của riêng mình, nhưng có thể được cấu hình để chấp nhận mật khẩu của người dùng / nhóm mà bạn đang chuyển sang hoặc không có mật khẩu nào cả. Nó cũng cho phép rất nhiều cấu hình, về những lệnh mà nó sẽ làm việc với ai, cho ai và cách nó sẽ xác thực với chương trình này cho người dùng này trên máy này. Ngoài ra, đây cũng sudoedit
là một phần sudo
và có thể được sử dụng để cho phép chỉnh sửa với tư cách là một người dùng khác và tránh vấn đề bảo mật tách ra khỏi trình soạn thảo (gọi exec từ trình soạn thảo để chạy một quy trình tùy ý với các đặc quyền leo thang).