Ubuntu, truques e dicas

Após ter instalado o Ubuntu para os terminais LTSP, chega a parte da personalização. Pessoalmente, não gosto do Ubuntu, mas não significa que não seja uma boa distribuição. Durante o tempo que demorei a personalizar (e aquando da escrita deste pequeno texto, ainda o estou a personalizar) fiquei a saber algumas coisinhas sobre esta distribuição.

Neste pequeno howto, vou explicar como personalizei a criação de utilizadores, preferências do firefox (plugins, mimeTypes, ligações) e mais alguns detalhes necessários na minha instalação de LTSP.

Navegação

Dica

Estas configurações são muito simples de fazer. Criem um utilizador (podem usar o mesmo que foi usado durante a instalação do Ubuntu), façam as personalizações que desejem e posteriormente vejam as alterações aos ficheiros de configuração e podem substituir nas configurações globais. Assim, quando um utilizador entrar a primeira vez, vai ficar com essas configurações. Isto funciona muito bem para o firefox.

Criação da Pasta pessoal do utilizador.

O Ubuntu, como todas as outras distribuições, a não ser que expecificado, cria uma pasta pessoal com o username do utilizador em /home. Até aqui, nada de especial, mas o Ubuntu tem a mania de criar outras pastas dentro da home, que no meu caso, não me servem de nada. Este procedimento é feito pelo XdgUtils. O XdgUtils é uma iniciativa do Freedesktop.org juntamente com o OSDL (Open Source Development Labs), chamada Portland Project. Esta iniciativa pretende fornecer aos ISDs (independent Software Developers) APIs estáveis para o Linux Desktop (Ambiente de Trabalho) e outros Ambientes de Trabalho Livres. O XdgUtils são uma série de scripts que permitem integrar as aplicações no ambiente de trabalho escolhido pelo utilizador.

No Ubuntu, são estes scritps que criam as directorias na sua pasta pessoal. Estes scripts encontram-se em /etc/xdg. No meu caso, como eu não quero que ele crie todas as directorias (porque eu já as crio com os documentos do utilizador usando scripts para montar as partilhas), basta editar o ficheiro user-dirs.default (que se encontra na directoria especificada em cima) e comentamos todas as linhas, excepto as que dizem respeito a criar o Desktop (Ambiente de Trabalho):

    # The values are relative pathnames from the home directory and
    # will be translated on a per-path-element basis into the users locale
    DESKTOP=Desktop
    DOWNLOAD=Desktop
    #TEMPLATES=Templates
    #PUBLICSHARE=Public
    #DOCUMENTS=Documents
    #MUSIC=Music
    #PICTURES=Pictures
    #VIDEOS=Videos
    # Another alternative is:
    #MUSIC=Documents/Music
    #PICTURES=Documents/Pictures
    #VIDEOS=Documents/Video

 

Lockdown Gnome

Apesar de dar algumas coisas aos utilizadores, é necessário limitar algumas coisas, como não ter acesso à linha de comandos, bloquear os paineis (acreditem, já deu muitos problemas), etc…

Apesar disso, os utilizadores da informática têm que ter acesso a estas coisas, pois precisamos delas para poder diagnosticar e resolver problemas.

Isto poderia ser efectuado de uma forma "mais correcta" usando o sabayon, mas por alguma razão, não o consigo colocar a funcionar, dando sempre erro. Assim iremos pela forma "menos correcta", mais trabalhosa, mas que também funciona perfeitamente.

O Gnome têm uma ferramenta de configuração que é o Gconf, tanto gráfica como por linha de comandos. Aqui, vamos usar a parte da linha de comandos e criar uns pequenos scripts para automatizar as configurações. Um exemplo da ferramenta gráfica, podemo-la usar para ver quais as chaves e posteriormente, por linha de comandos, aplicariamos a "regra" a essa chave.

Esta personalização seria perfeita se usassemos perfis de utilizador, mas infelizmente, como já dito em cima, não consigo que o sabayon funcione e assim, iremos aplicar a regra a todos os utilizadores e posteriormente retirar aos que nos interessam.

Atenção: O Gnome têm chaves mandatory e defaults. Se executar-mos uma chave mandatory, não será depois possivel alterar por utilizador e torna-se read only. Assim, se virem que existem algumas chaves que querem diferentes para alguns utilizadores, coloquem defaults e posteriormente alterem para o utilizador em questão (explicado mais à frente).

 

