Samba, parte 3: Usando o Samba como PDC

Samba, parte 3: Usando o Samba como PDC

Clique aqui para ler a segunda parte

Em uma pequena rede, manter as senhas dos usuários sincronizadas entre as estações Windows e o servidor Samba não chega a ser um grande problema. No entanto, em redes de maior porte, isso pode se tornar uma grande dor de cabeça e passar a consumir uma boa parte do seu tempo.

Para solucionar o problema, existe a opção de usar o servidor Samba como um controlador primário de domínio (PDC), onde ele passa a funcionar como um servidor de autenticação para os clientes Windows e, opcionalmente, armazenar os perfis dos usuários, permitindo que eles tenham acesso a seus arquivos e configurações a partir de qualquer máquina onde façam logon.

Ao cadastrar um novo usuário no servidor Samba, ele automaticamente pode fazer logon em qualquer uma das estações configuradas. Ao remover ou bloquear uma conta de acesso, o usuário é automaticamente bloqueado em todas as estações. Isso elimina o problema de sincronismo entre as senhas no servidor e nas estações, além de centralizar a administração de usuários e permissões de acesso no servidor, simplificando bastante seu trabalho de administração.

O primeiro passo é modificar o arquivo de configuração do Samba. Existem algumas regras adicionais para transformar o Samba em um controlador de domínio. A seção “global” deve conter as linhas “domain master = yes”, “domain logons = yes”, “logon script = netlogon.bat” e (importante) não deve conter a linha “invalid users = root”, pois precisaremos usar a conta de root no Samba ao configurar os clientes. É preciso, ainda, adicionar um compartilhamento chamado “netlogon”, que conterá o script de logon que será executado pelas estações.

Continuando a lista de “exigências”, é necessário também que o modo de segurança esteja configurado em nível de usuário (security = user) e que o uso de senhas encriptadas esteja ativado (encrypt passwords = yes). Na verdade, não é obrigatório incluir estas duas linhas no smb.conf, já que estes valores são usados por default pelo Samba 3, mas é sempre interessante usá-los em exemplos e modelos de configuração para fins didáticos e para deixar claro que o arquivo não deve ter opções que conflitem com elas.

Embora não seja obrigatório, é fortemente recomendável ativar o uso do tdbsam como backend, adicionando a linha “passdb backend = tdbsam”, como vimos a pouco.

Usar o smbpasswd em um PDC oferece várias desvantagens. A principal delas é que o smbpasswd armazena um conjunto bastante incompleto de atributos referentes aos usuários, de forma que atributos como o SID (um código de identificação único a cada usuário, usado como verificação de segurança) ficam em branco ou são gerados dinamicamente durante os acessos, o que pode quebrar o suporte aos roaming profiles em algumas situações. O uso do tdbsam soluciona estes problemas.

Este é um exemplo de arquivo de configuração do Samba para um controlador de domínio. Ele não contém as configurações para compartilhamento de impressoras, lixeira e outras opções que você pode adicionar (juntamente com os compartilhamentos desejados) depois de testar a configuração básica:

[global]
workgroup = Dominio
netbios name = GDH
server string = Samba PDC

domain master = yes
domain logons = yes
logon script = netlogon.bat

security = user
encrypt passwords = yes
enable privileges = yes
passdb backend = tdbsam

preferred master = yes
local master = yes
os level = 100
wins support = yes

[netlogon]
comment = Servico de Logon
path = /var/samba/netlogon
read only = yes
browseable = no

[homes]
valid users = %S
create mask = 0700
directory mask = 0700
browseable = no

Acostume-se a sempre rodar o comando “testparm” depois de fazer alterações no arquivo, pois ele verifica a sintaxe e indica erros de configuração. Ao configurar o Samba como PDC, ele deve exibir a mensagem: “Server role: ROLE_DOMAIN_PDC”, como em:

$ testparm

Load smb config files from /etc/samba/smb.conf
Processing section “[netlogon]”
Processing section “[homes]”
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC

As linhas “preferred master = yes”, “local master = yes” e “os level = 100” fazem com que o servidor assuma também a função de master browser da rede. É comum que o PDC acumule também a função de master browser, mas, na verdade, uma coisa não tem relação com a outra. Você pode remover as três linhas e configurar outra máquina para assumir a função de master browser se preferir.

Depois de configurar o arquivo, verifique se a conta root do sistema foi cadastrada no Samba e se as senhas estão iguais. Caso necessário, use o comando “smbpasswd -a root” para cadastrar o a conta de root no Samba. Aproveite para criar a pasta “/var/samba/netlogon” e configurar corretamente as permissões:

