# Manual de Referência do Gerenciador de Tela do GNOME

## Termos e convenções usados neste manual

Este manual descreve a versão 2.26.0 do Gerenciador de Tela do GNOME. Foi atualizado pela última vez em 02/10/2009.

Chooser — Um programa usado para selecionar um host remoto para gerenciar um monitor remotamente no monitor conectado (`gdm-host-chooser`).

FreeDesktop — A organização que fornece padrões de desktop, como a Especificação de entrada de desktop usada pelo GDM. https://www.freedesktop.org.

GDM — GNOME Display Manager (Gerenciador de Tela do GNOME). Usado para descrever o pacote de software como um todo.

Greeter — A janela gráfica de login (fornecida pelo `gnome-shell`).

PAM — Mecanismo de Autenticação Plugável (Pluggable Authentication Mechanism

XDMCP — X Display Manage Protocol (Protocolo de Gerenciamento de Tela X)

Xserver — Uma implementação do Sistema de Janela X. Por exemplo, o Xorg Xserver fornecido pela X.org Foundation https://www.x.org.

Os caminhos que começam com uma palavra entre <> são relativos ao prefixo de instalação, ou seja `<share>/pixmaps/` refere-se a `/usr/share/pixmaps` se o GDM foi configurado com `--prefix=/usr`.

## Visão Geral

### Introdução

O Gerenciador de Tela do GNOME (GDM) é um gerenciador de tela que implementa todos os recursos significativos necessários para o gerenciamento de exibições conectadas e remotas. O GDM foi escrito do zero e não contém nenhum código XDM ou X Consortium.

Observe que o GDM é configurável e muitas definições de configuração têm impacto na segurança. As questões a serem observadas são destacadas neste documento.

Observe que alguns sistemas operacionais configuram o GDM para se comportar de maneira diferente dos valores padrão descritos neste documento. Se o GDM não parece se comportar conforme documentado, verifique se alguma configuração relacionada pode ser diferente da descrita aqui.

Para mais informações sobre o GDM, consulte o site do projeto.

Para discussão ou dúvidas sobre GDM, consulte o fórum de discussão em https://discourse.gnome.org/tag/gdm. O arquivo da lista de discussão anterior é um bom recurso para conferir para buscar respostas para questões comuns. A lista foi arquivada em https://mail.gnome.org/archives/gdm-list/ e possui um recurso de pesquisa para procurar mensagens com palavras-chave.

Envie qualquer relatório de bug ou solicitação de aprimoramento para https://gitlab.gnome.org/GNOME/gdm/-/issues/.

### Estabilidade da Interface

O GDM 2.20 e versões anteriores suportavam interfaces de configuração estáveis. No entanto, a base de código foi totalmente reescrita para o GDM 2.22 e não é totalmente compatível com versões anteriores. Isso ocorre, em parte, porque as coisas funcionam de maneira diferente, então algumas opções simplesmente não fazem sentido. Além do mais, algumas opções nunca fizeram sentido. Também vale lembrar que algumas funcionalidades ainda não foram reimplementadas.

As interfaces que continuam a ser suportadas de forma estável incluem os scripts Init, PreSession, PostSession, PostLogin e Xsession. Algumas opções de configuração de daemon no arquivo `<etc>/gdm/custom.conf` continuam a ser suportadas. Além disso, o `~/.dmrc` e os locais de imagem da tela de seleção de usuários ainda são suportados.

O GDM 2.20 e anteriores tinham suporte ao gerenciamento de vários monitores com placas gráficas separadas, como as usadas em terminais de servidores. Também tinha suporte ao login em uma janela por meio de um programa como Xnest ou Xephyr; suportava o gdmsetup, bem como temas de saudação baseados em XML. Ainda tinha a capacidade de executar o seletor XDMCP na tela de login. Esses recursos não foram adicionados durante a reescrita 2.22.

### Descrição Funcional

O GDM é responsável por gerenciar as telas do sistema. Isso inclui autenticar usuários, iniciar a sessão do usuário e encerrar a sessão do usuário. O GDM é configurável e as formas como ele pode ser configurado são descritas na seção "Configurando o GDM" deste documento. O GDM também é acessível para usuários com deficiências.

O GDM fornece a capacidade de gerenciar a telas do console principal e as telas iniciadas via VT. Ele é integrado a outros programas, como Fast User Switch Applet (FUSA) e gnome-screensaver para gerenciar vários monitores no console por meio da interface Xserver Virtual Terminal (VT). Ele também pode gerenciar telas XDMCP.

Independentemente do tipo de tela, o GDM fará o seguinte ao gerenciar a exibição: iniciará um processo Xserver, então executará o script `Init` como o usuário root e iniciará o programa de saudação no monitor.

O programa de boas-vindas é executado como o usuário/grupo "gdm" sem privilégios. Este usuário e grupo são descritos na seção "Segurança" deste documento. As principais funções do programa de boas-vindas são fornecer um mecanismo para selecionar uma conta para login e conduzir o diálogo entre o usuário e o sistema ao autenticar essa conta. O processo de autenticação é conduzido por Módulos de Autenticação Plugáveis (PAM). Os módulos PAM determinam quais prompts (se houver) são mostrados ao usuário para autenticação. No sistema médio, o programa de boas-vindas solicitará um nome de usuário e senha para autenticação. No entanto, alguns sistemas podem ser configurados para usar mecanismos suplementares, como impressão digital ou leitores SmartCard. O GDM pode ser configurado para suportar essas alternativas em paralelo com as extensões de login de boas-vindas e a opção `--enable-split-authentication` `./configure`, ou uma de cada vez via configuração do sistema PAM.

A extensão do cartão inteligente pode ser ativada ou desativada por meio da chave gsettings `org.gnome.display-manager.extensions.smartcard.active`.

Da mesma forma, a extensão de impressão digital pode ser ativada ou desativada por meio da chave gsettings `org.gnome.display-manager.extensions.fingerprint.active`.

O GDM e PAM podem ser configurados para não exigir nenhuma entrada, o que fará com que o GDM faça login automaticamente e simplesmente inicie uma sessão, o que pode ser útil para alguns ambientes, como sistemas de usuário único ou quiosques.

Além da autenticação, o programa de boas-vindas permite ao usuário selecionar qual sessão iniciar e qual idioma usar. As sessões são definidas por arquivos que terminam com o sufixo .desktop. Mais informações sobre esses arquivos podem ser encontradas na seção "Configuração de idioma e sessão do usuário GDM" deste documento. Por padrão, o GDM é configurado para exibir uma tela de seleção de usuários para que o usuário possa selecionar sua conta clicando em uma imagem em vez de digitar seu nome de usuário. O GDM controla a sessão e o idioma padrão do usuário no `~/.dmrc` do usuário e usará esses padrões se o usuário não escolher uma sessão ou idioma na GUI de login.

Depois de autenticar um usuário, o daemon executa o script `PostLogin` como root e, em seguida, executa o script `PreSession` como root. Depois de executar esses scripts, a sessão do usuário é iniciada. Quando o usuário sai da sessão, o script `PostSession` é executado como root. Esses scripts são fornecidos como ganchos para distribuições e usuários finais personalizarem como as sessões são gerenciadas. Por exemplo, usando esses ganchos, você pode configurar uma máquina que cria o diretório $HOME do usuário em tempo real e o apaga no logout. A diferença entre os scripts `PostLogin` e `PreSession` é que `PostLogin` é executado antes da chamada pam_open_session. Portanto, é o local certo para fazer qualquer coisa que deva ser executada antes da sessão do usuário ser inicializada. O script `PreSession` é chamado após a inicialização da sessão.

### Painel de Boas-vindas

O programa de saudação GDM exibe um painel encaixado na parte inferior da tela que fornece funcionalidade adicional. Quando um usuário é selecionado, o painel permite que o usuário selecione qual sessão, idioma e layout de teclado usar após o login. O seletor de layout de teclado também altera o layout de teclado usado ao digitar sua senha. O painel também contém uma área para serviços de login para deixar ícones de status. Alguns ícones de status de exemplo incluem um ícone de bateria para o uso atual da bateria e um ícone para habilitar recursos de acessibilidade. O programa de boas-vindas também fornece botões que permitem ao usuário desligar ou reiniciar o sistema. É possível configurar o GDM para não fornecer os botões de desligamento e reinicialização, se desejado. O GDM também pode ser configurado via PolicyKit (ou via RBAC no Oracle Solaris) para exigir que o usuário tenha autorização apropriada antes de aceitar a solicitação de desligamento ou reinicialização.

Observe que os recursos de layout de teclado estão disponíveis apenas em sistemas que suportam libxklavier.

### Acessibilidade

O GDM suporta "Login Acessível", permitindo que os usuários façam login em sua sessão de área de trabalho, mesmo que não possam usar facilmente a tela, o mouse ou o teclado da maneira usual. Estão disponíveis recursos de Tecnologia Acessível (TA), como teclado na tela, leitor de tela, ampliador de tela e acessibilidade de teclado Xserver AccessX. Também é possível habilitar texto ampliado ou ícones e controles de alto contraste, se necessário. Consulte a seção "Configuração de Acessibilidade" do documento para obter mais informações sobre como vários recursos de acessibilidade podem ser configurados.

Em alguns sistemas operacionais, é necessário certificar-se de que o usuário GDM seja membro do grupo "áudio" para programas TA que requerem saída de áudio (como conversão de texto em fala) para funcionar.

### A Tela de Seleção de Usuários do GDM

A Tela de Seleção de Usuários é a interface que permite aos usuários selecionar seu nome de usuário clicando em uma imagem. Esse recurso pode ser ativado ou desativado por meio da tecla GSettings org.gnome.login-screen disable-user-list e está ativado por padrão. Quando desativado, os usuários devem digitar seu nome de usuário completo à mão. Quando ativado, exibe todos os usuários locais que estão disponíveis para login no sistema (todas as contas de usuário definidas no arquivo /etc/passwd que possuem um shell válido e UID suficientemente alto) e usuários remotos que efetuaram login recentemente. Os GDMs 2.20 e anteriores tentavam exibir todos os usuários remotos, o que causava problemas de desempenho em grandes implantações corporativas.

A Tela de Seleção de Usuários está configurada para exibir os usuários que fazem login com mais frequência no topo da lista. Isso ajuda a garantir que os usuários que fazem login com frequência possam encontrar rapidamente sua imagem de login.

A Tela de Seleção de Usuários oferece suporte à "pesquisa de digitação antecipada", que move dinamicamente a seleção de conta conforme o usuário digita o nome de usuário correspondente na lista. Isso significa que um usuário com um nome de usuário longo só precisará digitar os primeiros caracteres antes que o item correto na lista seja selecionado.

Os ícones usados pelo GDM podem ser instalados globalmente pelo administrador do sistema ou podem estar localizados nos diretórios pessoais do usuário. Se instalados globalmente, eles devem estar no diretório `<share>/pixmaps/faces/` e o nome do arquivo deve ser o nome do usuário. Os arquivos de imagem devem ser de imagens padrão que o GTK+ possa ler, como PNG ou JPEG. Os ícones colocados no diretório global de logins devem ser legíveis para o usuário GDM.

Se não houver um ícone global para o usuário, o GDM procurará o arquivo de imagem no diretório $HOME do usuário. O GDM primeiro procurará a imagem do login do usuário em `~/.face`. Se não for encontrado, ele tentará `~/.face.icon`. Se ainda não for encontrado, ele usará o valor definido para "face/picture=" no arquivo `~/.gnome2/gdm`.

Se um usuário não tiver uma imagem de login definida, o GDM usará o ícone "stock_person" definido no tema GTK+ atual. Se nenhuma imagem for definida, ela retornará a uma imagem de login genérica.

Observe que carregar e dimensionar ícones de login localizados em diretórios pessoais de usuários remotos pode ser uma tarefa muito demorada. Como não é prático carregar imagens por NIS ou NFS, o GDM não tenta carregar imagens de login de diretórios home remotos.

Quando o navegador é ativado, nomes de usuário válidos no computador são expostos para todos verem. Se o XDMCP estiver ativado, os nomes de usuário serão expostos a usuários remotos. Isso, é claro, limita um pouco a segurança, pois um usuário mal-intencionado não precisa adivinhar nomes de usuário válidos. Em alguns ambientes muito restritivos, a tela de seleção de usuários pode não ser apropriado.

### XDMCP

O daemon GDM pode ser configurado para ouvir e gerenciar solicitações do Protocolo de Gerenciamento de Telas do X (X Display Manage Protocol (XDMCP)) de monitores remotos. Por padrão, o suporte a XDMCP está desativado, mas pode ser ativado se desejado. Se o GDM for construído com suporte a empacotadores TCP, o daemon concederá acesso apenas aos hosts especificados na seção de serviço GDM no arquivo de configuração dos empacotadores TCPs.

O GDM inclui várias medidas que o tornam mais resistente a ataques de negação de serviço no serviço XDMCP. Muitos dos parâmetros de protocolo, tempos limite de espera etc. podem ser ajustados. A configuração padrão deve funcionar razoavelmente na maioria dos sistemas.

Por padrão, o GDM escuta solicitações XDMCP na porta UDP normal usada para XDMCP, porta 177. Ele responderá às solicitações QUERY e BROADCAST_QUERY enviando um pacote WILLING ao originador.

O GDM também pode ser configurado para aceitar consultas INDIRETAS e apresentar um seletor de host para o monitor remoto. O GDM lembrará a escolha do usuário e encaminhará as solicitações subsequentes ao gerente escolhido. O GDM também oferece suporte a uma extensão do protocolo que o fará esquecer o redirecionamento assim que a conexão do usuário for bem-sucedida. Esta extensão só é suportada se ambos os daemons forem GDM. É transparente e será ignorado pelo XDM ou outros daemons que implementam o XDMCP.

Se o XDMCP parecer não estar funcionando, certifique-se de que todas as máquinas estejam especificadas em `/etc/hosts`.

Consulte a seção "Segurança" para obter informações sobre questões de segurança ao usar o XDMCP.

### Iniciando a sessão

GDM usa syslog para registrar erros e estados. Ele também pode registrar informações de depuração, que podem ser úteis para rastrear problemas se o GDM não estiver funcionando corretamente. A saída de depuração pode ser ativada definindo a chave debug/Enable como "true" no arquivo `<etc>/gdm/custom.conf`.

A saída dos vários Xservers é armazenada no diretório de log GDM, que normalmente é `<var>/log/gdm/`. Todas as mensagens do Xserver são salvas em um arquivo associado ao valor de tela, `<display>.log`.

A saída da sessão é canalizada através do daemon GDM para o arquivo `~/`$XDG_CACHE_HOME`/gdm/session.log`, que geralmente se expande para `~/.cache/gdm/ sessão.log`. O arquivo é substituído a cada login. Portanto, sair e entrar novamente no mesmo usuário via GDM fará com que todas as mensagens da sessão anterior sejam perdidas.

Observe que se o GDM não puder criar este arquivo por algum motivo, um arquivo substituto será criado chamado `~/`$XDG_CACHE_HOME`/gdm/session.log.XXXXXXXX` onde os `XXXXXXX` são caracteres aleatórios.

### Troca Rápida de Usuário

O GDM permite vários usuários logados ao mesmo tempo. Após o login de um usuário, outros podem fazer login por meio do seletor de usuário no painel do GNOME ou do botão "Trocar usuário" na caixa de diálogo da Tela de Bloqueio. A sessão ativa pode ser alternada usando o mesmo mecanismo. Observe que algumas distribuições podem não adicionar a troca de usuários à configuração padrão do painel. Ela pode ser adicionada usando o menu de contexto do painel.

Observe que esse recurso está disponível em sistemas que suportam Terminais Virtuais. Este recurso não funcionará se os Terminais Virtuais não estiverem disponíveis.

## Segurança

### O Usuário e Grupo GDM

Por motivos de segurança, um usuário dedicado e um ID de grupo são recomendados para uma operação adequada. Este usuário e grupo são normalmente "gdm" na maioria dos sistemas, mas podem ser configurados para qualquer usuário ou grupo. Todos os programas GDM GUI são executados como este usuário, de modo que os programas que interagem com o usuário sejam executados em uma caixa de proteção. Este usuário e grupo devem ter privilégios limitados.

O único privilégio especial que o usuário "gdm" requer é a capacidade de ler e gravar arquivos Xauth no diretório `<var>/run/gdm`. O diretório `<var>/run/gdm` deve ter a propriedade root:gdm e permissões 1777.

Você não deve, sob nenhuma circunstância, configurar o usuário/grupo GDM para um usuário que possa facilmente obter acesso, como o usuário `nobody`. Qualquer usuário que obtenha acesso a uma chave Xauth pode bisbilhotar e controlar programas GUI em execução na sessão associada ou executar um ataque de negação de serviço nela. É importante garantir que o sistema esteja configurado corretamente para que apenas o usuário "gdm" tenha acesso a esses arquivos e que não seja fácil fazer login nesta conta. Por exemplo, a conta deve ser configurada para não ter uma senha ou permitir que usuários não root façam login na conta.

A configuração da saudação GDM é armazenada no GConf. Para permitir que o usuário GDM possa escrever a configuração, é necessário que ele tenha um diretório $HOME gravável. Os usuários podem definir a configuração padrão do GConf conforme desejado para evitar a necessidade de fornecer ao usuário "gdm" um diretório $HOME gravável. No entanto, alguns recursos do GDM podem ser desativados se não for possível gravar informações de estado na configuração do GConf.

### PAM

GDM usa PAM para autenticação de login. PAM significa Módulo de Autenticação Plugável (Pluggable Authentication Module) e é usado pela maioria dos programas que solicitam autenticação em seu computador. Ele permite que o administrador configure o comportamento de autenticação específico para diferentes programas de login (como ssh, GUI de login, protetor de tela, etc.)

O PAM é complicado e altamente configurável, e esta documentação não pretende explicar isso em detalhes. Em vez disso, pretende fornecer uma visão geral de como a configuração do PAM se relaciona com o GDM, como um é comumente configurado com o outro e apresentar alguns problemas conhecidos. Espera-se que uma pessoa que precise fazer a configuração do PAM precise ler mais a documentação dele, para entender como configurá-lo e entender os termos usados nesta seção.

A configuração do PAM tem interfaces diferentes, mas semelhantes, em diferentes sistemas operacionais. Portanto, verifique a página man do pam.d ou do pam.conf para detalhes. Certifique-se de ler a documentação do PAM e de estar familiarizado com as implicações de segurança de quaisquer alterações que pretenda fazer em sua configuração.

Observe que, por padrão, o GDM usa o nome de serviço PAM "gdm" para login normal e o nome de serviço PAM "gdm-autologin" para login automático. Esses serviços podem não estar definidos em seu arquivo pam.d ou pam.conf configurado. Se não houver entrada, o GDM usará o comportamento PAM padrão. Na maioria dos sistemas, isso deve funcionar bem. No entanto, o recurso de login automático pode não funcionar se o serviço gdm-autologin não estiver definido.

O script `PostLogin` é executado antes de pam_open_session ser chamado e o script `PreSession` é chamado depois. Isso permite que o administrador do sistema adicione qualquer script ao processo de login antes ou depois que o PAM inicializa a sessão.

Se você deseja fazer o GDM funcionar com outros tipos de mecanismos de autenticação (como impressão digital ou leitor de SmartCard), você deve implementar isso usando um módulo de serviço PAM para o tipo de autenticação desejado, em vez de tentar modificar o código GDM diretamente. Consulte a documentação do PAM em seu sistema.

O PAM tem algumas limitações em relação à capacidade de trabalhar com vários tipos de autenticação ao mesmo tempo, como suportar a capacidade de aceitar SmartCard e a capacidade de digitar o nome de usuário e a senha no programa de login. Existem técnicas que são usadas para fazer isso funcionar, e é melhor pesquisar como esse problema é comumente resolvido ao definir tal configuração.

Se o login automático não funcionar em um sistema, verifique se a pilha PAM "gdm-autologin" está definida na configuração do PAM. Para que isso funcione, é necessário utilizar um módulo PAM que simplesmente não faça autenticação, ou que simplesmente retorne PAM_SUCCESS de todas as suas interfaces públicas. Supondo que seu sistema tenha um módulo PAM pam_allow.so que faz isso, uma configuração PAM para habilitar "gdm-autologin" ficaria assim:

           gdm-autologin auth  required    pam_unix_cred.so.1
           gdm-autologin auth  sufficient  pam_allow.so.1
           gdm-autologin account  sufficient  pam_allow.so.1
           gdm-autologin session  sufficient  pam_allow.so.1
           gdm-autologin password  sufficient  pam_allow.so.1

A configuração acima fará com que nenhuma entrada lastlog seja gerada. Se uma entrada lastlog for desejada, use o seguinte para a sessão:

           gdm-autologin session required pam_unix_session.so.1

Se o computador for usado por várias pessoas, o que torna o login automático inadequado, você pode querer permitir que alguns usuários façam login sem inserir sua senha. Esse recurso pode ser ativado como uma opção por usuário na ferramenta users-admin das ferramentas do sistema gnome; isso é obtido verificando se o usuário é membro de um grupo Unix chamado "nopasswdlogin" antes de solicitar uma senha. Para que isso funcione, o arquivo de configuração do PAM para o serviço "gdm" deve incluir uma linha como:

          gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

### utmp e wtmp

O GDM gera entradas de banco de dados de contabilidade de usuário utmp e wtmp no login e logout da sessão. O banco de dados utmp contém acesso do usuário e informações de contabilidade que são acessadas por comandos como `finger`, `last`, `login` e `who`. O banco de dados wtmp contém o histórico de acesso do usuário e informações de contabilidade para o banco de dados utmp. Consulte as páginas do manual utmp e wtmp em seu sistema para mais informações.

### Esquema de Autenticação Xserver

Os arquivos de autorização do Xserver são armazenados em um subdiretório recém-criado de `<var>/run/gdm` na inicialização. Esses arquivos são usados para armazenar e compartilhar uma "senha" entre os clientes X e o Xserver. Essa "senha" é única para cada sessão conectada. Portanto, os usuários de uma sessão não podem bisbilhotar os usuários de outra.

O GDM suporta apenas o esquema de autenticação MIT-MAGIC-COOKIE-1 Xserver. Normalmente, pouco se ganha com os outros esquemas e nenhum esforço foi feito para implementá-los até agora. Seja especialmente cuidadoso ao usar o XDMCP porque o cookie de autenticação Xserver passa pela rede como texto não criptografado. Se a espionagem for possível, um invasor pode simplesmente espionar sua senha de autenticação enquanto você faz login, independentemente do esquema de autenticação que está sendo usado. Se a espionagem for possível e indesejável, você deve usar o ssh para tunelar uma conexão X em vez de usar o XDMCP. Você pode pensar no XDMCP como uma espécie de telnet gráfico, tendo os mesmos problemas de segurança. Na maioria dos casos, ssh -Y deve ser preferido em relação aos recursos XDMCP do GDM.

### Segurança do XDMCP

Mesmo que sua tela esteja protegida por cookies, XEvents e os pressionamentos de tecla digitados ao inserir senhas ainda serão transmitidos em texto não criptografado. É trivial capturá-los.

O XDMCP é útil principalmente para executar thin clients, como em laboratórios de terminais. Esses thin clients só precisarão da rede para acessar o servidor e, portanto, parece ser a melhor política de segurança ter esses dispositivos em uma rede separada que não pode ser acessada pelo mundo externo e só pode se conectar ao servidor. O único ponto de onde você precisa acessar de fora é o servidor. Esse tipo de configuração nunca deve usar um hub não gerenciado ou outra rede detectável.

### Controle de acesso do XDMCP

O controle de acesso XDMCP é feito usando empacotadores TCP. É possível compilar GDM sem suporte a tais empacotadores. Sendo assim, esse recurso pode não ser suportado em alguns sistemas operacionais.

Você deve usar o nome de daemon `gdm` nos arquivos `<etc>/hosts.allow` e `<etc>/hosts.deny`. Por exemplo, para impedir que computadores de `.perigoso.dominio` façam login, adicione

    gdm: .perigoso.dominio

para `<etc>/hosts.deny`. Você também pode precisar adicionar

    gdm: .dominio.seu

para seu `<etc>/hosts.allow` se você normalmente não permite todos os serviços de todos os hosts. Consulte a página do manual hosts.allow(5) para obter detalhes.

### Segurança do Firewall

Embora o GDM tente enganar os invasores em potencial que tentam tirar vantagem do XDMCP, ainda é recomendável que você bloqueie a porta XDMCP (normalmente a porta UDP 177) em seu firewall, a menos que seja realmente necessário. O GDM protege contra ataques de negação de serviço, mas o protocolo X ainda é inerentemente inseguro e só deve ser usado em ambientes controlados. Além disso, cada conexão remota consome muitos recursos. Por isso é muito mais fácil fazer um ataque de negação de serviço via XDMCP do que atacar um servidor web.

Também é aconselhável bloquear todas as portas do Xserver. Estas são as portas TCP 6000+ (uma para cada número de telas) em seu firewall. Observe que o GDM usará números de telas 20 e superiores para servidores sob demanda flexíveis.

O X não é um protocolo muito seguro quando usado na Internet, e o XDMCP é ainda menos.

### PolicyKit

O GDM pode ser configurado para usar o PolicyKit para permitir que o administrador do sistema controle se a tela de login deve fornecer os botões de desligamento e reinicialização na tela inicial.

Esses botões são controlados pelas ações `org.freedesktop.consolekit.system.stop-multiple-users` e `org.freedesktop.consolekit.system.restart-multiple-users`, respectivamente. A política para essas ações pode ser configurada usando a ferramenta de autorização polkit-gnome ou o programa de linha de comando polkit-auth.

### Controle de Acesso Baseado em Função (Role Based Access Control (RBAC))

GDM pode ser configurado para usar RBAC em vez de PolicyKit. Nesse caso, a configuração do RBAC é usada para controlar se a tela de login deve fornecer os botões de desligamento e reinicialização na tela de saudação.

Por exemplo, no Oracle Solaris, a autorização "solaris.system.shutdown" é usada para controlar isso. Basta modificar o arquivo `/etc/user_attr` para que o usuário "gdm" tenha esta autorização.

## Suporte para ConsoleKit

O GDM inclui suporte para publicar informações de login do usuário com a estrutura de contabilidade de sessão de login e usuário conhecida como ConsoleKit. O ConsoleKit é capaz de rastrear todos os usuários conectados no momento. A esse respeito, ele pode ser usado como um substituto para os arquivos utmp ou utmpx que estão disponíveis na maioria dos sistemas operacionais semelhantes ao Unix.

Quando o GDM está prestes a criar um novo processo de login para um usuário, ele chamará um método privilegiado do ConsoleKit para abrir uma nova sessão para esse usuário. Neste momento, o GDM também fornece ao ConsoleKit informações sobre esta sessão do usuário, como: o ID do usuário, o nome de exibição X11 que será associado à sessão, o nome do host do qual a sessão se origina (útil no caso de uma sessão XDMCP), se esta sessão está anexada ou não etc. Como a entidade que inicia o processo do usuário, o GDM está em uma posição única para saber sobre a sessão do usuário e ser confiável para fornecer essas informações. O uso deste método privilegiado é restrito pelo uso da política de segurança do barramento de mensagens do sistema D-Bus.

Caso um usuário com uma sessão existente tenha se autenticado no GDM e solicite retomar essa sessão existente, o GDM chama um método privilegiado do ConsoleKit para desbloquear essa sessão. Os detalhes exatos do que acontece quando a sessão recebe esse sinal de desbloqueio são indefinidos e específicos da sessão. No entanto, a maioria das sessões desbloqueará um protetor de tela em resposta.

Quando o usuário optar por fazer logoff, ou se o GDM ou a sessão for encerrada inesperadamente, o registro da sessão do usuário será cancelado no ConsoleKit.

## Configuração

O GDM possui várias interfaces de configuração. Isso inclui pontos de integração de script, configuração de daemon, configuração de boas-vindas, configurações gerais de sessão, integração com a configuração gnome-settings-daemon e configuração de sessão. Esses tipos de integração são descritos em detalhes a seguir.

### Pontos de Integração de Scripts

Os pontos de integração do script GDM podem ser encontrados no diretório `<etc>/gdm/`:

    Xsession
    Init/
    PostLogin/
    PreSession/
    PostSession/

Os scripts `Init`, `PostLogin`, `PreSession` e `PostSession` funcionam conforme descrito abaixo.

Para cada tipo de script, o padrão que será executado chama-se "Default" e fica armazenado em um diretório associado ao tipo de script. Portanto, o script `Init` padrão é `<etc>/gdm/Init/Default`. Um script por exibição pode ser fornecido e, se existir, será executado em vez do script padrão. Esses scripts são armazenados no mesmo diretório que o script padrão e têm o mesmo nome que o valor Xserver DISPLAY para essa tela. Por exemplo, se o script `<Init>/:0` existir, ele será executado para DISPLAY ":0".

Todos esses scripts são executados com privilégio de root e retornam 0 se executados com sucesso e um código de retorno diferente de zero se houver alguma falha que deva interromper a sessão de login. Observe também que o GDM ficará bloqueado até que os scripts terminem. Por isso, se algum desses scripts travar, isso fará com que o processo de login também trave.

Quando o Xserver para a GUI de login tiver sido iniciado com sucesso, mas antes que a GUI de login seja realmente exibida, o GDM executará o script `Init`. Este script é útil para iniciar programas que devem ser executados enquanto a tela de login está sendo exibida ou para fazer qualquer inicialização especial, se necessário.

Após o usuário ter sido autenticado com sucesso, o GDM executará o script `PostLogin`. Isso é feito antes de qualquer configuração de sessão, inclusive antes da chamada pam_open_session. Esse script é útil para fazer qualquer inicialização de sessão que precise acontecer antes do início da sessão. Por exemplo, você pode configurar o diretório $HOME do usuário, se necessário.

Após a inicialização da sessão do usuário, o GDM executará o script `PreSession`. Esse script é útil para fazer qualquer inicialização de sessão que precise ocorrer após a inicialização da sessão. Pode ser usado para gerenciamento de sessão ou contabilidade, por exemplo.

Quando um usuário encerra sua sessão, o GDM executa o script `PostSession`. Observe que o Xserver terá sido interrompido no momento em que esse script for executado; Sendo assim, não deve ser acessado.

Observe que o script `PostSession` será executado mesmo quando o monitor não responder devido a um erro de E/S ou algo semelhante. Portanto, não há garantia de que os aplicativos X funcionarão durante a execução do script.

Todos os scripts acima definirão a variável de ambiente `$RUNNING_UNDER_GDM` para `yes`. Se os scripts também forem compartilhados com outros gerenciadores de tela, isso permitirá que você identifique quando o GDM está chamando esses scripts, para que você possa executar um código específico quando o GDM for usado.

### Configuração de Inicialização Automática

O diretório `<share>/gdm/autostart/LoginWindow` contém arquivos no formato especificado pela "Especificação de Inicialização Automática de Aplicativos de Área de Trabalho" da FreeDesktop.org. Os recursos padrão na especificação podem ser usados para especificar programas que devem ser reiniciados automaticamente ou iniciados apenas se um valor de configuração GConf for definido etc.

Qualquer arquivo `.desktop` neste diretório fará com que o programa associado inicie automaticamente com a saudação da GUI de login. Por padrão, o GDM é enviado com arquivos que iniciarão automaticamente a própria GUI de login gdm-simple-greeter, o aplicativo gnome-power-manager, o gnome-settings-daemon e o gerenciador de janelas metacity. Esses programas são necessários para que o programa de boas-vindas funcione. Além disso, os arquivos da área de trabalho são fornecidos para iniciar vários programas de TA se os valores de configuração especificados na seção Configuração de Acessibilidade abaixo forem definidos.

### Script Xsession

Há também um script `Xsession` localizado em `<etc>/gdm/Xsession` que é chamado entre os scripts `PreSession` e `PostSession`. Este script não oferece suporte por tela como os outros scripts. Este script é usado para realmente iniciar a sessão do usuário. Esse script é executado como o usuário e executará qualquer sessão especificada pelo arquivo de sessão de área de trabalho que o usuário selecionou para iniciar.

### Configuração do Daemon

O daemon GDM é configurado usando o arquivo `<etc>/gdm/custom.conf`. Os valores padrão são armazenados no GConf no arquivo `gdm.schemas`. Recomenda-se que os usuários finais modifiquem o arquivo `<etc>/gdm/custom.conf` porque o arquivo de esquemas pode ser substituído quando o usuário atualizar seu sistema para ter uma versão mais recente do GDM.

Observe que as versões mais antigas do GDM ofereceram suporte a opções de configuração adicionais que não são mais suportadas nas versões mais recentes do GDM.

O arquivo `<etc>/gdm/custom.conf` está no formato `keyfile`. Palavras-chave entre colchetes definem as seções do grupo. Strings antes de = são chaves e os dados após o sinal de = representam seu valor. Linhas vazias ou linhas iniciadas com # são ignoradas.

O arquivo `<etc>/gdm/custom.conf` suporta as seções de grupos "[daemon]", "[security]" e "[xdmcp]". Dentro de cada grupo, existem pares chave/valor específicos que podem ser especificados para modificar o comportamento do GDM. Por exemplo, para ativar o login cronometrado e especificar que o usuário de login cronometrado seja um usuário chamado "voce", modifique o arquivo para que contenha as seguintes linhas:

    [daemon]
    TimedLoginEnable=true
    TimedLogin=voce

Segue uma lista completa de chaves de configuração suportadas:

#### [chooser]

Multicast

-     Multicast=false

  Se true e o IPv6 estiver ativado, o seletor enviará uma consulta multicast para a rede local e coletará respostas dos hosts que ingressaram no grupo multicast.

MulticastAddr

-     MulticastAddr=ff02::1

  Este é o endereço multicast local do link.

#### [daemon]

TimedLoginEnable

-     TimedLoginEnable=false

  Se o usuário fornecido em `TimedLogin` deve ser conectado após um número de segundos (definido com `TimedLoginDelay`) de inatividade na tela de login. Isso é útil para terminais de acesso público ou talvez até mesmo para uso doméstico. Se o usuário usar o teclado ou navegar pelos menus, o tempo limite será redefinido para `TimedLoginDelay` ou 30 segundos — o que for maior. Se o usuário não inserir um nome de usuário, mas apenas pressionar a tecla ENTER enquanto o programa de login estiver solicitando o nome de usuário, o GDM assumirá que o ele deseja fazer login imediatamente como o usuário cronometrado. Observe que nenhuma senha será solicitada para este usuário. Então você deve ter cuidado. Vale lembrar que se estiver usando o PAM poderá configurá-lo para exigir a entrada da senha antes de permitir o login. Consulte a seção "Segurança->PAM" do manual para obter mais informações ou ajuda se esse recurso não funcionar.

TimedLogin

-     TimedLogin=

  Este é o usuário que deve estar conectado após um determinado número de segundos de inatividade.

  Se o valor terminar com |, o GDM executará o programa especificado e usará qualquer valor retornado no padrão do programa como usuário. O programa é executado com a variável de ambiente DISPLAY configurada para que seja possível especificar o usuário por monitor. Por exemplo, se o valor for "/usr/bin/getloginuser|", então o programa "/usr/bin/getloginuser" será executado para obter o valor do usuário.

TimedLoginDelay

-     TimedLoginDelay=30

  Atraso em segundos antes que o usuário `TimedLogin` seja conectado.

AutomaticLoginEnable

-     AutomaticLoginEnable=false

  Se for true, o usuário fornecido em `AutomaticLogin` deve ser conectado imediatamente. Esse recurso é como um login cronometrado com um atraso de 0 segundos.

AutomaticLogin

-     AutomaticLogin=

  Este é o usuário que deve estar conectado imediatamente se `AutomaticLoginEnable` for true.

  Se o valor terminar com |, o GDM executará o programa especificado e usará qualquer valor retornado no padrão do programa como usuário. O programa é executado com a variável de ambiente DISPLAY configurada para que seja possível especificar o usuário por monitor. Por exemplo, se o valor for "/usr/bin/getloginuser|", então o programa "/usr/bin/getloginuser" será executado para obter o valor do usuário.

Usuário

-     User=gdm

  O nome de usuário sob o qual a saudação e outros programas GUI são executados. Consulte a chave de configuração `Usuário` e a seção "Segurança->GDM de Usuários e Grupos" deste documento para obter mais informações.

Grupo

-     Group=gdm

  O nome do grupo sob o qual a saudação e outros programas GUI são executados. Consulte a chave de configuração `Grupo` e a seção "Segurança->GDM de Usuário e Grupo" deste documento para obter mais informações.

#### Opções de Depuração

#### [debug]

Enable

-     Enable=false

  Para ativar a depuração, defina a chave debug/Enable como "true" no arquivo `<etc>/gdm/custom.conf` e reinicie o GDM. Em seguida, a saída de depuração será enviada para o arquivo de log do sistema (`<var>/log/messages` ou `<var>/adm/messages` dependendo do seu sistema operacional).

#### Opções de Segurança

#### [security]

DisallowTCP

-     DisallowTCP=true

  Se true, sempre acrescenta `-nolisten tcp` à linha de comando ao iniciar Xservers anexados, impedindo assim a conexão TCP. Esta é uma configuração mais segura se você não estiver usando conexões remotas.

#### Suporte XDCMP

#### [xdmcp]

DisplaysPerHost

-     DisplaysPerHost=1

  Para evitar que invasores preencham a fila de pendências, o GDM permitirá apenas uma conexão para cada computador remoto. Se você deseja fornecer serviços de exibição para computadores com mais de uma tela, aumente esse valor.

  Observe que o número permitido de DISPLAYS anexados não é limitado. Somente conexões remotas via XDMCP são limitadas por esta opção de configuração.

Enable

-     Enable=false

  Definir como true habilita o suporte a XDMCP, permitindo que monitores remotos/terminais X sejam gerenciados pelo GDM.

  `gdm` escuta as solicitações na porta UDP 177. Consulte a opção Porta para obter mais informações.

  Se o GDM for compilado para suportá-lo, o acesso a partir de monitores remotos pode ser controlado usando a biblioteca de Empacotadores TCP. O nome do serviço é `gdm`

  Você deve adicionar

      gdm:.my.domain

  ao seu `<etc>/hosts.allow`, dependendo da configuração dos Empacotadores TCP. Consulte a página do manual hosts.allow para obter detalhes.

  Observe que o XDMCP não é um protocolo particularmente seguro e que é uma boa ideia bloquear a porta UDP 177 em seu firewall, a menos que você realmente precise.

HonorIndirect

-     HonorIndirect=true

  Ativa a escolha INDIRETA de XDMCP (ou seja, execução remota de `gdmchooser`) para terminais X que não fornecem seu próprio navegador de exibição.

MaxPending

-     MaxPending=4

  Para evitar ataques de negação de serviço, o GDM tem uma fila de tamanho fixo de conexões pendentes. Somente exibições MaxPending podem iniciar ao mesmo tempo.

  Observe que este parâmetro não limita o número de exibições remotas que podem ser gerenciadas. Limita apenas o número de monitores iniciando uma conexão simultaneamente.

MaxSessions

-     MaxSessions=16

  Determina o número máximo de conexões de tela remota que serão gerenciadas simultaneamente, ou seja, o número total de monitores remotos que podem usar seu host.

MaxWait

-     MaxWait=30

  Quando o GDM está pronto para gerenciar uma tela, um pacote ACCEPT é enviado a ele contendo um id de sessão único que será usado em conversas XDMCP futuras.

  O GDM então colocará o ID da sessão na fila pendente aguardando a exibição para responder com uma solicitação MANAGE.

  Se nenhuma resposta for recebida dentro dos segundos de MaxWait, o GDM irá declarar a tela inativa e irá apagá-la da fila pendente, liberando o slot para outras telas.

MaxWaitIndirect

-     MaxWaitIndirect=30

  O parâmetro MaxWaitIndirect determina o número máximo de segundos entre o momento em que um usuário escolhe um host e a consulta indireta subsequente em que o usuário está conectado ao host. Quando o tempo limite é excedido, as informações sobre o host escolhido são esquecidas e o slot indireto é liberado para outras telas. A informação pode ser esquecida antes se houver mais hosts tentando enviar consultas indiretas do que `MaxPendingIndirect`.

Porta

-     Port=177

  O número da porta UDP `gdm` deve atender às solicitações XDMCP. Não mude isso a menos que você saiba o que está fazendo.

Willing

-     Willing=<etc>/gdm/Xwilling

  Quando a máquina envia um pacote WILLING de volta após uma QUERY, ela envia uma string que fornece o estado atual desse servidor. A mensagem padrão é o ID do sistema, mas é possível criar um script que exiba uma mensagem personalizada. Se este script não existir ou esta chave estiver vazia, a mensagem padrão será enviada. Se este script for bem-sucedido e produzir alguma saída, a primeira linha de sua saída será enviada (e apenas a primeira linha). Ele é executado no máximo uma vez a cada 3 segundos para evitar possível negação de serviço inundando a máquina com pacotes QUERY.

### Configuração de Saudação Simples

A saudação padrão do GDM é chamada de saudação simples e é configurada via GConf. Os valores padrão são armazenados no GConf no arquivo `gdm-simple-greeter.schemas`. Esses padrões podem ser substituídos se o usuário "gdm" tiver um diretório $HOME gravável para armazenar as configurações do GConf. Esses valores podem ser editados usando os programas `gconftool-2` ou `gconf-editor`. As seguintes opções de configuração são suportadas:

### Chaves de Configuração da Saudação

/apps/gdm/simple-greeter/banner_message_enable

-     false (booleano)

  Controla se o texto da mensagem do banner é exibido.

/apps/gdm/simple-greeter/banner_message_text

-     NULL (string)

  Especifica a mensagem do banner de texto a ser exibida na janela de boas-vindas.

/apps/gdm/simple-greeter/disable_restart_buttons

-     false (booleano)

  Controla se os botões de reinicialização devem ser exibidos na janela de login.

/apps/gdm/simple-greeter/disable_user_list

-     false (booleano)

  Se verdadeiro, a tela de seleção de usuários não é mostrada na janela de login.

/apps/gdm/simple-greeter/logo_icon_name

-     computador (string)

  Defina como o nome do ícone do tema a ser usado para o logotipo de saudação.

/apps/gdm/simple-greeter/recent-languages

-     [] (lista de string)

  Define uma lista de idiomas a serem mostrados por padrão na janela de login. O valor padrão é "[]". Com a configuração padrão, apenas o idioma padrão do sistema é mostrado e a opção "Outro ...", que abre uma caixa de diálogo mostrando uma lista completa de idiomas disponíveis que o usuário pode selecionar.

  Os usuários não devem alterar essa configuração manualmente. Em vez disso, o GDM controla todos os idiomas selecionados nesta chave de configuração e os mostrará na caixa de combinação de idiomas junto com a opção "Outro...". Dessa forma, os idiomas comumente selecionados são mais fáceis de selecionar.

/apps/gdm/simple-greeter/recent-layouts

-     [] (lista de string)

  Define uma lista de layouts de teclado a serem exibidos por padrão no painel de login. O valor padrão é "[]". Com a configuração padrão, apenas o layout de teclado padrão do sistema é mostrado e a opção "Outro ...", que abre uma caixa de diálogo mostrando uma lista completa de layouts de teclado disponíveis que o usuário pode selecionar.

  Os usuários não devem alterar essa configuração manualmente. Em vez disso, o GDM acompanha todos os layouts de teclado selecionados nesta chave de configuração e os mostra na caixa de combinação de layout de teclado junto com a opção "Outro...". Dessa forma, os layouts de teclado comumente selecionados são mais fáceis de selecionar.

/apps/gdm/simple-greeter/wm_use_compiz

-     false (booleano)

  Controla se o compiz é usado como gerenciador de janelas em vez de metacity.

### Configuração de Acessibilidade

Esta seção descreve as opções de configuração de acessibilidade disponíveis no GDM.

#### Diálogo de Acessibilidade GDM e Teclas GConf

O painel de boas-vindas do GDM na tela de login exibe um ícone de acessibilidade. Clicar nesse ícone abre a caixa de diálogo de acessibilidade do GDM. No Diálogo de Acessibilidade do GDM, há uma lista de caixas de seleção, para que o usuário possa habilitar ou desabilitar as ferramentas assistivas associadas.

As caixas de seleção que correspondem às ferramentas de assistência, como o teclado virtual, ampliador de tela e ao leitor de tela, atuam nas três chaves GConf descritas na próxima seção deste documento. Ao habilitar ou desabilitar essas caixas de seleção, a chave GConf associada é definida como "true" ou "false". Quando ela é definida como verdadeira, as ferramentas assistivas vinculadas a essa chave são iniciadas. Quando é definida como "false", qualquer ferramenta assistencial em execução vinculada a essa chave é encerrada. Essas chaves GConf não são redefinidas automaticamente para um estado padrão após o login do usuário. Consequentemente, as ferramentas assistivas que estavam em execução durante a última sessão de login do GDM serão iniciadas automaticamente na próxima sessão de login.

As outras caixas de seleção na caixa de diálogo de acessibilidade do GDM não possuem chaves GConf correspondentes porque nenhum programa adicional é iniciado para fornecer os recursos de acessibilidade que eles oferecem. Essas outras opções correspondem aos recursos de acessibilidade fornecidos pelo Xserver, que está sempre em execução durante a sessão GDM.

#### Chaves GConf de Acessibilidade

O GDM oferece as seguintes chaves GConf para controlar seus recursos de acessibilidade:

#### Chaves de Configuração do GDM

/desktop/gnome/interface/accessibility

-     false (booleano)

  Controla se a infraestrutura de Acessibilidade será iniciada com a GUI do GDM. Isso é necessário para que muitos programas de tecnologia de acessibilidade funcionem.

/desktop/gnome/applications/at/screen_magnifier_enabled

-     false (booleano)

  Se definido, as ferramentas assistivas vinculadas a esta chave GConf serão iniciadas com o programa GDM GUI. Por padrão, este é um aplicativo de lupa.

/desktop/gnome/applications/at/screen_keyboard_enabled

-     false (booleano)

  Se definido, as ferramentas assistivas vinculadas a esta chave GConf serão iniciadas com o programa GDM GUI. Por padrão, este é um aplicativo de teclado virtual.

/desktop/gnome/applications/at/screen_reader_enabled

-     false (booleano)

  Se definido, as ferramentas assistivas vinculadas a esta chave GConf serão iniciadas com o programa GDM GUI. Por padrão, este é um aplicativo leitor de tela.

#### Vinculando Chaves GConf à Ferramentas de Acessibilidade

Para as chaves GConf screen_magnifier_enabled, screen_keyboard_enabled e screen_reader_enabled, a ferramenta de assistência que é iniciada depende dos arquivos de área de trabalho, localizados no diretório de inicialização automática do GDM, conforme descrito na seção "Configuração de Inicialização Automática" deste manual. Qualquer arquivo do computador no diretório de inicialização automática do GDM pode ser vinculado a essa chave GConf especificando essa chave no valor AutostartCondition no arquivo. Portanto, a linha AutostartCondition exata no arquivo do aplicativo pode ser uma das seguintes:

    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_magnifier_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_reader_enabled

Quando uma chave de acessibilidade for verdadeira, qualquer programa vinculado a essa chave em um arquivo de área de trabalho de inicialização automática GDM será iniciado (a menos que a chave Oculta esteja definida como verdadeira nesse arquivo da área de trabalho). Uma única chave GConf pode até iniciar várias ferramentas de assistência se houver vários arquivos da área de trabalho com esta AutostartCondition no diretório de inicialização automática do GDM.

#### Exemplo de Modificação da Configuração da Ferramenta de Acessibilidade

Por exemplo, se o GNOME for distribuído com GOK como o teclado virtual padrão, ele poderá ser substituído por um programa diferente, se desejado. Para substituir o GOK pelo aplicativo de teclado virtual "onboard" e também ativar a ferramenta de assistência "mousetweaks" para suporte, a seguinte configuração é necessária.

Crie um arquivo desktop para onboard e um segundo para mousetweaks; por exemplo, onboard.desktop e mousetweaks.desktop. Esses arquivos devem ser colocados no diretório de inicialização automática do GDM e estar no formato explicado na seção "Configuração de Inicialização Automática" deste documento.

A seguir está um exemplo de arquivo `onboard.desktop`:

    [Desktop Entry]
    Encoding=UTF-8
    Name=Onboard Onscreen Keyboard
    Comment=Use an on-screen keyboard
    TryExec=onboard
    Exec=onboard --size 500x180 -x 20 -y 10
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

A seguir está um exemplo de arquivo `mousetweaks.desktop`:

    [Desktop Entry]
    Encoding=UTF-8
    Name=Software Mouse-Clicks
    Comment=Perform clicks by dwelling with the pointer
    TryExec=mousetweaks
    Exec=mousetweaks --enable-dwell -m window -c -x 20 -y 240
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

Observe a linha com o AutostartCondition que vincula os dois arquivos da área de trabalho à tecla GConf do teclado na tela.

Para desativar a inicialização do GOK, o arquivo da área de trabalho do teclado virtual do GOK deve ser removido ou desativado. Caso contrário, onboard e GOK seriam iniciados simultaneamente. Isso pode ser feito removendo o arquivo gok.desktop do diretório de inicialização automática do GDM ou adicionando a configuração de chave "Hidden=true" ao arquivo gok.desktop.

Depois de fazer essas alterações, o GOK não será mais iniciado quando o usuário ativar o teclado virtual na sessão GDM; mas o onboard e o mousetweaks serão lançados.

### Configurações Gerais da Sessão

A Saudação do GDM usa parte da mesma estrutura que sua sessão de desktop usará. E assim, é influenciado por várias das mesmas configurações do GConf. Para cada uma dessas configurações, a Saudação usará o valor padrão, a menos que seja especificamente substituído por a) política obrigatória instalada do GDM b) política obrigatória do sistema. O GDM instala sua própria política obrigatória para bloquear algumas configurações de segurança.