Nota: Todos estes comandos são corridos com o utilizador root (excepto quando indicado o contrário)

Desabilitar o uso da linha de comandos

A linha de comandos, para os utilizadores normais não interessa muito. Para isso, vamos usar o Gconf para a retirar. Mais explicações sobre o Gconf e como utilizar podem encontrar aqui.

Desta forma, desabilitamos para TODOS OS UTILIZADORES o acesso à linha de comandos (ALT+F2).

Para alterar para o utilizador em questão, numa consola, como esse utilizador, executem:

Desta forma, conseguem alterar estas chaves por utilizador.

Desabilitar a troca de utilizador com uma sessão aberta

 

Desabilitar o bloquear do ecran

 

Os paineis

O Gnome tem dois paineis, nos quais existem os menús e as applets, que os utilizadores podem remover, adicionar, etc… Já me aconteceu os utilizadores removerem o acesso às aplicações e ser necessário adicionar novamente. Assim, iremos bloquear o acesso a alterar os paineis e adicionar applets.

Como explicado em cima, usem um utilizador normal. Façam login na sessão e adicionem os atalhos que achem necessários ao painel, e as applets que achem também necessárias.

Como root, executem:

Com esse utilizador, numa consola, executem:

Depois, como root, vamos ler o ficheiro e colocar por defeito nos utilizadores:

Desta forma, personalizamos o painel para os utilizadores.

 ATENÇÃO: Ao executarem como mandatory, todos os utilizadores iram ter essas novas definições.

 

Personalização do Firefox

Aqui no meu local de trabalho usamos um servidor proxy para aceder à internet. Em windows, a AD trata disto tudo, agora, em Linux, as coisas são diferentes. Para isto, é preciso personalizar o firefox de forma a que, quando um utilizador entra pela primeira vez, ele defina já algumas variáveis. Em Ubuntu, a pasta de definições do Firefox encontra-se em /etc/firefox. Ali dentro, temos uma directoria chamada profile. Dentro desta, encontramos um ficheiro prefs.js. É neste ficheiro que vamos definir algumas variaveis, tais como proxy a usar, pagina inicial, etc…

Nota: Garantir que não existe nenhuma janela do firefox aberta, porque senão todas as alterações são re-escritas.

Editamos o ficheiro e acrescentamos:

Desta forma, quando o utilizador iniciar o firefox pela primeira vez, vai ter estas variáveis já definidas.

No HAL tenho imensos documentos em PDF, e as pessoas também recebem muitos documentos neste formato. Alguns dos documentos que tenho são modelos standard do ministério da saúde e por exemplo, precisam de ser impressos em duplex (frente e verso). Apenas o Adobe Acrobat Reader permite aceder às preferências de impressão e alterar esta opção (por defeito, as impressoras não vão imprimir todos os documentos assim). Os utilizadores não sabem onde foi instalado o Adobe Acrobat Reader e por isso, não posso esperar que eles alterem esta preferência e tenho que ser eu a alterar isto por eles. Assim, o PDF é um mimeType que o Firefox reconhece, mas não têm o Adobe Acrobat Reader como programa para os abrir.

Existe um ficheiro chamado mimeTypes.rdf onde estão todas estas opções definidas. Este ficheiro encontra-se em /etc/firefox/profile. Editamos o ficheiro e acrescentamos:

 Para alterarem os bookmarks para alguns que voçês desejem, nessa mesma directoria existe um ficheiro de bookmarks. Apenas têm que construir um voçês (com o método descrito no inicio do documento) e substituirem o que lá se encontra

Arranque automático de applicações e/ou execução de scripts

Aqui no meu local de trabalho, as pessoas têm pastas pessoais e de serviço de rede. No caso do windows são montadas automáticamente com uma aplicação chamada kicks, em Linux o caso é diferente. Para isso, preciso de usar um script. O script, basicamente, verifica quem é o utilizador, verifica se existe uma pasta do utilizador no servidor, e caso exista, cria um link simbólico na home dele. No caso da pasta de serviço, verifica qual o grupo a que o utlizador pertence, e cria um link simbólico na pasta home do utilizador para o departamento em questão.

NOTA: isto só funciona com o LDAP activado e em funcionamento