# mkdir -p /var/samba/netlogon
# chmod 775 /var/samba/netlogon

Com o “775” estamos permitindo que, além do root, outros usuários que você adicionar no grupo possam alterar o conteúdo da pasta. Isso pode ser útil caso existam outros administradores de rede além de você.

Cadastre agora os logins dos usuários, com as senhas que eles utilizarão para fazer logon a partir das máquinas Windows. Nesse caso, não é preciso se preocupar em manter as senhas em sincronismo entre o servidor e as estações. Na verdade, as contas que criamos aqui não precisam sequer existir nas estações, pois o login será feito no servidor. Para adicionar um usuário de teste “joao”, use os comandos:

# adduser joao
# smbpasswd -a joao

É importante criar também a pasta “profile.pds” dentro do diretório home do usuário, onde o cliente Windows armazena as informações da sessão cada vez que o usuário faz logon no domínio:

# mkdir /home/joao/profile.pds

Ao rodar este comando como root, não se esqueça de ajustar as permissões da pasta, de forma que o usuário seja o dono:

# chown -R joao:joao /home/joao/profile.pds

Aproveite e crie a pasta “profile.pds” dentro do diretório /etc/skel, de forma que ela seja criada automaticamente dentro do home dos usuários que criar daqui em diante:

# mkdir /etc/skel/profile.pds

Além das contas para cada usuário, é preciso cadastrar também uma conta (bloqueada, e por isso sem senha), para cada máquina. Você deve usar aqui os mesmos nomes usados na configuração de rede em cada cliente. Se a máquina se chama “alesia” por exemplo, é preciso criar um login de máquina com o mesmo nome:

# useradd -d /dev/null -s /bin/false alesia$
# passwd -l alesia$
# smbpasswd -a -m alesia

Note que, nos dois primeiros comandos, é adicionado um “$” depois do nome, que indica que estamos criando uma conta de máquina, que não tem diretório home (-d /dev/null), não possui um shell válido (-s /bin/false) e está travada (passwd -l); a conta é válida apenas no Samba, onde é cadastrada com a opção “-m” (machine). Essas contas de máquina são chamadas de “trusted accounts” ou “trustees”.

Lembre-se de que para usar este comando o arquivo “/etc/shells” (no servidor) deve conter a linha “/bin/false”. Em caso de erro ao adicionar a máquina, use o comando abaixo para adicionar a linha e tente novamente:

# echo “/bin/false” >> /etc/shells

(este comando só funciona se executado diretamente usando o root, não funciona se executado usando o sudo)

Se preferir, você pode adicionar as contas de máquina dentro de um grupo do sistema (“maquinas” ou “machines” por exemplo). Nesse caso, crie o grupo usando o comando “groupadd” e use o comando abaixo para criar as contas de máquina já incluindo-as no grupo:

# useradd -g maquinas -d /dev/null -s /bin/false alesia$

Por último, é necessário criar o arquivo “/var/samba/netlogon/netlogon.bat“, um script que é lido e executado pelos clientes ao fazer logon. Você pode fazer muitas coisas através dele, mas um exemplo de arquivo funcional é:

net use h: /HOME
net use x: gdharquivos /yes

Este script faz com que a pasta home de cada usuário (compartilhada pelo Samba através da seção “homes”) seja automaticamente mapeada como a unidade “H:” no cliente, o que pode ser bastante útil para backups, por exemplo. Naturalmente, cada usuário tem acesso apenas a seu próprio home.

A segunda linha é um exemplo de como fazer com que determinados compartilhamentos do servidor sejam mapeados no cliente. O “net use x: gdharquivos /yes” faz com que o compartilhamento “arquivos” (que precisaria ser configurado no smb.conf), seja mapeado como o drive “X:” nos clientes. Lembre-se que o “gdh” dentro do netlogon.bat deve ser substituído pelo nome do seu servidor Samba, configurado na opção “netbios name =” do smb.conf.

Mais um detalhe importante é que o arquivo do script de logon deve usar quebras de linhas no padrão MS-DOS e não no padrão Unix (que é o padrão na maioria dos editores de texto do Linux). Você pode criá-lo usando um editor de texto do Windows ou usar algum editor do Linux que ofereça esta opção. No Kwrite por exemplo, a opção está em: “Configurações > Configurar Editor > Abrir/Salvar > Fim de linha > DOS/Windows”:

4536c20e