### Daemon das Configurações do GNOME

O GDM habilita os seguintes plug-ins gnome-settings-daemon: a11y-keyboard, background, sound, xsettings.

Eles são responsáveis por coisas como imagem de fundo, configurações de fonte e tema, eventos de som etc.

Os plug-ins também podem ser desativados usando o GConf. Por exemplo, se você deseja desativar o plug-in de som, desmarque a seguinte chave: `/apps/gdm/simple-greeter/settings-manager-plugins/sound/active`.

### Configuração da Sessão GDM

As sessões GDM são configuradas usando a especificação Entrada de Desktop FreeDesktop.org, que pode ser consultada no seguinte URL: https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec.

Por padrão, o GDM instalará os arquivos da área de trabalho no diretório `<share>/xsessions`. O GDM pesquisará os seguintes diretórios nesta ordem para localizar os arquivos da área de trabalho: `<etc>/X11/sessions/`, `<dmconfdir>/Sessions`, `<share>/gdm/BuiltInSessions` e `< share>/xsessions`. Por padrão, o `<dmconfdir>` é definido como `<etc>/dm/`, a menos que o GDM esteja configurado para usar um diretório diferente por meio da opção "--with-dmconfdir" .

Uma sessão pode ser desativada editando o arquivo da área de trabalho e adicionando uma linha como a seguir: `Hidden=true`.

