GNU/Linux
 
 
XDM, GDM e KDM
(X11, Gnome e KDE Desktop Manager)

XDM (X11 Display Manager), KDM (KDE Display Manager) e GDM (GNOME Display Manager).


Gerenciadores Gráficos
e
Gerenciadores Gráficos Remotos
(XDM, KDM e GDM)

Gerenciadores Gráficos e Gerenciadores Gráficos Remotos.



XDM

XDM (instalação e comandos)
# apt-get install xdm (instala o gerenciador gráfico de login chamado XDM (X11 Display Manager). Desenvolvido pelo mesmo criadores do "xorg". Ao reiniciar o equipamento, ao invés da solicitação do login em modo texto, aparecerá o login em modo gráfico)
# /etc/init.d/xdm start (aparecerá o login em modo gráfico. Por padrão, não abre porta TCP ou UDP)
# xdm (idem, mas prefira usar o anterior, pois é válido para todas as distribuições)


XDM (acesso remoto)
Entre no equipamento o qual será acessado remotamente (servidor) e faça o seguinte:
# vi /etc/X11/xdm/Xaccess (descomente a linha a seguir)
#* #any host can get a login window
Salve e Sai
# vi /etc/X11/xdm/xdm-config (comente a linha a seguir)
DisplayManager.requestPort: 0
Salve e Sai
# init 3 (pára o ambiente gráfico e vai para o modo texto)
# init 5 (reinicia o ambiente gráfico. Ao invés de usar "init 3" e "init 5", poderíamos simplesmente usar "/etc/init.d/xdm restart")
Obs1: observe que o XDM deve está startado para que se possa acessá-lo remotamente. Isso acontece, pois as portas usadas para o acesso remoto só estarão abertas ao iniciar o XDM. As portas usadas são a 177 UDP e outras portas TCP abertas em tempo de execução. A porta 177 UDP é usada no inicio da comunicação, depois são usadas portas TCP (ex: 58844 e 58842) para o estabelecimento da conexão e troca de dados.

Obs2: o servidor X quando é acessado remotamente faz uma pergunta reversa (PTR) ao DNS para saber o hostname do cliente. Se o DNS não responder ou responder errado, em alguns momentos o X não vai permitir a conexão remota. Muito parecido com o TCPWapper (hosts.deny e hosts.allow). Caso ocorra problemas na conexão, verifique se o DNS está OK. Também, se pode trabalhar no arquivo "/etc/hosts" ao invés do servidor DNS, colocando o IP e HostName do cliente no servidor X, sendo excelente para testes sem mexer na infra-estrutura de rede.

Entre em outro equipamento (cliente) e digite:

# X -query server_address (com esse comando o acesso remoto será realizado. O "server_address" deve ser substituído pelo IP ou HostName do servidor)
Obs: observe que no equipamento que fará o acesso remoto não precisa instalar o XDM, basta ter o XORG instalado. Também, é necessário que X local esteja parado. Só para conhecimento, o cliente sempre usa a porta de origem TCP 6000 para o estabelecimento da conexão e troca de dados.



KDM

KDM (instalação e comandos)
# apt-get install kdm (instala o gerenciador gráfico de login chamado KDM (KDE Display Manager). Desenvolvido pelo mesmo criadores do "kde". Na verdade ao instalar o KDE, já é instalado o KDM)
# /etc/init.d/kdm start (aparecerá o login em modo gráfico. Por padrão, não abre porta TCP ou UDP)
# kdm (idem)

KDM (acesso remoto)
Entre no equipamento o qual será acessado remotamente (servidor) e faça o seguinte:
# vi /etc/kde3/kdm/Xaccess (descomente a linha a seguir)
#* #any host can get a login window
Salve e Sai
# vi /etc/kde3/kdm/kdmrc (localize a seção [Xdmcp])
[Xdmcp]
Enable=false (mude para "true")
# init 3 (pára o ambiente gráfico e vai para o modo texto)
# init 5 (reinicia o ambiente gráfico. Ao invés de usar "init 3" e "init 5", poderíamos simplesmente usar "/etc/init.d/kdm restart")
Obs: observe que o KDM deve está startado para que se possa acessá-lo remotamente. Isso, acontece pois as portas usadas para o acesso remoto só estarão abertas ao iniciar o KDM. As portas usadas são a 177 UDP e outras portas TCP abertas em tempo de execução. A porta 177 UDP é usada no inicio da comunicação, depois são usadas portas TCP (ex: 58844 e 58842) para o estabelecimento da conexão e troca de dados.

