Extendendo a capacidade do servidor Samba 2.2.x
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/