Mais uma configuração útil (porém opcional) é fazer com que o servidor armazene os arquivos e configurações do usuário (recurso chamado Roaming Profiles, ou perfis móveis), fornecendo-os à estação no momento em que o usuário faz logon. Isso permite que o usuário possa trabalhar em outras máquinas da rede e faz com que seus arquivos de trabalho sejam armazenados no servidor, reduzindo a possibilidade de perda de dados.

Por outro lado, ativar os perfis móveis faz com que seja consumido mais espaço de armazenamento no servidor e aumenta o tráfego da rede, já que os arquivos precisam ser transferidos para a estação a cada logon. Isso pode tornar-se um problema caso os usuários da rede tenham o hábito de salvar muitos arquivos grandes na área de trabalho.

Note que o servidor não armazena todos os arquivos do usuário, apenas as configurações dos aplicativos, entradas do menu iniciar, cookies, bookmarks, arquivos temporários do IE e o conteúdo das pastas “Desktop”, “Modelos” e “Meus Documentos”.

Para ativar o suporte no Samba, adicione as duas linhas abaixo no final da seção “global” do smb.conf (abaixo da linha “logon script = netlogon.bat”):

logon home = %L%U.profiles
logon path = %Lprofiles%U

A variável “%L” indica, neste caso, o nome do servidor, enquanto o “%U” indica o nome do usuário que está fazendo logon. Dessa forma, quando o usuário “joao” faz logon é montado o compartilhamento “gdhprofilesjoao”, por exemplo. Adicione também um novo compartilhamento, adicionando as linhas abaixo no final do arquivo:

[profiles]
path = /var/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700

Concluindo, crie a pasta “/var/profiles”, com permissão de escrita para todos os usuários:

# mkdir /var/profiles
# chmod 1777 /var/profiles

Cada usuário passa a ter uma pasta pessoal dentro da pasta (“/var/profiles/joao”, por exemplo) onde as configurações são salvas. Apesar das permissões locais da pasta permitirem que qualquer usuário a acesse, o Samba se encarrega de permitir que cada usuário remoto tenha acesso apenas ao seu próprio profile.

As estações Windows 2000 utilizam os perfis móveis automaticamente, quando o recurso está disponível no servidor Samba. Você pode verificar a configuração e, caso desejado, desativar o uso do perfil móvel no cliente no “Meu Computador > Propriedades > Perfis de Usuário > Alterar tipo”.

No Windows XP, o default foi alterado e o sistema tenta usar o perfil móvel por padrão, exibindo uma mensagem de erro (repetida a cada logon) caso o recurso não esteja disponível no servidor. Para eliminar as mensagens de erro é necessário desativar o uso dos perfis móveis, o que é feito através do utilitário “gpedit.msc“, que pode ser chamado através do “Iniciar > Executar” (é necessário estar logado localmente, usando uma conta com privilégios administrativos).

Dentro dele, acesse a opção “Configuração do computador > Modelos administrativos > Sistema > Perfis de usuário > Só permitir perfis de usuário locais” e mude a opção de “Não configurado” para “Ativado” (esta alteração precisa ser repetida em todas as máquinas):

26fe81ab

Aqui vai mais um exemplo de configuração para o servidor Samba, incluindo a configuração para uso como PDC, o compartilhamento netlogon, suporte a perfis móveis e compartilhamento de impressoras:

[global]
netbios name = Byzantium
workgroup = Dominio
server string = Servidor PDC
domain master = yes
domain logons = yes
logon script = netlogon.bat
logon home = %L%U.profiles
logon path = %Lprofiles%U

security = user
encrypt passwords = yes
enable privileges = yes
passdb backend = tdbsam
preferred master = yes
local master = yes
os level = 100
wins support = yes

printing = cups
load printers = yes
enable privileges = yes

[printers]
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes

[print$]
path = /var/smb/printers
read only = yes
write list = gdh
inherit permissions = yes

[netlogon]
comment = Servico de Logon
path = /var/samba/netlogon
read only = yes
browseable = no<

[profiles]
path = /var/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700

[homes]
valid users = %S
create mask = 0700
directory mask = 0700
browseable = no

[arquivos]
path = /mnt/hda2
writable = no
write list = +arquivos

Com o servidor Samba configurado, falta o mais importante, que é configurar os clientes para fazerem logon no domínio. Ao usar um PDC, surge a necessidade de cadastrar as máquinas no domínio, para só então os usuários cadastrados poderem utilizar as máquinas. É possível cadastrar tanto máquinas Windows quanto máquinas Linux no domínio, vamos agora às peculiaridades de cada sistema.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X