Entre em outro equipamento (cliente) e digite:

# X -query server_address (com esse comando o acesso remoto será realizado. O "server_address" deve ser substituído pelo IP ou HostName do servidor)
Obs1: observe que no equipamento que fará o acesso remoto não precisa instalar o KDM, basta ter o XORG instalado. Também, é necessário que X local esteja parado. Só para conhecimento, o cliente sempre usa a porta de origem TCP 6000 para o estabelecimento da conexão e troca de dados.

Obs2: o servidor X quando é acessado remotamente faz uma pergunta reversa (PTR) ao DNS para saber o hostname do cliente. Se o DNS não responder ou responder errado, em alguns momentos o X não vai permitir a conexão remota. Muito parecido com o TCPWapper (hosts.deny e hosts.allow). Caso ocorra problemas na conexão, verifique se o DNS está OK. Também, se pode trabalhar no arquivo "/etc/hosts" ao invés do servidor DNS, colocando o IP e HostName do cliente no servidor X, sendo excelente para testes sem mexer na infra-estrutura de rede.


GDM

GDM (instalação e comandos)
# apt-get install gdm (instala o gerenciador gráfico chamado GDM (GNOME Display Manager). Desenvolvido pelo mesmo criadores do "gnome". Na verdade ao instalar o GNOME, já é instalado o GDM)
# /etc/init.d/gdm start (aparecerá o login em modo gráfico. Por padrão, não abre porta TCP ou UDP)
# kdm (idem)

GDM (acesso remoto)
Entre no equipamento o qual será acessado remotamente (servidor) e faça o seguinte:
# vi /etc/gdm/gdm.conf (localize a seção [xdmcp])
[xdmcp] (insira a linha a seguir nessa seção)
Enable=true
# init 3 (pára o ambiente gráfico e vai para o modo texto)
# init 5 (reinicia o ambiente gráfico. Ao invés de usar "init 3" e "init 5", poderíamos simplesmente usar "/etc/init.d/kdm restart")
Obs: observe que o GDM deve está startado para que se possa acessá-lo remotamente. Isso, acontece pois as portas usadas para o acesso remoto só estarão abertas ao iniciar o GDM. As portas usadas são a 177 UDP e outras portas TCP abertas em tempo de execução. A porta 177 UDP é usada no inicio da comunicação, depois são usadas portas TCP (ex: 58844 e 58842) para o estabelecimento da conexão e troca de dados.

Entre em outro equipamento (cliente) e digite:

# X -query server_address (com esse comando o acesso remoto será realizado. O "server_address" deve ser substituído pelo IP ou HostName do servidor)
Obs1: observe que no equipamento que fará o acesso remoto não precisa instalar o GDM, basta ter o XORG instalado. Também, é necessário que X local esteja parado. Só para conhecimento, o cliente sempre usa a porta de origem TCP 6000 para o estabelecimento da conexão e troca de dados.

Obs2: o servidor X quando é acessado remotamente faz uma pergunta reversa (PTR) ao DNS para saber o hostname do cliente. Se o DNS não responder ou responder errado, em alguns momentos o X não vai permitir a conexão remota. Muito parecido com o TCPWapper (hosts.deny e hosts.allow). Caso ocorra problemas na conexão, verifique se o DNS está OK. Também, se pode trabalhar no arquivo "/etc/hosts" ao invés do servidor DNS, colocando o IP e HostName do cliente no servidor X, sendo excelente para testes sem mexer na infra-estrutura de rede.



Gerenciador Gráfico Padrão

Primeira maneira
# vi /etc/inittab
id:5:initdefault: (mude o runlevel do initdefaul para "5", conforme essa linha)
Adicione somente uma das linhas a seguir:
x:5:respawn:/usr/bin/xdm -nodaemon (essa linha diz que o xdm será o gerenciador gráfico padrão)
x:5:respawn:/usr/bin/kdm -nodaemon (essa linha diz que o kdm será o gerenciador gráfico padrão)
x:5:respawn:/usr/sbin/gdm -nodaemon (essa linha diz que o gdm será o gerenciador gráfico padrão)
x:5:respawn:/usr/bin/X -query server_address (essa linha diz que o gerenciador gráfico padrão será remoto)

