Limitando sessões KDE LTSP 4.2

Publicado por Rogério Tomassoni em 31/08/2011

[ Hits: 4.786 ]

 


Limitando sessões KDE LTSP 4.2



Após ter dificuldades com número de sessões por usuário no LTSP 4.2, decidi fazer uma solução paleativa para limitar o número máximo de sessões abertas por usuário no KDE, usando o KDM.

A solução foi criar um script que é executado quando o usuário faz login, ele deve ficar dentro de "/usr/share/xsessions", aqui ficam os arquivos referentes a sessões disponíveis no seu ambiente.

Vamos criar um novo arquivo chamado "kdeLimitUser.desktop" com o seguinte conteúdo:

[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/home/scripts/limitUserKde.sh
TryExec=/home/scripts/limitUserKde.sh
Name=KDE
Name[xh]=iKDE
Comment=The K Desktop Environment, a powerful Open Source graphical desktop environment
Comment[pt_BR]=Acrónimo para K Desktop Environment (ou Ambiente de Trabalho K), um poderoso ambiente de trabalho gráfico

Note os parâmetros "Exec" e "TryExec", eles deverão apontar para o script que fará o controle. Vamos então criar este script, o local pode ser escolhido a vontade, desde que ele tenha as permissões de execução para todos usuários (chmod 0755 limitUserKde.sh).

#!/bin/bash

# Scripts que limita o numero de sessões abertas por usuário no kde
# Script roda junto com o xsession /usr/share/xsessions/kdeLimitUser.desktop
# ele deve ser configurado no arquivo .dmrc no diretório do usuário.

# Numero máximo de sessões por usuário
NUMERO_MAX_SESSION_KDE=1

# Usuários sem restrição
USUARIOS_SEM_RESTRICAO="root"

# Função que envia notificação via netsend (Mensageiro do Windows deve estar ativo)
# Aqui poderia ser usado Jabber, e-mail entre outros meios.
notifica_limite_sessao (){

   MSG="O usuário $USER esta tentando logar em mais de $NUMERO_MAX_SESSION_KDE sessões do KDE. "
   #Rogerio
   echo $MSG | smbclient -M sistema02 -I 10.1.5.50 -U "Limite de sessões KDE."
  
}


# Testa se e usuário sem restrição, essa opção só sera válida se todos usuários
# tiverem dentro do /home/.dmrc setado para usar kdeLimitUser.desktop, caso contrario
# sera valido o que estiver configurado.
for semLimit in $USUARIOS_SEM_RESTRICAO ; do
   if [ $USER == $semLimit ]; then
      #startkde
      #echo "Sem restricao"
      exit 0;  
   fi
done

# Verifica o numero de sessões abertas, permite ou não uma nova sessão

NRO_SESSION_USER=$(ps -fu $USER | grep -v grep | grep -wi "/bin/sh /usr/bin/startkde" | wc -l)

if [[ $NRO_SESSION_USER -eq $NUMERO_MAX_SESSION_KDE || $NRO_SESSION_USER -gt $NUMERO_MAX_SESSION_KDE ]]; then
  #startkde
   echo "-> Limite atingido"
   notifica_limite_sessao
   exit 0;
elif [ $NRO_SESSION_USER -lt $NUMERO_MAX_SESSION_KDE ]; then
  # Caso o numero de sessões não tenha sido atingido inicia o KDE
        startkde
   exit 0;
fi

exit 0

Após criado, o arquivo .dmrc dentro do home de cada usuário deve ser alterado para chamar nosso verificador, logo o conteúdo do arquivo .dmrc deve ficar assim:

[Desktop]
Session=kdeLimitUser

Essa solução funcionou no meu ambiente, fica ai a sugestão. Lembrando que limita as sessões do KDE e não do terminal, para limitar o terminal use o "lts.conf" e "/etc/profile".

E também tem a brecha que se o usuário, troca a sessão pelas opções da tela de login, ou alterar o conteúdo do .dmrc, ou remover esse arquivo e ele for criado de novo como o padrão, a sessão deixa de ser controlada, e passa a valer o que estiver dentro do .dmrc.

Vale a pena remover as opções referente as sessões da janela de login, para remover exclua os arquivos do diretório "/usr/share/xsessions/" deixando apenas o referente ao KDE, para quem usa gdm, alterar "/usr/share/gdm/BuiltInSessions/default.desktop" o paramentro exec.

Verifique o "/etc/X11/xinit/Xclients" para alterar a sessão default e também deixar o .dmrc correto dentro do "/etc/skell" para que cada usuário novo criado, seja adicionado o .dmrc correto para ele.

Outras dicas deste autor

Acertando permissão do nagios.cmd

Erro ao inciar sessão gráfica (status 256)

Resolvendo problema de Nagios + NPC

Controle de acesso Squid + LTSP4.2

JPykotaGUI - controle de impressão

Leitura recomendada

Identificando processos autênticos

BlackArch Linux - Usando um repositório para Pentest

Liberando acesso a SICOV e Conectividade Social

Esqueceu a senha do root. Troque-a

Firewall bem prático e bom

  

Comentários
[1] Comentário enviado por julio_hoffimann em 31/08/2011 - 19:40h

Oi Rogério,

Apesar de eu não trabalhar com esse tipo de atividade, é uma ótima dica. Parabéns!

Abraço!

[2] Comentário enviado por tomassoni em 31/08/2011 - 21:38h

Obrigado Júlio.

[3] Comentário enviado por tomassoni em 17/01/2012 - 20:07h

Pessoal lembrando que usar o limits.conf também ajuda.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts