Índice - Tutoriais

Samba, parte 3: Usando o Samba como PDC

Por Carlos E. Morimoto em 11 de dezembro de 2007 às 10h12

6

Usando o PDC para autenticação local no Linux

É possível configurar os clientes Linux para fazerem a autenticação dos usuários locais no PDC e armazenarem as configurações no próprio servidor (assim como no caso das máquinas Windows), mas, nesse caso, a configuração é bem mais complicada, pois temos que fazer várias alterações que alteram a forma como sistema autentica os usuários. Ao invés de verificar os arquivos "/etc/passwd" e "/etc/shadow", onde ficam armazenadas as contas locais, o cliente passa a utilizar o Samba e o Winbind para buscar os logins no servidor e assim autenticar o usuário.

Se você procura uma solução simples e limpa, recomendo que se limite à configuração que mostrei até aqui. Se não se importa de sujar as mãos, continue por sua conta e risco. :)

Esta configuração é indicada para distribuições derivadas do Debian que utilizam o KDM. Ela funciona em outras distribuições, mas, eventualmente, podem ser necessárias pequenas mudanças, de acordo com as peculiaridades de cada uma.

O primeiro passo é instalar os pacotes "samba" (ou samba-server), "winbind" (ou samba-winbind) e "libpam-modules" em cada cliente. Nas distribuições derivadas do Debian, instale diretamente os três pacotes:

# apt-get install samba winbind libpam-modules

No Fedora, o winbind está incluído no pacote principal do Samba e os módulos do PAM são instalados através do pacote "pam_smb":

# yum install samba pam_smb

A configuração no servidor não muda em relação ao que já vimos. Toda a configuração que vemos aqui é feita nos clientes.

Abra agora o arquivo "/etc/samba/smb.conf" (no cliente Linux) e faça com que a seção Global fique como o exemplo. Você pode tanto adicionar compartilhamentos, quanto ficar apenas com esta configuração básica:

[global]
netbios name = cliente1
workgroup = Dominio
winbind use default domain = yes
obey pam restrictions = yes
security = domain
encrypt passwords = true
wins server = 192.168.1.254
winbind uid = 10000-20000
winbind gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%U
winbind separator = +
invalid users = root

Não se esqueça de substituir o "Dominio" pelo nome do domínio usado na rede, o "cliente1" pelo nome do cliente e o "192.168.1.254" pelo endereço IP do servidor Samba PDC.

Abra agora o arquivo "/etc/nsswitch.conf" e substitua as linhas:

passwd: compat
group: compat
shadow: compat

... no início do arquivo, por:

passwd: compat winbind
group: compat winbind
shadow: compat winbind

Um exemplo do arquivo completo é:

passwd: compat winbind
group: compat winbind
shadow: compat winbind

hosts: files dns mdns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Depois de modificar os dois arquivos, reinicie o Samba e o Winbind e teste a configuração, ingressando no domínio. Para isso, use o comando "net rpc join":

# net rpc join member -U root

Password:
Joined domain DOMINIO.

A senha solicitada é a senha de root do servidor PDC, cadastrada no Samba, assim como fazemos ao cadastrar as máquinas Windows. Em caso de problemas, você pode usar também o comando abaixo, que especifica o nome do servidor (-S) e o nome do domínio (-w):

# net rpc join -S gdh -w dominio -U root

Se você receber uma mensagem de erro, como:

Creation of workstation account failed
Unable to join domain DOMINIO.

... provavelmente você esqueceu de cadastrar a máquina cliente no servidor. O nome da máquina (que você verifica através do comando "hostname") deve ser o mesmo que o incluído no arquivo smb.conf. Para criar a conta de máquina para o cliente, use (no servidor) os comandos que vimos anteriormente:

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

Nesse ponto o cliente já estará logado no domínio. Esta configuração é permanente, de forma que você não precisa se preocupar em refazer a configuração a cada boot. Falta agora a parte mais problemática, que é configurar o PAM, o sistema de autenticação do sistema, para buscar os logins no servidor. Isso é feito modificando os arquivos "/etc/pam.d/login" e "/etc/pam.d/kdm".

Comece adicionando as linhas abaixo no início do arquivo "/etc/pam.d/login" (responsável pela autenticação dos usuários no sistema), sem apagar as demais:

session required pam_mkhomedir.so skel=/etc/skel umask=0022
session optional pam_mount.so
auth sufficient pam_winbind.so
account sufficient pam_winbind.so
session required pam_winbind.so

Abra agora o arquivo "/etc/pam.d/kdm", deixando o arquivo com o seguinte conteúdo (apague ou comente as demais linhas). A mesma configuração pode ser usada no arquivo "/etc/pam.d/gdm", usado por distribuições que trazem o Gnome por padrão:

auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
account required /lib/security/pam_winbind.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022

Esta configuração faz com que o KDM exiba a lista de usuários cadastrados no servidor e permita que você faça login diretamente no domínio, sem passar pela autenticação local. É importante também desativar o autologin do KDE (ainda no cliente), no "Centro de Controle do KDE > Administração do Sistema > Gerenciador de login".

4850120f