Segunda maneira (somente para o Debian)
# apt-get install rcconf (instala o "rcconf" que é uma ferramenta para habilitar ou desabilitar os daemons/serviços/scripts/tarefas/processos que sobem durante a inicialização do sistema)
# rcconf (um ambiente dialog aparecerá. Escolha um dos gerenciadores gráficos padrão e desabilite os outros caso existam. As opções dos gerenciadores geralmente são: xdm, kdm e gdm)
# vi /etc/X11/default-display-manager (arquivo que define o Gerenciador Gráfico Padrão)
Adicione somente uma das linhas a seguir:
/usr/bin/xdm (basta colocar o caminho completo do Gerenciador Gráfico padrão escolhida com a ferramenta "rcconf". Nesse caso foi especificado o xdm do Xorg)
/usr/bin/kdm (idem, só que para o kdm)
/usr/sbin/gdm (idem, só que para o gdm)

Terceira maneira
# ~/.xinitrc (nesse arquivo é possível configurar para cada usuário individualmente o gerenciador gráfico padrão)
exec blackbox (insira essa linha colocando o nome do gerenciador gráfico padrão como por exemplo: blackbox, kde, gnome etc)



Identificar os Gerenciadores Gráfico da rede

# X -indirect network_address (com esse comando uma pesquisa em broadcast será realizada. O "network_address" deve ser substituído pelo endereço de rede, por exemplo, 192.168.0.0. O X11 precisa estar parado)
# X :2 -indirect network_address (idem, só que o X11 não precisa estar parado)
Obs: a opção ":2" nada mais é que a especificação de utilização de uma porta de origem que não esteja sendo usada. Nesse caso se usará a porta UDP 6002, o padrão é 6000. Se a opção fosse ":3" a porta utilizada seria UDP 6003 e assim sucessivamente. O bom com essa opção é que podemos abrir vários X11 (local e remoto) numa mesma máquina.



TroubleShooting (XDM, KDM e GDM)

"AUDIT: date : PID : X: client 1 rejected from IP xxx.xxx.xxx.xxx" e "Auth name: MIT-MAGIC-COOKIE-1 ID: -1"(essa mensagem ocorre no cliente quando tentamos acessar remotamente o servidor e o servidor faz uma pergunta ao DNS para saber o hostname do IP do cliente. Se o DNS não responder, em alguns momentos o X não vai permitir a conexão. Muito parecido com o TCPWapper (hosts.deny e hosts.allow))





Programa Gráfico Remoto

É possível executar na máquina local um programa X (openoffice, xcalc, firefox etc) e exibí-lo em um máquina remota. É necessário entender que a máquina local executará e enviará via rede o programa para a máquina remota, sendo que todo o processamento ocorretá na máquina local.



XDM

Acesse a máquina remota
# vi /etc/X11/xdm/Xservers (procure a linha a seguir)
:0 local /usr/bin/X :0 vt7 -nolisten tcp (essa linha deve ficar assim ":0 local /usr/bin/X :0 vt7" sem as aspas, fazendo com que ao restartar o KDM a porta TCP 6000 fique aberta esperando pedidos de conexão necessários para enviar um programa X remotamente)
Salve e Saia
# /etc/init.d/xdm stop (pára o xdm)
# /etc/init.d/xdm start (starta o xdm, a porta TCP 6000 abrirá e aparecerá a tela de login)

Efetue o login no XDM, abra um terminal X (ex: xterm) e digite o comando a seguir:
$ xhost IP_ou_Hostname (o IP_ou_HostName deve ser substituído pelo endereço da máquina que enviará o programa X via rede. Esse comando libera o acesso do equipamento que tiver o endereço definido por ele)

Obs1: veja que o comando acima foi executado por um usuário comum. Isso, partiu do pré-suposto que ao logar no XDM, foi usado um usuário comum. O comando "xhost" só vai funcionar se for utilizado o mesmo usuário que logou no XDM que no caso desse artigo foi um usuário comum. Isso vale para o usuário "root" também, se logar no KDE como "root", o comando "xhost" deverá ser executado como "root". A explicação disso é simples, pois depois que é logado, o perfil do usuário é carregado e o usuário estará visualizando graficamente isso. Então, quando a outra máquina enviar via rede um programa X para este computador, só fará sentido se tal programa aparecer para o usuário que está logado graficamente e vendo o seu perfil na tela.

