Extendendo a capacidade do servidor Samba 2.2.x



Baixar versão PDF

Com a versão beta do Samba 3 já no release 3 (veja em http://us3.samba.org/samba/whatsnew/samba-3.0.0beta3.html ), dentro em breve poderemos ter acessos à diversas facilidades ainda não disponíveis em servidores Samba configurados como PDC, como maior flexibilidade no gerenciamento de usuários.


Mas enquanto a versão estável do Samba 3 não é lançada, você pode aproveitar do seu servidor atual e explorar algumas facilidades do Samba quando integrado ao PAM em sistemas Linux. Nesse artigo, eu irei mostrar como usar duas dessas facilidades e facilitar um pouco a vida do administrador da rede local.


Apenas um login por usuário


Você talvez já tenha se deparado com o problema daquele usuário camarada, que empresta o login dele para todos seus colegas e eventuais visitantes da empresa para estes poderem imprimir um documento ou navegar na Internet. Isso é muita camaradagem da parte dele, o problema é quando alguém some com algum arquivo importante do servidor de arquivos ou alguma bobagem semelhante, você fica completamente vendido por não conseguir auditar quem foi o responsável.


O Samba 2.2.x permite que um mesmo login possa ser usado diversas vezes, mas você pode integrar o Samba com o PAM disponível na maoria das distribuições Linux e criar restrições de quantos logins podem ser feitos. Fazer isso é muito simples:


No arquivo de configuração do Samba (smb.conf) procure pela linha comentada (ou digite-a):


obey pam restrictions = yes


Isso fará com que o Samba passe a seguir as restrições aplicadas pelo PAM.


No diretório /etc/pam.d, procure pelo arquivo samba e modifique a linha (ou a inclua, caso não existe):


session required /lib/security/pam_limits.so


Agora você deve configurar o número máximo de logins que deseja permitirar para cada ID de usuário editando o arquivo /etc/security/limits.conf. Para configurar esse arquivo, você deve decidir se vai criar a restrição para um usuário, um grupo de usuários ou para todos. O mais aconselhável é criar por grupos de usuários, que você provavelmente tem definido em /etc/groups. Para limitar o número de logins para um grupo, inclua a seguinte linha no arquivo limits.conf:


@usuarios hard maxlogins 1


Você pode incluir mais linhas para grupos diferentes ou usuários específicos.

Salve o arquivo e reinicie os serviços do Samba*. Já deve estar funcionando.

Para alguns casos que eu testei essa facilidade, eu tive que alterar o arquivo /etc/pam.d/samba dessa forma:


session requisite /lib/security/pam_limits.so


Isso força que essa configuração de sessão seja requisito absoluto para que o usuário possa trabalhar no servidor, ou seja, se não for atendida, não tem conversa. Eu tive que fazer essa modificação em servidores Red Hat, mas o funcionamento final ainda é o mesmo. Não se esqueça de reiniciar o serviço do Samba (em distribuições baseadas em pacotes RPM, normalmente isso pode ser feito com um service restart smb ou similar) após a alteração.


Verificar quantos usuários estão com sessão ativa


Ou a famosa frase "logados", que quer dizer a mesma coisa no final das contas. O problema é que se você quiser saber quem está com sessão ativa, ou quantas pessoas estão trabalhando hoje, o Samba sozinho não tem como lhe informar isso. O comando smbstatus vai lhe mostrar quantos usuários estão acessando um compartilhamento no momento, por exemplo, mas não quanto usuários estão "logados".


Mais uma vez, vamos recorrer ao PAM. Edite o arquivo smb.conf e descomente (ou inclua) a seguinte linha:


utmp = yes


E reinicie os serviços do Samba. Isso permitirá que você visualize os dados inseridos no arquivo utmp do servidor, que armazena informações de login/logout de usuários, com programas como o who (veja a descrição com um man who dentro do shell).


Observações finais


Para utilizar essas e outras extensões do Samba com o PAM, você deve ter o servidor compilado com a opção --with-pam como parâmetro do comando configure.


Se compilar programas ainda parece um mistério para você, não se preocupe: a grande maioria das distribuições incluem o pacote pré-compilado do Samba com essa chave.


Você provavelmente terá que usar isso apenas se pegar o fonte disponível no site oficial do Samba em http://www.samba.org.


Esses dois exemplos mostrados não são tudo o que se pode fazer com Samba + PAM: você ainda pode fazer algumas experimentações para conseguir outros resultados desejados. Segue abaixo alguns links de referência sobre o assunto:


Documentação do PAM:

http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html


Documentação sobre o Samba:

http://us4.samba.org/samba/docs/