Problema: Este script só funciona quando o sistema já sabe qual é o utilizador, por isso, têm que ser executados após o utilizador efectuar o login.

Noutras distribuições e em versões anteriores do Ubuntu, existe uma pasta chamada profile.d, que esta em /etc, cujos scripts que estam dentro desta pasta são executados cada vez que o utilizador efectua o login. Como aqui não existe, tive que arranjar outra forma.

Solução: Uma vez que os utilizados usam gnome, a solução arranjada foi executar o script cada vez que o Gnome arranca (nesta altura já o utilizador efectuou o login).

Para isso, o Gnome permite arrancar automáticamente aplicações aquando do login. Não podia adicionar este script com as aplicações gráficas do Gnome, porque senão era obrigado a descobrir onde isto se encontrava e replicar as configurações para todos os utilizadores. Neste momento, o servidor está limpinho e as pastas pessoais dos utilizadores não estão criadas.

Então, coloquei o Gnome a executar o script, mas via consola, e colocado em /etc/skel, que é uma pasta onde todo o conteúdo é copiado para a pasta home do utilizador assim que ele entra pela primeira vez.

Em /etc/skel, criar as pastas .config/autostart. Aí dentro, criar um ficheiro <nome_ficheiro>.desktop, com a seguinte sintaxe:

Desta forma, o utilizador quando entrar com Gnome (atenção, isto em Gnome, para KDE, por exemplo, o procedimento é diferente), são montadas as pastas.

 Som no windows com rdesktop

Nesta solução implementada, tenho 3 terminais que correm uma aplicação de windows, ligando-se por rdesktop a um windows terminal services. Essa aplicação tem uma funcionalidade que toca o som de uma campainha cada vez que acontece um determinado evento. No lts.conf, sem fazer nada, o rdesktop não toca qualquer som. Para alterar esse comportamento, apenas temos que alterar uma linha e adicionar outra.

Na secção do lts.conf respeitante ao computador que vai correr o rdesktop (substituindo o Linux por completo), adicionamos

[ComputadorXYZ]

      SOUND_DAEMON            = "rdp" #Adicionada – especificar o sound daemon

      SCREEN_02                       = "rdesktop -D -a 16 -k pt -f 111.222.333.444 -u user -p password -r sound:local" #Alterada para incluir o sound:local

Desta forma, fazem reboot ao terminal e o terminal já terá som no windows

 

Impressoras por defeito

O LTSP permite também definir impressoras por defeito. No caso da minha instalação, quase todos os terminais têm impressoras associadas e eu não desejo que o utilizador, cada vez que deseje imprimir, tenha que andar a pesquisar por uma lista de impressoras qual a sua impressora e acreditem que, muitos deles nem sabem. Desta forma, vamos definir as impressoras por defeito para cada terminal. Aqui, iremos  proceder pelo mesmo método escrito em cima.

 O LTSP tem duas variáveis que se podem alterar para exportar a impressora. PRINTER e PRINTER_ET permitem fazer este trabalho. Para isto, precisamos ainda de outra variável que é também definida pelo proprio Ubuntu, que é LTSP_CLIENT, que nos indica qual o terminal. A partir desta variável, sabemos qual o terminal e podemos exportar as variaveis da impressora com o valor correspondente.

Exemplo do script:

Para executar este script, vamos a /etc/skel/.config/autostart e copiamos o ficheiro que já lá está para outro nome. apenas temos que alterar a linha exec com o caminho para o script em cima. Desta forma, quando os utilizadores entrarem a primeira vez, cria a pasta home e copia para lá os ficheiros autostart.

 Logwatch

Para um administrador de sistemas, é sempre muito importante saber o estado dos seus servidores. Existe um pequeno utilitário, chamado logwatch que nos ajuda a saber isso. Para o instalar, executamos, numa consola, como root (ou usando sudo):

O apt vai instalar o exim4 (um MTA) que será importante para nos enviar por email o resultado do logwatch. Assim que estiver tudo instalado, temos que configurar o exim4. Para isso, numa consola, executamos:

A primeira opção é que tipo de servidor queremos. A unica coisa que desejamos é que os emails sejam enviados por um smarthost, recebido por SMTP ou fetchmail. Escolhemos esta opção e vamos avançando pelas diversas opções.

Neste momento, temos o exim4 configurado apenas para enviar emails, não para receber.