Obs2: Uma outra questão relacionada ao comando "xhost", é a exigência da variável de ambiente "DISPLAY" que geralmente é exportada automaticamente ao se logar no XMD. O padrão dessa variável é "DISPLAY=:0.0".

Acesse a máquina local e digite:
Maneira 1:
# xcalc -display IP_ou_Hostname:0 (prefira usar essa maneira, pois define o endereço para onde será enviado o programa X em tempo de execução. O IP_ou_Hostname deve ser substituído pelo endereço da máquina que receberá e visualizará o programa X)
Maneira 2:
# export DISPLAY=IP_ou_Hostname:0 (esse comando diz que todo programa X deve ser enviado via rede para o endereço definido em IP_ou_Hostname)
# xcalc (executa o "xcalc", contudo ele será visualizado na máquina que tem o endereço definido no comando anterior)
Obs: ao usar os comandos acima, não há necessidade que o servidor X desta máquina esteja rodando.


KDM

Acesse a máquina remota
# vi /etc/kde3/kdm/kdmrc (procure a linha a seguir)
ServerArgsLocal=-nolisten tcp (essa linha deve ficar assim "ServerArgsLocal=" sem as aspas, fazendo com que ao restartar o KDM a porta TCP 6000 fique aberta esperando pedidos de conexão necessários para enviar um programa X remotamente)
Salve e Saia
# /etc/init.d/kdm stop (pára o kdm)
# /etc/init.d/kdm start (starta o kdm, a porta TCP 6000 abrirá e aparecerá a tela de login)

Efetue o login no KDE, abra um terminal X (ex: Konsole ou xterm) e digite o comando a seguir:
$ xhost IP_ou_Hostname (O IP_ou_HostName deve ser substituído pelo endereço da máquina que enviará o programa X via rede. Esse comando libera o acesso do equipamento que tiver o endereço definido por ele)

Obs1: veja que o comando acima foi executado por um usuário comum. Isso, partiu do pré-suposto que ao logar no KDE, foi usado um usuário comum. O comando "xhost" só vai funcionar se for utilizado o mesmo usuário que logou no KDE que no caso desse artigo foi um usuário comum. Isso vale para o usuário "root" também, se logar no KDE como "root", o comando "xhost" deverá ser executado como "root". A explicação disso é simples, pois depois que é logado, o perfil do usuário é carregado e o usuário estará visualizando graficamente isso. Então, quando a outra máquina enviar via rede um programa X para este computador, só fará sentido se tal programa aparecer para o usuário que está logado gráficamente e vendo o seu perfil.

Obs2: Uma outra questão relacionada ao comando "xhost", é a exigência da variável de ambiente "DISPLAY" que geralmente é exportada automaticamente ao se logar no KDE. O padrão dessa variável é "DISPLAY=:0.0".

Acesse a máquina local e digite:
Maneira 1:
# xcalc -display IP_ou_Hostname:0 (prefira usar essa maneira, pois define o endereço para onde será enviado o programa X em tempo de execução. O IP_ou_Hostname deve ser substituído pelo endereço da máquina que receberá e visualizará o programa X)
Maneira 2:
# export DISPLAY=IP_ou_Hostname:0 (esse comando diz que todo programa X deve ser enviado via rede para o endereço definido em IP_ou_Hostname)
# xcalc (executa o "xcalc", contudo ele será visualizado na máquina que tem o endereço definido no comando anterior)
Obs: ao usar os comandos acima, não há necessidade que o servidor X desta máquina esteja rodando.


GDM

Acesse a máquina remota
# vi /etc/gdm/gdm.conf (procure a linha a seguir)
[security] (dentro dessa seção deve-se inserir ou modificar a linha a seguir)
DisallowTCP=false (com essa linha, ao restartar o GDM, a porta TCP 6000 ficará aberta, esperando pedidos de conexão necessários para enviar um programa X remotamente)
Salve e Saia
# /etc/init.d/gdm stop (pára o gdm)
# /etc/init.d/gdm start (starta o gdm, a porta TCP 6000 abrirá e aparecerá a tela de login)

