Tôi đang cố gắng hiểu làm thế nào quyền của người dùng hoạt động trong Linux. Nhân khởi động và bắt đầu init
như root, phải không? Ban đầu sau đó chạy các kịch bản khởi động và chạy getty
( agetty
), một lần nữa với quyền root. Agetty chỉ đọc tên người dùng và chạy login
, vẫn là root, tôi nghĩ vậy. Không có gì thú vị cả. Nhưng đăng nhập làm gì? Tôi không thể tìm thấy bất cứ điều gì tốt hơn "nó cố gắng đăng nhập". Giả sử đăng nhập thấy rằng mật khẩu khớp với (và chúng tôi đang cố gắng đăng nhập như người dùng thông thường), làm thế nào để thay đổi id người dùng? Tôi nghĩ rằng nên có cuộc gọi hệ thống cho điều đó nhưng tôi không thể tìm thấy nó (có lẽ tôi chỉ bị mù?)
Ngoài ra, về su
. su
có tập bit 'setuid' nên khi chúng ta chạy nó, nó luôn chạy dưới dạng root. Nhưng khi chúng tôi bảo nó đăng nhập như người dùng thông thường, nó lại cần thay đổi id người dùng. Tôi có hiểu chính xác rằng cùng một "phép thuật" xảy ra su
và login
khi họ cần thay đổi người dùng không? Nếu vậy, tại sao có hai chương trình khác nhau? Có bất kỳ loại kinh doanh nghiêm trọng nào xảy ra khi chạy đăng nhập không?