Os arquivos da área de trabalho GDM suportam uma extensão específica, uma chave chamada "X-GDM-BypassXsession". Se a chave não for especificada em um arquivo da área de trabalho, o valor padrão será "false". Se esta chave for especificada como "true" em um arquivo da área de trabalho, o GDM iniciará o programa especificado pela chave "Exec" do arquivo da área de trabalho diretamente ao iniciar a sessão do usuário. Ele não executará o programa por meio do script `<etc>/gdm/Xsession`, que é o comportamento normal. Como ignorar o script `<etc>/gdm/Xsession` evita configurar a sessão do usuário com as configurações normais do sistema e do usuário, as sessões iniciadas dessa maneira podem ser úteis para depurar problemas no sistema ou nos scripts do usuário que pode estar impedindo um usuário de iniciar uma sessão.

### Configurações de Idioma e Sessão do Usuário do GDM

A sessão padrão do usuário e as opções de idioma são armazenadas no arquivo `~/.dmrc`. Quando um usuário efetua login pela primeira vez, esse arquivo é criado com as escolhas iniciais do usuário. O usuário pode alterar esses valores padrão simplesmente alterando para um valor diferente ao fazer login. O GDM lembrará dessa alteração para logins subsequentes.

O arquivo `~/.dmrc` está no formato `INI` padrão. Ele tem uma seção chamada `[Desktop]` que possui duas chaves: `Session` e `Language`.