Efetue o login no GNOME, abra um terminal X (ex: xterm) e digite o comando a seguir:
$ xhost IP_ou_Hostname (o IP_ou_HostName deve ser substituído pelo endereço da máquina que enviará o programa X via rede. Esse comando libera o acesso do equipamento que tiver o endereço definido por ele)

Obs1: veja que o comando acima foi executado por um usuário comum. Isso, partiu do pré-suposto que ao logar no GNOME, foi usado um usuário comum. O comando "xhost" só vai funcionar se for utilizado o mesmo usuário que logou no GNOME que no caso desse artigo foi um usuário comum. Isso vale para o usuário "root" também, se logar no GNOME como "root", o comando "xhost" deverá ser executado como "root". A explicação disso é simples, pois depois que é logado, o perfil do usuário é carregado e o usuário estará visualizando graficamente isso. Então, quando a outra máquina enviar via rede um programa X para este computador, só fará sentido se tal programa aparecer para o usuário que está logado gráficamente e vendo o seu perfil.

Obs2: Uma outra questão relacionada ao comando "xhost", é a exigência da variável de ambiente "DISPLAY" que geralmente é exportada automaticamente ao se logar no GNOME. O padrão dessa variável é "DISPLAY=:0.0".

Acesse a máquina local e digite:
Maneira 1:
# xcalc -display IP_ou_Hostname:0 (prefira usar essa maneira, pois define o endereço para onde será enviado o programa X em tempo de execução. O IP_ou_Hostname deve ser substituído pelo endereço da máquina que receberá e visualizará o programa X)
Maneira 2:
# export DISPLAY=IP_ou_Hostname:0 (esse comando diz que todo programa X deve ser enviado via rede para o endereço definido em IP_ou_Hostname)
# xcalc (executa o "xcalc", contudo ele será visualizado na máquina que tem o endereço definido no comando anterior)
Obs: ao usar os comandos acima, não há necessidade que o servidor X desta máquina esteja rodando.





Mensagem de Boas Vindas
(Display Manager Greeting)


XDM (Mensagem de Boas Vindas)

# vi /etc/X11/xdm/Xresources (procure a linha a seguir)
xlogin*greeting: Welcome to CLIENTHOST (essa linha define as saudações. Mude-a de acordo com a sua preferência)
Salve e Sai
# /etc/init.d/xdm restart


KDM (Mensagem de Boas Vindas)

# vi /etc/kde3/kdm/kdmrc (procure a linha a seguir)
[X-*-Greeter] (essa seção que define as saudações)
GreetString=Welcome to Debian at %n (digite aqui uma mensagem para os usuários)
Salve e Sai
# /etc/init.d/kdm restart


GDM (Mensagem de Boas Vindas)

# vi /etc/gdm/gdm.conf (procure a linha a seguir)
[greeter] (essa seção que define as saudações)
DefaultWelcome=false (desabilita as boas vindas padrão)
Welcome=Digite aqui uma mensagem para os usuários locais
RemoteWelcome=Digite aqui uma mensagem para os usuários remotos
Salve e Sai
# /etc/init.d/gdm restart





Arquivo de Controle


XDM
# vi /etc/X11/xdm/Xresources (altera a cor, fonte, tamanho, borda, logo, mensagens etc da tela de login do XDM)


KDM
# vi /etc/kde3/kdm/kdmrc (altera a cor, fonte, tamanho, borda, logo, segurança, mensagens etc da tela de login do KDM)


GDM
# vi /etc/gdm/gdm.conf (altera a cor, fonte, tamanho, borda, logo, segurança, mensagens etc da tela de login do GDM. Geralmente esse arquivo vem com poucas opções, mas exite um manual em "/usr/share/gdm/defaults.conf")




Outros comandos
$ xrandr (mostra e/ou modificar a resolução de vídeo)
$ krandrtray (systray do kde para modificar a resolução de vídeo. Geralmente mostra mais opções de resolução que o normal)




Referências Bibliográgicas
http://imasters.uol.com.br/artigo/4933/linux/configurando_o_red_hat_para_ser_acessado_remotamente_via_modo_grafico/
 
 




ETI - Especialista em Tecnologia
da Informação