XDMCP

De ColmeiaWiki

Ir para: navegação, pesquisa

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

[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:

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:

[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.

[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 é:

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 é:

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

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).

[editar] Links

[editar] Realização/Apoio

Ferramentas pessoais
Espaços nominais
Variantes
Visualizações
Ações
Geral
Projetos
Eventos
Estudos
Cursos
Navegação
Ferramentas