Se você apenas adicionar as linhas acima no "/etc/pam.d/kdm", mas não apagar as linhas que já existem no arquivo (que permitem a autenticação local), a tela do KDM vai exibir a lista de logins do servidor, mas vai recusar o login, dizendo que a senha está incorreta. Este é um dos erros de configuração mais comuns.

Se você deixar disponível a opção "Bloquear sessão" do KDE, vai precisar editar também o arquivo "/etc/pam.d/kscreensaver", para que ele também use as contas do servidor. Caso contrário, o usuário vai acabar tendo que reiniciar o X, cada vez que clicar por engano no ícone:

m2da73fd2

Adicione as duas linhas abaixo no início do arquivo (/etc/pam.d/kscreensaver), sem apagar as demais:

auth sufficient pam_winbind.so
auth required pam_unix.so shadow nullok

Para que esta configuração funcione, é importante que os usuários sejam cadastrados no servidor como usuários reais, usando o comando "adduser", e não o "adduser --disabled-login --no-create-home" ou similar. Basicamente, é preciso que o usuário possa se logar no servidor, caso contrário ele também não vai conseguir se logar nas estações.

Ainda no cliente, acesse a pasta "/etc/rc5.d" e verifique se os links responsáveis por inicializar os serviços samba, winbind e kdm foram criados corretamente. Eles precisam ser carregados nessa ordem. No caso de distribuições que inicializam o KDM primeiro, renomeie o link, de forma que ele seja inicializado por último, como em:

# mv /etc/rc5.d/S02kdm /etc/rc5.d/S99kdm

Reinicie o cliente para que os módulos do PAM sejam atualizados e os serviços inicializados na ordem correta. Você notará que a tela de login do KDM passará a exibir os usuários cadastrados no servidor, ao invés dos usuários locais, sintoma de que está tudo funcionando:

m6ffff768

Configurando desta forma, os usuários locais que forem eventualmente criados no terminal chegam a aparecer na lista, mas não é possível fazer login neles através do KDM (essa é justamente a idéia). Apesar disso, você pode se logar nos terminais remotamente (usando o root e outros logins locais) via SSH, quando precisar alterar as configurações.

No arquivo "/etc/pam.d/login", incluímos a linha "session required pam_mkhomedir.so skel=/etc/skel umask=0022". Ela faz com que a pasta "/etc/skel" (da estação) seja usada como um template para a criação dos diretórios home dos usuários que só existem no servidor PDC.

A pasta "/home" (na estação) armazena apenas os arquivos que forem alterados em relação à pasta "/etc/skel", simplificando os backups. Você pode configurar o servidor Samba instalado em cada estação para compartilhar o diretório home, com permissões de acesso apenas para o administrador da rede, de forma que você possa acessar o home de cada estação a partir do servidor e fazer backup periodicamente.

O "/etc/skel" é justamente uma pasta modelo, cujo conteúdo é copiado para o diretório home, sempre que um novo usuário é criado. As configurações padrão mudam muito de distribuição para distribuição. Esta configuração privilegia o uso das configurações padrão de cada distribuição, permitindo que você use diversas distribuições diferentes nos clientes, independentemente de qual esteja usando no servidor. O Fedora continua com cara de Fedora, o Debian com cara de Debian e assim por diante.

Confira a quarta parte em: http://www.hardware.com.br/tutoriais/impressoras-samba/


6 comentáriosPor Carlos E. Morimoto. Revisado 6 de julho de 2009 às 08h42

Comentários

Erro
por Paula (anônimo) em 3 de fevereiro de 2011 às 14h22
Estou com um problema: samba 3.4 como pdc e win 7 com as alterações no registro, porém quando tento colocar o computador no dominio da um erro (não é possível contatar um controlador de dominio do active directory para o dominio X).

Alguém pode me ajudar?

Obrigada.
KDE 4.x
por marcelo (anônimo) em 26 de novembro de 2010 às 17h06
Como fazer o kdm encontrar o domínio com o kde 4.x??
Win7
por mrcmarcelo em 22 de outubro de 2010 às 23h38
Muito bom o tutorial, pena que não tem uma explicação de como adicionar o windows seven no PDC.
Demorou 3 dias pesquisando mas finalmente achei!
por Frota C. Júnior (anônimo) em 11 de outubro de 2010 às 01h44
Estou entrando no mundo do Mandriva e o ambiente gráfico do mesmo é riquíssimo, mas sempre falta algo, e com este tutorial eu pude entender de fato com tudo funciona e certamente poderei fechar as lacunas que ficaram pelo uso da interface gráfica do Mandriva, Parabéns o seu trabalho merece nota 10.
Onde 'ATHENASgdh' usar apenas nome do usuario 'gdh'
por Odair (anônimo) em 6 de outubro de 2010 às 10h55
# net -S localhost -U root -W ATHENAS rpc rights grant 'ATHENASgdh' SeMachineAccountPrivilege

Onde 'ATHENASgdh' usar apenas nome do usuario 'gdh'
Falta as barras invertidas
por Pietro (anônimo) em 27 de setembro de 2010 às 10h48
Seu exemplo
logon home = %L%U.profiles
logon path = %Lprofiles%U
Samba.org
logon home = \\homeserver\%U\winprofile
logon path = \\%N\profiles\%U

Creio que em mais partes do texto também faltem estás barras.