X11 tương tác với kernel / thực hiện đăng nhập như thế nào


14

Theo tôi hiểu về tương tác dựa trên văn bản với nhân Linux, một chương trình có tên là initstart getty(hoặc agetty) kết nối với một trong các thiết bị TTY bên dưới /devvà nhắc nhở tên người dùng. Sau này, một chương trình được gọi loginlà chạy sẽ nhắc nhập mật khẩu của người dùng và nếu đúng, sau đó khởi chạy shell ưa thích của người dùng (ví dụ: bashhoặc csh). Tại thời điểm này, bash tương tác với kernel thông qua thiết bị TTY.

Quá trình đăng nhập này hoạt động như thế nào đối với X11? X11 có tương tác với kernel qua TTY không?

Câu trả lời:


15

Shell sử dụng thiết bị TTY (nếu được kết nối với một) để lấy đầu vào của người dùng và để tạo đầu ra, chứ không phải nhiều thứ khác. Việc một vỏ được kết nối với TTY được xác định bởi getty(và được bảo toàn bởi login); hầu hết thời gian vỏ không quan tâm liệu nó có được kết nối với TTY hay không. Tương tác của nó với kernel xảy ra thông qua các cuộc gọi hệ thống.

Máy chủ X11 không biết về thông tin đăng nhập (giống như trình bao). Quá trình đăng nhập trong X11 hoạt động theo hai cách:

  • người dùng đăng nhập vào thiết bị đầu cuối, sau đó khởi động X (thường sử dụng startx);
  • hoặc một máy chủ X được khởi động với trình quản lý hiển thị của người dùng, điều đó sẽ nhắc người dùng đăng nhập và mật khẩu (hoặc bất kỳ thông tin xác thực nào được yêu cầu).

Cách các máy chủ X11 có được đầu vào và sản xuất đầu ra rất khác so với vỏ. Về phía đầu vào, X biết về các thiết bị không có vỏ, bắt đầu bằng chuột; nó thường quản lý những người trực tiếp với trình điều khiển riêng của mình. Ngay cả đối với bàn phím, X cũng có trình điều khiển riêng bổ sung cho việc xử lý kernel (vì vậy theo tôi hiểu, trên Linux, ví dụ X sử dụng trình điều khiển TTY để đọc dữ liệu thô từ bàn phím, nhưng sau đó diễn giải bằng trình điều khiển riêng của nó). Về phía đầu ra, các ổ X hiển thị các thiết bị trực tiếp, có hoặc không có sự trợ giúp của kernel và không thông qua thiết bị TTY.

Máy chủ X11 trên nhiều hệ thống làm các thiết bị sử dụng TTY tuy nhiên, để đồng bộ hóa với các hạt nhân: trên hệ thống có hỗ trợ thiết bị đầu cuối ảo, X cần “dự trữ” các VT nó đang chạy trên, và chuyển mạch xử lý VT. Có một vài sự tinh tế khác trên đường đi; do đó, trên Linux, X điều chỉnh TTY để vô hiệu hóa GPM (một chương trình cho phép sử dụng chuột ở chế độ văn bản). X cũng có thể chia sẻ VT ...

Trên một số máy trạm trong quá khứ, không có nhiều đồng bộ hóa rõ ràng với kernel; nếu bạn không chạy xconsole, bạn có thể kết thúc với các thông báo kernel được hiển thị trong chế độ văn bản của chế độ trực tuyến trên màn hình X11 của bạn.


2

Hạt nhân hoàn toàn không có khái niệm về thông tin đăng nhập hoặc ai đã đăng nhập - tất cả những gì nó quan tâm là có các quy trình chạy dưới một ID người dùng nhất định (đó cũng không phải là việc của hạt nhân!). Một chương trình đăng nhập, có thể là nhỏ trên thiết bị đầu cuối hoặc trình quản lý hiển thị X11, chạy dưới quyền root và sau đó sử dụng setuid () và các lệnh gọi liên quan để thiết lập một evironment cho bất kỳ UID nào của trình phân giải cục bộ (NSS và libc Stuff - không phải là doanh nghiệp kernel) để sử dụng cho người dùng vừa xác thực.

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.