A chave `Session` especifica o nome base do arquivo `.desktop` da sessão que o usuário deseja usar normalmente sem a extensão `.desktop`. A chave `Language` especifica o idioma que o usuário deseja usar por padrão. Se alguma dessas chaves estiver ausente, o padrão do sistema será usado. O arquivo normalmente teria a seguinte aparência:

    [Desktop]
    Session=gnome
    Language=cs_CZ.UTF-8

## Comandos GDM

### Comandos do Usuário root do GDM

O pacote GDM fornece os seguintes comandos em `sbindir` destinados a serem executados pelo usuário root:

#### `gdm` opções de linha de comando

`gdm` é o daemon principal que configura o ambiente gráfico de login e inicia os auxiliares necessários.

#### `gdm` opções de linha de comando

-?, --help

- Fornece uma breve visão geral das opções de linha de comando.

--fatal-warnings

- Faz com que todos os avisos acarretem no término do GDM.

--timed-exit

- Sair depois de 30 segundos. Útil para depuração.

--version

- Exibe a versão do daemon do GDM.

#### `gdm-restart` opções de linha de comando

`gdm-restart` para e reinicia o GDM enviando ao daemon GDM um sinal HUP. Este comando encerrará imediatamente todas as sessões e desconectará os usuários atualmente conectados com o GDM.

