Sự khác biệt giữa bắt đầu x và bắt đầu trình quản lý hiển thị là gì?


8

Sự khác biệt giữa chạy startxvà bắt đầu trình quản lý hiển thị của bạn là sudo service (display_manager) startgì? Hai sự kiện khác nhau xảy ra, vì vậy tôi tò mò muốn biết sự khác biệt đằng sau hậu trường.


Bạn có thể khởi chạy máy chủ X mà không cần trình quản lý hiển thị AFAIK
Rui F Ribeiro

Câu trả lời:


8

Giao diện người dùng đồ họa trên các hệ thống Unix truyền thống, cũng như hầu hết các hệ thống Unix hiện đại khác ngoài Mac OS X, được xây dựng trên Hệ thống X Window . Một thành phần, máy chủ X, giao tiếp với phần cứng (thiết bị ngoại vi hiển thị và đầu vào) và cung cấp các nguyên hàm cơ bản để hiển thị các cửa sổ và định tuyến đầu vào của người dùng. Các chương trình khác, được cho là máy khách X, hiển thị các cửa sổ và lắng nghe ý kiến ​​của người dùng bằng cách liên lạc với máy chủ X.

Để nói chuyện với phần cứng, máy chủ X có thể yêu cầu các đặc quyền đặc biệt; ví dụ, trên một số hệ thống, máy chủ X là setuid root. Các hệ thống gần đây cố gắng tránh việc máy chủ X chạy bằng root để cải thiện bảo mật. Tùy thuộc vào hệ thống, việc chạy máy chủ X trên bảng điều khiển hệ thống có thể bị hạn chế ở một số người dùng nhất định hoặc người dùng có quyền truy cập vật lý vào bảng điều khiển.

Máy chủ X không làm gì khác ngoài việc hiển thị một mẫu nền được mã hóa cứng và con trỏ chuột. Để làm bất cứ điều gì hữu ích, một số khách hàng cần được bắt đầu, thường bao gồm một trình quản lý cửa sổ .

Cách thông thường để chạy phiên GUI là chạy chương trình quản lý phiên, đảm nhiệm việc khởi chạy tất cả các máy khách mong muốn (trình quản lý cửa sổ, tiện ích máy tính để bàn, trình quản lý bảng tạm, chương trình được khôi phục từ phiên trước của người dùng, v.v.). Trình quản lý phiên cần được khởi động sau máy chủ X vì nó sẽ tương tác với nó. Mỗi môi trường máy tính để bàn đi kèm với trình quản lý phiên riêng của nó; bất kỳ trình quản lý cửa sổ nào cũng có thể được sử dụng như một trình quản lý phiên và trong một tình huống khó khăn, một thiết bị đầu cuối chạy shell có thể được xem như một trình quản lý phiên tối giản - điều quan trọng là người dùng có một số cách để khởi chạy các chương trình họ muốn chạy.

Có hai cách truyền thống để khởi chạy phiên GUI:

  • Nếu người dùng đã đăng nhập, nhưng họ chưa có GUI, họ có thể chạy xinitlệnh. Lệnh này khởi động máy chủ X, sau đó khởi động trình quản lý phiên và chờ trình quản lý phiên thoát; sau đó nó giết chết máy chủ X. Theo cách này, phía máy khách của phiên và máy chủ X có cùng thời gian tồn tại. Các startxchương trình là một wrapper quanh nhỏ xinit.
  • Cũng có thể khởi động GUI trước khi bất kỳ người dùng nào đăng nhập. Trong trường hợp đó, máy khách duy nhất là trình quản lý hiển thị , cung cấp lời nhắc đăng nhập. Khi người dùng đã đăng nhập, trình quản lý hiển thị sẽ gọi trình quản lý phiên của họ. Khi trình quản lý phiên thoát, trình quản lý hiển thị đảm bảo rằng không còn chương trình nào đang chạy trong phiên đó và hiển thị lời nhắc đăng nhập mới.

