XDMCP
De ColmeiaWiki
Descrição do Projeto: O projeto tem como objetivo a utilização de hardware antigo, padronização do sistema operacional e melhoria do desempenho dos computadores utilizando um ambiente de desenvolvimento para as disciplinas de programação, com ferramentas específicas. Para tal, está sendo utilizado um servidor XDMCP onde o restante das máquinas do laboratório (20 máquinas) fazem a conexão remota para utilizar os seus recursos.
Data Inicio: Fevereiro de 2008.
Data Final: Agosto de 2008.
Participantes: Alan Fachini, Dino Magri, Marco Carvalho, Oriel Frigo
Status (Em desenvolvimento, Parado ou Finalizado): Finalizado
Edição: Dino Magri 02h08min de 23 de agosto de 2010 (BRT)
Tabela de conteúdo |
[editar] TODO List
- Disponibilizar os pacotes das versões
[editar] Desenvolvimento
[editar] Evitando o Duplo Login - OK!
Esse problema já foi resolvido, é necessário acrescentar os usuários que podem acessar o sistema, tendo apenas 1 conexão por vez. Adicione
| <nome do usuário> | <> | <type> | <value> |
|---|---|---|---|
| comp1 | - | maxlogins | 1 |
| comp2 | - | maxlogins | 1 |
| comp3 | - | maxlogins | 1 |
| . | . | . | . |
| . | . | . | . |
| . | . | . | . |
| compx | - | maxlogins | 1 |
Assim o usuário compx terá direito a fazer um login por vez no sistema.
[editar] Desligando o terminal remoto
Estamos instalando um laboratório aqui na faculdade utilizando um servidor XDMCP e 20 máquinas clientes. O nosso problema era achar uma solução para fechar a sessão remota aberta entre o cliente e o servidor e desligar a máquina cliente automaticamente. Procurando na net, achamos essas soluções:
- http://dizinha.codigolivre.org.br/forum/viewtopic.php?t=1288
- http://mail.dischosting.nl/pipermail/metarec/2006-May/004999.html
Mas, não era bem o que queríamos e durante uma busca no man do X achamos o parâmetro "terminate".
Então, para iniciar uma conexão remota e fazer com que a sessão seja terminada (clicando em "sair" no menu sistema do GNOME, por exemplo) a máquina cliente desconecte do servidor e desligue, fazemos a conexão com os seguintes parâmetros:
$ X -query IP_DO_SERVIDOR -terminate && poweroff
Bom, para nós essa ainda não é a melhor opção, parece muito "gambiarra", mas funcionou perfeitamente para as nossas necessidades atuais.
É interessante mudar o nome do ícone de "sair da sessão" para "desligar o terminal" ou algo parecido.
[editar] Tunando o Firefox para obter melhor desempenho
Abaixo seguem algumas configurações que foram pesquisadas pelo marco para melhorar o desempenho do firefox. Poderíamos procurar algum método de bloquear mais de 5 abas, por exemplo, acho que seria uma boa.
FAZER BACKUP ANTES DE REALIZAR O PROCESSE
Mudando as configurações na sessão de configuração do Firefox
Digite about:config na url.
Diminui o intervalo de renderização das paginas do Firefox
Nome:content.notify.interval Type: Integer Value: 2000000 Chave: Teve que ser criada manualmente
É uma chave dependente para ativar o content.notify.interval
Nome:content.notify.ontimer Type: Boolean Value: true Chave: Teve que ser criada manualmente
Aqui vem uma das partes que as pessoas não percebem mas consome bastante memória e desempenho botão de fechar nas abas com a opção 0 este botão somente aparece na janela corrente.
Nome: browser.tabs.closeButtons Type: interger Value: 0 (valor opcional, você pode tentar outros valores citados acima) (valor padrão: 1) (valores opcionais: 0, 1, 2, 3)
A chave milagrosa a que deixa o firefox rápido pra caramba, esta chave sabilita o cache de memória do firefox nada de ficar sobrecarregando e criando firefox utilizando 100 ou mais de ram.
Nome: browser.cache.memory.enable Status: user set Type: boolean Value: false
Reduz o tamanho do cache de memória do histórico.
Nome: browser.sessionhistory.max _total_viewers Status: user set Type: integer Value: 0 (valor opcional, desativa o cache completamente)
Mudando as configurações para todos os usuários
Para fazer com que estas flags sejam ativas para todos o usuários do firefox é necessário mudar os arquivos que mantém a configuração:
No arquivo defaults/pref/firefox.js altere a linha para o valor 0
pref("browser.tabs.closeButtons", 0);
E inseridas as linhas no final do arquivo
pref("content.notify.ontimer",true);
pref("content.notify.interval",2000000);
No arquivo /usr/lib/firefox/greprefs/all.js
pref("browser.cache.memory.enable", false);
pref("browser.sessionhistory.max_total_viewers", 0);
Pronto agora você está com o seu firefox Tunado esse sim é um 2.0 XD
Agradecimentos ao Cidoloco e a sua publicação no fórum do slackbr, a comunidade do Slackware e principal ao autor do artigo na computerworld. Referências:
- http://www.slackbr.org/forum/viewtopic.php?t=15050
- http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9020880&pageNumber=1
[editar] Pesquisa sobre Autenticação de usuários no GNU/Linux
[editar] PAM - Pluggable Authentication Modules
PAM é um conjunto de módulos que definem como as aplicações autenticarão os usuários no sistema. Os arquivos de configuração /etc/pam.d/
[editar] Sintaxe de configuração
Os arquivos de configuração PAM possuem a seguinte sintaxe:
type - Este módulo define o tipo de autenticação e possui os seguintes parâmetros: </blockquote>
account - Valida as contas de usuário para os serviços;
auth - Faz a autenticação dos usuários;
password - Cria e modifica as senhas dos usuário;
session - Gerencia a sessão de um usuário autenticado no sistema.
control - Este módulo define o tipo de controle que será usado se a autenticação falhar e possui os seguintes parâmetros:
requisite - Se a autenticação do módulo falhar nega a autenticação imediatamente;
required - Se a autenticação do módulo falhar nega a autenticação e não notifica o usuário até que os outros módulos do mesmo tipo sejam verificados;
sufficient - Se a autenticação deste módulo é aceita, o PAM permite a autenticação mesmo se o módulo com o parâmetro required falhar;
optional - O sucesso ou falha na autenticação só é significante se o módulo for único em relação ao serviço ou classe;
module-path - Este módulo informa o diretório default de módulos do PAM, geralmente em /usr/lib/security ou /lib/security.
module-arguments - São argumentos que são passados aos módulos.
[editar] Estudo sobre SSHFS
[editar] Introdução
Secure SHell FileSystem é um sistema de arquivos para Linux capaz de operar arquivos remotamente, usando simplesmente um login seguro no computador remoto. No computador local onde o SSHFS está montado, a implementação utiliza o modulo FUSE (Filesustem in Userspace) no kernel.
O sistema SSHFS permite que um sistema de arquivos remoto seja disponibilizado em uma máquina local, ou seja, permite que um diretório que esteja numa máquina lógica e/ou distante fique disponível na máquina local, como se fosse um diretório nativo dessa máquina local.
Para realizar essa tarefa, o sistema SSHFS usa um protocolo parecido com o FTP, denominado de SFTP (Secure Transfer Protocolo) e encobre outros comandos dentro um sistema de arquivos, o que causa a impressão de acessar localmente os arquivos resultantes da montagem de um diretório ou dispositivo remoto.
[editar] Preparando o ambiente
Quando o computador remoto é ligado, um conjunto de arquivos de controle é gerado no sistema: arquivos para controlar o estado de uso de um dispositivo; arquivos de configuração, com os caminhos dos arquivos que precisam ser lidos ou executados; arquivos executáveis, que cooperarão no acesso usando o modelo cliente-servidor.
- O primeiro tipo de arquivos (de controle de estado de uso do dispositivo) informa que nenhum dispositivo está sendo usado.
- O segundo tipo possui informações que não se alteram, pois tratam dos caminhos de outros arquivos e de configuração comuns a vários scripts.
- O terceiro tipo, arquivos executáveis, serão os responsáveis por emitirem mensagens de uso de um dispositivo (cliente) e por processar as mensagens de uso, retornando a possível disponibilidade do dispositivo citado na mensagem (servidor). Essas operações todas ocorrem no terminal remoto; é parte que não é visível aos usuários.
[editar] Montando um Dispositivo
Os usuários possuem seus arquivos num servidor remoto, tendo todo o processamento no servidor remoto. E é a partir dessa máquina que surge as requisições de montagem de dispositivos, dispositivos estes que estão presentes nos terminais remotos. Nesse servidor remoto o usuário aciona os primeiro scripts, que darão início ao processo de montagem dos dispositivos. Esses scripts controlam no servidor o acesso aos dispositivos, informando quando o mesmo já foi montado pelo usuário ou quando o usuário ainda não requisitou montagem alguma daquele dispositivo. A sequências de passos é:
- 1. Servidor incia requisição ao terminal remoto do acesso a mídia
- 2. O terminal remoto processa a requisição retorna
- 3. O servidor recebe o retorno e informa ao usuário o que ocorreu, como:
- Sucesso, o dispositivo está disponível.
- Erro, o dispositivo não está acessível.
- Erro, o dispositivo já está em uso.
Quando o dispositivo pedido não está montado, o script executa comandos do sistema de montar o dispositivo pedido em um ponto de montagem pré-determinado. Caso esse processo de montagem gere algum erro, o script retorna o motivo de erro. Se o processo foi feito com sucesso o script lança o servidor SFTP e o usuário consegue acessar o dispositivo.
Quando o túnel SSH é iniciado, um script é acionado e verifica o pedido de acesso que pode ser de desmontar ou montar o dispositivo, então é verificado o estado do dispositivo requerido no conjunto de arquivos gerado inicialmente. Se o pedido é de montar um dispositivo já montado por outro usuário o script rejeita e fecha a conexão. Se o dispositivo não está montado segue o próxima passo.
Quando a montagem é completada com sucesso, o túnel SSH fica "pendurado" com o servidor SFTP
[editar] Desmontando um Dispositivo
Quando o servidor SFTP é fechado, os scripts do terminal remoto simplesmente desmontam a mídia e fecham o túnel SSH. Para fechar o servidor SFTP basta o servidor desligar o ponto FUSE que o SSHFS utiliza.
Os scripts que irão começar o processo de desmontagem do dispositivo, acontecem único e exclusivamente dentro do terminal remoto, pois o ganho para manter o dispositivo montado é o servidor SFTP aberto.
O processo de desmontar o dispositivo é muito semelhante com a montagem, sequência de passos da desmontagem é:
- 1. Servidor desmonta o ponto FUSE (fechando o túnel SSH)
- 2. O terminal remoto processa a requisição, os logs internos podem ser:
- Sucesso, o dispositivo foi desmontado
- Erro, o dispositivo não está montado
- Erro, o dispositivo não foi montado por quem pediu as desmontagem
Quando a requisição é de desmontar, é verificado nos arquivos de controle se o dispositivo já está montado para o usuário que pede para desmontar. Se o usuário pedinte é o usuário que montou o script executa o processo de desmontagem pelos comandos do sistema.
[editar] Segurança nos acessos
Como o SFTP é para navegação em qualquer diretório que o usuário tenha permissão e os dispositivos sempre são montados pelo mesmo usuário no terminal, para facilitar o controle de concorrência, foi feito uma alteração no código fonte do servidor SFTP que só permite o acesso dos arquivos dentro de um diretório específico, no caso esse diretório é o ponto de montagem do dispositivo.
[editar] Configuração automática do servidor
[editar] Introdução
Script adduser e useradd
[editar] Diretório /etc/skel
O diretório /etc/skel contêm a estrutura de arquivos e diretórios padronizada que será copiada para o diretório /home/usuario ao executar o script de criação de usuários adduser. Para uma padronização de usuários num laboratório de computadores, é importante customizar o diretório /etc/skel com a área de trabalho, ícones e página inicial do navegador desejados para todos os usuários. Esse diretório também é utilizado como ponte para a execução do script principal de reconfiguração do pacote XDMCPReconf.
[editar] Criação de pacote .deb
- XDMCP 0.1 (executa o script de reconfiguração que é instalado no cron).
- XDMCP 0.2 (executa o script de reconfiguração, cria usuários, usa modulo perl).
- XDMCP 0.3 (executando script pelo /etc/init.t/bootmish.sh ocorreram algumas falhas, assim como no uso de variáveis de ambiente.
passou-se a usar um arquivo de configuração /etc/xdmcpreconf.conf e um arquivo de inicialização /etc/init.d/xdmcpreconf que foi ativado através do comando update.rc).
- XDMCP 0.4 (cria e deleta usuários, reconfigura firefox).
[editar] Links
- Links com configs de script:
- http://gufsc.das.ufsc.br/tiki-index.php?page=AmbienteKDEEscolaLivre
- http://git.c3sl.ufpr.br/gitweb
- http://www.redhat.com/archives/k12osn/2005-September/msg00648.html
- Leitura Oficial do Linux XDMCP HOWTO http://tldp.org/HOWTO/XDMCP-HOWTO/
[editar] Realização/Apoio
- Colméia: Grupo de Pesquisa em Software Livre
- UDESC CCT