#### `gdm-safe-restart` opções de linha de comando

`gdm-safe-restart` para e reinicia o GDM enviando ao daemon GDM um sinal USR1. O GDM será reiniciado assim que todos os usuários saírem.

#### `gdm-stop` opções de linha de comando

`gdm-stop` interrompe o GDM enviando ao daemon GDM um sinal TERM.

## Solução de Problemas

Esta seção discute dicas úteis para fazer o GDM funcionar. Em geral, se você tiver um problema ao usar o GDM, poderá enviar um erro ou enviar um e-mail para a lista de discussão gdm-list. Informações sobre como fazer isso estão na seção Introdução do documento.

Se o GDM não estiver funcionando corretamente, é sempre uma boa ideia incluir informações de depuração. Para ativar a depuração, defina a chave debug/Enable como "true" no arquivo `<etc>/gdm/custom.conf` e reinicie o GDM. Em seguida, use o GDM até o ponto em que ele falhar e a saída de depuração será enviada para o arquivo de log do sistema (`<var>/log/messages` ou `<var>/adm/messages` dependendo do seu sistema operacional). Se você compartilhar esta saída com a comunidade GDM por meio de um relatório de erro ou e-mail, inclua apenas as informações de depuração relacionadas ao GDM e não o arquivo inteiro, pois pode ser grande. Se você não vir nenhuma saída de syslog do GDM, pode ser necessário configurar o syslog (consulte a página de manual syslog).