Para configurar o logwatch, copiamos para /etc/logwatch/conf  o ficheiro logwatch.conf que se encontra em /usr/share/logwatch/default.conf.  Editamos o ficheiro e configuramos à nossa medida.

Reparem que em /etc/cron.daily está o script para a execução do logwatch. Para experimentarem, basta correr o script e esperar que recebam um email na vossa caixa do correio.

OpenOffice

No HAL existem uma série de modelos de documentos já feitos e que as pessoas estão habituadas a usar. Quando se vai a modelos e documentos no OpenOffice, os caminhos são os por defeito na instalação e os modelos no HAL estão numa pasta especifica (que eu copiei para o Servidor e coloquei um link para eles na pasta pessoal de cada utilizador). Para que o OpenOffice os reconheça, era necessário que os utilizadores configurassem o OpenOffice nas preferências. Para alguns, isso é bastante complicado. Assim, tenho que já ter o OpenOffice configurado para ir à procura dos modelos naquela pasta. O OpenOffice contém uma série de ficheiros de configuração e é neles que vamos mexer.

Para tal, ir para a directoria /usr/lib/openoffice/share/registry/data/org/openoffice/Office. Aí, existe um ficheiro chamado Paths.xcu. Editar este ficheiro e procurar pela chave Template. Reparem que a sintaxe deste ficheiro é XML.

Assim que encontrarem a chave Template e respeitando a sintaxe, acrescentem as seguintes linhas (pode ser antes da chave </node> – onde termina o a configuração da chave Template):

    <prop oor:name="UserPaths">
        <value>$(work)/Modelos</value>
      </prop>

Esta chave funciona quando a pasta dos modelos se chama Modelos e está na área pessoal do utilizador. a chave $(work) é uma variável definida pelo OpenOffice e que indica a área do utilizador.

 

 Referências

 

Coloco aqui os sites onde retirei imensas dúvidas, vi scripts e efectuei imensas pesquisas:

 

Troubleshooting

Após ter configurado o LTSP e ter posto os dois servidores a funcionar, fui fazendo as actualizações necessárias. Chegou a uma altura, que fiz uma actualização e as pessoas deixaram de poder entrar nos terminais. Foi complicado voltar tudo novamente a funcionar. Para piorar, as actualizações foram efectuadas nos dois servidores ao mesmo tempo. Já podem imaginar. Em vez de um, tinha dois servidores com o mesmo problema.

O que aconteceu?

Bem, foi uma actualização do openssh que deu cabo de tudo. Para quem está habituado a usar ssh, cada vez que nos ligamos a um servidor novo, é-nos perguntado se desejamos adicionar a identificação do servidor. Neste caso, para os dois servidores, já estava adicionada há muito tempo, e estranhei quando tornou a pedir. Alguma coisa tinha mudado. As chaves de ssh.

Resolução

Se alguma vez acontecer isto, as pessoas tentam colocar a password e a mensagem de validação da password nunca mais desaparece e as pessoas não entram, tentem os seguintes passos:

  • Reiniciar o servidor de ssh: /etc/init.d/ssh restart
  • Reiniciar o servidor de dhcp: /etc/init.d/dhcp3-server restart
  • executar os seguintes comandos (numa shell no servidor, como root):
    • ltsp-update-sshkeys
    • ltsp-update-kernels
    • ltsp-update-image
  • Reiniciem os terminais

Se eventualmente, após estes passos os utilizadores continuam a não entrar, tentem pesquisar pelo google.

No fim, se mesmo após extensa pesquisa, não conseguiram resolver o vosso problema, tentem uma abordagem radical (foi a minha solução).

Durante os tutoriais que aqui coloquei, nunca se mexeu na directoria /opt/ltsp. Todas as configurações foram efectuadas no próprio servidor. Assim, vamos apagar aquela directoria e recria-la.

  • cd /opt
  • mv ltsp ltsp-old
  • ltsp-build-client

Desta forma, vamos criar novamente a directoria e parece que vamos começar novamente uma instalação de um LTSP. Após estar o processo completo, basta executarem os passos seguidos em cima.

Espero que nunca tenham este problema, pois passei 3 horas a tentar solucionar o problema (com chuva de telefonemas ao mesmo tempo) e só com esta ultima solução é que ele ficou resolvido.

Leave a Reply

Your email address will not be published. Required fields are marked *