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: https://www.hardware.com.br/tutoriais/impressoras-samba/

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X