### O GDM Não Inicia

Existem muitos problemas que podem fazer com que o GDM falhe ao iniciar, mas esta seção discutirá alguns problemas comuns e como abordar o rastreamento de um problema com a inicialização do GDM. Alguns problemas farão com que o GDM responda com uma mensagem de erro ou caixa de diálogo ao tentar iniciar, mas pode ser difícil rastrear problemas quando ele falha silenciosamente.

Primeiro, certifique-se de que o Xserver esteja configurado corretamente. O arquivo de configuração GDM contém um comando na seção [server-Standard] que é usado para iniciar o Xserver. Verifique se este comando funciona em seu sistema. Executar este comando a partir do console deve iniciar o Xserver. Se falhar, o problema provavelmente está na configuração do Xserver. Consulte o log de erros do Xserver para ter uma ideia de qual pode ser o problema. Pode ser também que seu Xserver esteja requisitando diferentes opções de linha de comando. Nesse caso, modifique o comando Xserver no arquivo de configuração GDM para que esteja correto para seu sistema.

Certifique-se também de que o diretório `/tmp` tenha propriedade e permissões razoáveis e que o sistema de arquivos da máquina não esteja cheio. Esses problemas farão com que o GDM falhe ao iniciar.

## Licença

Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da GNU General Public License publicada pela Fundação de Software Livre; a versão 2 da Licença ou (a seu critério) qualquer versão posterior.

Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; mesmo sem a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO PARA UM FIM ESPECÍFICO. Veja a GNU General Public License para mais detalhes.

Uma cópia da GNU General Public License está incluída como um apêndice do Guia do Usuário do GNOME. Você também pode obter uma cópia da GNU General Public License da Free Software Foundation visitando seu site ou escrevendo para

          Free Software Foundation, Inc.
          51 Franklin Street, Fifth Floor
          Boston, MA 02110-1301
          USA