Qual é a diferença entre iniciar x e iniciar o gerenciador de exibição?

7

Qual é a diferença entre executar startx e iniciar seu gerenciador de exibição com sudo service (display_manager) start ? Dois eventos diferentes acontecem, então estou curioso para saber a diferença por trás das cenas.

    
por Rohan 10.01.2016 / 19:47

2 respostas

7

A interface gráfica do usuário em sistemas Unix tradicionais, bem como a maioria dos sistemas Unix modernos, além do Mac OS X, é construída no X Sistema de Janelas . Um componente, o servidor X, se comunica com o hardware (periféricos de exibição e entrada) e oferece primitivos básicos para exibir janelas e rotear a entrada do usuário. Outros programas, que dizem ser clientes X, exibem janelas e escutam a entrada do usuário comunicando-se com o servidor X.

Para conversar com o hardware, um servidor X pode requerer privilégios especiais; por exemplo, em alguns sistemas, o servidor X é setuid root. Sistemas recentes tentam evitar que o servidor X seja executado como root para melhorar a segurança. Dependendo do sistema, a execução de um servidor X no console do sistema pode ser restrita a determinados usuários ou ao usuário com acesso físico ao console.

O servidor X não faz nada além de exibir um padrão de fundo codificado e um cursor do mouse. Para fazer algo útil, alguns clientes precisam ser iniciados, geralmente incluindo um gerenciador de janelas .

A maneira normal de executar uma sessão GUI é executar um programa gerenciador de sessões, que cuida do lançamento de todos os clientes desejados (gerenciador de janelas, widgets da área de trabalho, gerenciador da área de transferência, programas restaurados da sessão anterior do usuário, etc.). O gerenciador de sessões precisa ser iniciado após o servidor X, já que ele irá interagir com ele. Cada ambiente de desktop vem com seu próprio gerenciador de sessão; praticamente qualquer gerenciador de janelas também pode ser usado como gerenciador de sessões e, em um aperto, um terminal executando um shell pode ser visto como um gerenciador de sessão minimalista - o que importa é que o usuário tenha alguma forma de iniciar os programas que deseja executar.

Existem duas formas tradicionais de iniciar uma sessão da GUI:

  • Se um usuário já estiver conectado, mas ainda não tiver uma GUI, poderá executar o xinit startx é um pequeno wrapper em torno de xinit .
  • Também é possível iniciar uma GUI antes de qualquer usuário efetuar login. Nesse caso, o único cliente é um display gerente , que fornece um prompt de login. Depois que um usuário tiver efetuado login, o gerenciador de exibição chama seu gerenciador de sessões. Quando o gerenciador de sessões sai, o gerenciador de exibição assegura que nenhum outro programa esteja sendo executado naquela sessão e mostra um novo prompt de login.

Outra maneira de ver isso é que, para ter uma sessão de login gráfica, é preciso haver uma interface gráfica e o usuário precisa efetuar login. Essas duas etapas podem ser executadas em qualquer ordem: login e, em seguida, inicie a GUI ( startx method), ou inicie a GUI e, em seguida, faça o login (método do gerenciador de exibição).

Outras configurações são incomuns, mas possíveis. Por exemplo, em uma configuração de quiosque, os scripts de inicialização do sistema iniciam um servidor X e um único cliente de tela inteira. Em uma configuração automática, o gerenciador de exibição executa um gerenciador de sessão para o usuário padrão no momento da inicialização.

    
por 11.01.2016 / 01:00
2

Geralmente, um sistema unix requer que a raiz inicie o X (ou um gerenciador de exibição, que é executado dentro do X).

Sem um gerenciador de exibição, se root iniciar X, o usuário atual da sessão X será raiz.

Com um gerenciador de exibição, o root inicia o X e o gerenciador de exibição, mas permite que outros usuários iniciem sessões nesse ambiente. Isso significa que, mesmo tendo raízes para iniciar o X, um usuário "normal" agora pode assumir o controle e executar todos os processos com segurança.

Root, no entanto, ainda "possui" a sessão X. A menos que você tenha concedido uma permissão ao usuário (adicionando esse usuário ao grupo apropriado) para fazer grandes coisas importantes como Desligar ou Reiniciar, o usuário não poderá parar o X. Somente o root pode fazer isso. Isso às vezes é importante em um sistema multiusuário, no qual você não deseja que os usuários decidam reiniciar a máquina de repente, destruindo outras sessões no processo.

    
por 10.01.2016 / 20:00