Como o X11 interage com o kernel / executa o login


14

Pelo que entendi, para a interação baseada em texto com o kernel do Linux, um programa chamado initinicia getty(ou agetty) que se conecta a um dos dispositivos TTY /deve solicita um nome de usuário. Depois disso, loginé executado um programa chamado, que solicita a senha do usuário e, se estiver correto, inicia o shell preferido do usuário (por exemplo, bashou csh). Neste ponto, o bash interage com o kernel através do dispositivo TTY.

Como esse processo de login funciona para o X11? O X11 interage com o kernel através de um TTY?

Respostas:


15

O shell usa um dispositivo TTY (se estiver conectado a um) para obter entrada do usuário e produzir saída, e não muito mais. O fato de um shell estar conectado a um TTY é determinado por getty(e preservado por login); na maioria das vezes, o shell não se importa se está conectado a um TTY ou não. Sua interação com o kernel acontece através de chamadas do sistema.

Um servidor X11 não sabe sobre logins (como um shell). O processo de login no X11 funciona de duas maneiras:

  • o usuário efetua login no terminal e inicia o X (normalmente usando startx);
  • ou um servidor X é iniciado com um "gerenciador de exibição" que solicita ao usuário um login e senha (ou qualquer informação de autenticação necessária).

A maneira como os servidores X11 obtêm entrada e produzem saída é muito diferente em comparação com um shell. No lado da entrada, X conhece dispositivos que os projéteis não possuem, começando com ratos; normalmente gerencia aqueles diretamente com seus próprios drivers. Mesmo para teclados, o X tem seus próprios drivers que complementam o manuseio do kernel (pelo que entendi, no Linux, por exemplo, o X usa o driver TTY para ler entradas brutas do teclado, mas depois interpreta isso usando seu próprio driver). No lado da saída, as unidades X exibem os dispositivos diretamente, com ou sem a ajuda do kernel e sem passar por um dispositivo TTY.

Servidores x11 em muitos sistemas de fazer dispositivos uso TTY, porém, para sincronizar com o kernel: em sistemas que suportam os terminais virtuais, X precisa de “reserva” o VT que está sendo executado, e comutação alça VT. Existem algumas outras sutilezas ao longo do caminho; assim, no Linux, o X ajusta o TTY para desativar o GPM (um programa que permite o uso de mouses no modo texto). X também pode compartilhar um VT ...

Em algumas estações de trabalho no passado, não havia muita sincronização explícita com o kernel; se você não executou xconsole, poderá terminar com as mensagens do kernel exibidas no "modo de texto" na parte superior da tela do X11.


2

O kernel não tem absolutamente nenhum conceito de logon ou de quem está logado - tudo o que importa é que haja processos em execução sob um determinado ID de usuário (quem também não é da conta do kernel!). Um programa de login, seja o getty em um terminal ou um gerenciador de exibição X11, é executado como root e, em seguida, usa setuid () e chamadas relacionadas para configurar um ambiente para qualquer UID que o resolvedor local (NSS e libc - também não são os negócios do kernel) sugeridos para usar para o usuário que acabou de se autenticar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.