Một cách khác để thấy điều này là để có phiên đăng nhập đồ họa, cần có giao diện đồ họa và người dùng cần đăng nhập. Hai bước này có thể được thực hiện theo thứ tự: đăng nhập rồi khởi động GUI ( startxphương thức), hoặc khởi động GUI sau đó đăng nhập (phương thức trình quản lý hiển thị).

Các thiết lập khác là không phổ biến nhưng có thể. Ví dụ: trong thiết lập kiosk, tập lệnh khởi động hệ thống khởi động máy chủ X và máy khách toàn màn hình. Trong thiết lập autologin, trình quản lý hiển thị chạy trình quản lý phiên cho người dùng mặc định khi khởi động.


1
Sự khác biệt giữa startxvà là xinitgì?
Rohan

3

Nói chung, một hệ thống unix yêu cầu root để khởi động X (hoặc trình quản lý hiển thị, chạy trong X).

Nếu không có trình quản lý hiển thị, nếu root khởi động X thì người dùng hiện tại của phiên X là root.

Với trình quản lý hiển thị, root bắt đầu X và trình quản lý hiển thị, nhưng sau đó cho phép người dùng khác bắt đầu các phiên trong môi trường đó. Điều này có nghĩa là mặc dù đã root để khởi động X, người dùng "bình thường" giờ đây có thể kiểm soát và chạy tất cả các quy trình một cách an toàn.

Root, tuy nhiên, vẫn "sở hữu" phiên X. Trừ khi bạn đã cấp quyền cho người dùng (bằng cách thêm người dùng đó vào nhóm thích hợp) để thực hiện những việc quan trọng lớn như Tắt máy hoặc Khởi động lại, người dùng không thể dừng X. Chỉ có root mới có thể làm điều đó. Điều đó đôi khi quan trọng trên hệ thống nhiều người dùng, nơi bạn không muốn người dùng đột nhiên quyết định khởi động lại máy, phá hủy các phiên khác trong quy trình.


Vì vậy, để tôi chấm dứt phiên GUI của mình và chuyển sang bảng điều khiển ảo, tôi phải chạy sudo service mdm stopđể dừng trình quản lý hiển thị. Có cách nào để tôi chấm dứt X không? Nhân tiện, tôi không phải root để bắt đầu X. Có phải đó không phải là một yêu cầu nữa để được root để bắt đầu X?
Rohan

Khá nhiều thứ liên quan đến quyền có thể được thay đổi, bởi bạn (nếu bạn có quyền hạn gốc) hoặc bởi quản trị viên phân phối hoặc sys của bạn. Bạn có thể đã được cấp quyền bắt đầu và dừng X bởi quản trị viên hệ thống hoặc bản phân phối của bạn. Về mặt kỹ thuật, bạn chỉ có thể dừng X (bao gồm trình quản lý hiển thị) nhưng thông thường các distro đã được đặt để nếu bạn giết X, nó sẽ tự động bắt đầu lại. Đây là một loại cơ chế không an toàn để đảm bảo người dùng có GUI. Không phải tất cả các distro làm điều này (ví dụ Slackware). Bạn cũng có thể thay đổi hành vi trong Upstart hoặc Systemd hoặc bất kỳ init nào bạn sử dụng.
Klaatu von Schlacker

1
Câu trả lời này rất sai lệch, nó ngụ ý rằng người dùng không có đặc quyền không thể chạy startx.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles đây là lý do tại sao tôi sử dụng thuật ngữ "nói chung" và cụm từ "trừ khi bạn đã cấp một đặc quyền người dùng", và sau đó cụm từ "Khá nhiều thứ liên quan đến quyền có thể được thay đổi" trong bình luận của tôi. Tôi không thấy điều này là sai lệch; Tôi đang trả lời trong bối cảnh của câu hỏi và không yêu cầu phát biểu cho tất cả các thống nhất trong mỗi lần thực hiện.
Klaatu von Schlacker
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.