Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: fedora
Por U235
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Compartilhamento do Samba autenticando no AD
Linux user
tiago2001
28/03/2011
Este artigo é destinado àqueles que ainda utilizam o Windows 2003 como PDC e querem utilizar o Samba como servidor de arquivos, porém querem utilizar os usuários que já estão cadastrados no AD, dessa forma quando o usuário logar, terá acesso aos compartilhamentos que você o habilitou para ele sem a necessidade de digitar a senha novamente.
Por: Tiago Prado
[ Hits: 23429 ]
Conceito: 10.0   3 voto(s)3 voto(s)3 voto(s)3 voto(s)3 voto(s) + quero dar nota ao artigo

Introdução

Utilizei para este artigo o Debian 5.0 Lenny (Samba 3.2.5), Windows 2003 como PDC e WinXP e Win7 como clientes.

Comece instalando os seguintes pacotes:

# aptitude install krb5-user samba samba-common winbind ntpdate

Abaixo seguem explicações das linhas que você deverá substituir nos arquivos de configuração, conforme sua necessidade:
  • intranet é o nome do meu servidor (Windows 2003)
  • intragov.com é o nome do meu domínio completo
  • arquivos é o nome da máquina Linux
  • 192.168.1.3 é o IP do meu controlador de domínio (Windows 2003)

Configurando os arquivos do Debian

Entre em /etc/hosts e edite o arquivo substituindo os nomes e IPs de acordo com suas necessidades:

# vim /etc/hosts

192.168.1.3    intranet.intragov.com intranet
127.0.0.1       arquivos.intragov.com intranet
127.0.0.2       arquivos.intragov.com intranet

Agora configure o resolv.conf do seu Debian:

# vim /etc/resolv.conf

domain intragov.com
search intragov.com
nameserver 192.168.1.3

Configuração do Kerberos

Alterar o que estiver em negrito de acordo com o seu domínio, é fundamental respeitar o que estiver em MAIÚSCULO e em minúsculo.

Renomeei o arquivo original e depois criei um novo.

# mv /etc/krb5.conf /etc/krb5.conf.orig
# > /etc/krb5.conf
# vim /etc/krb5.conf


[libdefaults]
default_realm = INTRAGOV.COM
dns_lookup_realm= true
dns_lookup_kdc= true
ticket_lifetime= 24h
forwardable= yes

# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

#       default_tgs_enctypes = des3-hmac-sha1
#       default_tkt_enctypes = des3-hmac-sha1
#       permitted_enctypes = des3-hmac-sha1

# The following libdefaults parameters are only for Heimdal Kerberos.
        v4_instance_resolve = false
        v4_name_convert = {
host = {
rcmd = host
ftp = ftp
                }
plain = {
something = something-else
                }
        }
fcc-mit-ticketflags = true

[realms]
INTRAGOV.COM= {
kdc= intranet.intragov.com
admin_server= intranet.intragov.com
default_domain= INTRAGOV.COM
        }

[domain_realm]
.intragov.com= INTRAGOV.COM
        intragov.com= INTRAGOV.COM

[login]
        krb4_convert = true
        krb4_get_tickets = false

Agora faça o teste do Kerberos, onde "administrador" é o nome de um usuário qualquer que você tem no seu AD, é importante utilizar seu domínio completo e em MAIÚSCULO.

Para estar tudo funcionando não deverá aparecer nenhum erro nessa etapa e sim ir para linha de baixo apenas.

# kinit administrador@INTRAGOV.COM

Próxima página >>




Páginas do artigo
   1. Introdução
   2. Configurando o Samba
   3. Ingressando no domínio
   4. Testando e concluindo

Outros artigos deste autor
Nenhum artigo encontrado.

Leitura recomendada

Comentários
[1] Comentário enviado por Thalysson S em 29/03/2011 - 17:04h:

Ótimo artigo Tiago. Já tive que fazer muito isso .....

Valeu por compartilhar !


Abraço.

[2] Comentário enviado por johnfelix em 29/03/2011 - 17:23h:

Estou tentando implementar uma solução que está bem dificil aqui.
Preciso fazer com que estações linux conectem a um servidor
de arquivos e AD que possui como sistema o Windows Server 2003
Já consegui fazer o ingresso das estações porém o que está dificil é
efetuar as montagens nas estações como era antes da instalação
do Ubunto 10.05.

No Windows Server 2003 tem cadastrados grupos que possui vários
usuários.
No XP quando um usuário loga ele automaticamente executa um
script de logon que cria as unidades com os arquivos.

Bem esse script é em bat e claro não vai funcionar em Linux
daí a dúvida como fazer isso funcionar, pensei no pam_mount
mas depois de várias tentativas sem sucesso estou um pouco
desnorteado.

Então é isso tenho um PDC e AD utilizando de um PC com Windows Server 2003
e preciso efetuar o mapeamento para os usuários utilizando a politica de grupos
do servidor Windows.

Qualquer ajuda é de grande valia.

[3] Comentário enviado por minibiga em 31/03/2011 - 09:02h:

Tive problemas com a data entre os 2 sistemas e o ntpdate nao resolveu, o jeito foi mudar o linux(debian) e o windows 2008 r2 para UTC Universal Time e ajustar os relogios manualmente, ótimo artigo funcionou perfeitamente.

[4] Comentário enviado por tgomarino em 02/06/2011 - 11:16h:

muito bom o artigo, funcionou corretamente, mas como eu faço para que ao autenticar no AD o user já compartilhe a pasta no LINUX?
PS: uso o Ubuntu 11.04

Vlw Abraço

[5] Comentário enviado por tiago2001 em 02/06/2011 - 11:59h:

tgomarino, vc está utilizando o ubuntu como servidor de arquivos, o win2003 como PDC e como clientes o winxp ou o seven, é isso?
Qual é o seu nível do Linux, sabe criar pastas, dar permissões, trocar donos das pastas?

[6] Comentário enviado por andrecanhadas em 08/06/2011 - 18:23h:

Valeu Funcionou 100% agora vou tentar autenticar os usuários no squid


[7] Comentário enviado por rodolfojss em 08/06/2011 - 20:38h:

Alguém sabe se este procedimento também serve para o Win2k8?

[8] Comentário enviado por andrecanhadas em 08/06/2011 - 21:58h:

Funciona sim Testado no AD 2008

[9] Comentário enviado por rodolfojss em 10/06/2011 - 12:47h:

@andrecanhadas Muito obrigado por responder (:
Muito bom mesmo

[10] Comentário enviado por tgomarino em 13/06/2011 - 10:53h:

tiago2001,

isso mesmo quero usar o ubuntu como file server e o win 2003 como pdc, meus clients são xp e vista.
meu nível de linux é intermediario, sei como criar pasta e dar permissões e modificar donos!

[11] Comentário enviado por aantunes em 14/06/2011 - 12:22h:

Tiago,
boa tarde, fiz todos o procedimento, a maquina está no AD, porem quando executo o comando getent passwd só traz os usuarios do linux. o wbinfo -u traz os usuarios do AD.
Já fiz um abusca na net e so encontrei para apagar a base de dados do samba, fiz mas não funcionou. tem alguma coisa mais?

[12] Comentário enviado por tiago2001 em 14/06/2011 - 13:01h:

aantunes,

Verifica aí no seu smb.conf as seguintes configurações

idmap uid ou winbind uid -> uid de começo e fim para os usuários do AD;
idmap gid ou winbind gid -> gid de começo e fim para os grupos do AD;
winbind enum users = yes -> utiliza-se para que com o comando getent te retorne os usuários;
winbind enum groups = yes -> utiliza-se para que com o comando getent te retorne os grupos;
winbind use default domain = yes -> utilizando essa linha, será removido o prefix de domínio;
winbind separator = + -> é o caractere utilizado para separar o domínio do usuário ou do grupo.



[13] Comentário enviado por tiago2001 em 14/06/2011 - 13:21h:

tgomarino,

Vai lá no seu win2003, em "Usuários e computadores do Active Directory", crie seus usuários e seus grupos, Ex:
usuário: tgomarino
grupo: ti

Aí vc dá dois cliques no usuário tgomarino, vai em "Membro de", coloque em adicionar e coloque "ti"... agora vc pertence ao grupo ti.
Vai no samba e cria um compartilhamento, como:
[ti]
comment= Arquivos da T.I.
path = /mnt/ti
browseable = yes
valid users = @"INTRAGOV+ti"
write list= @"INTRAGOV+ti"
create mask = 0660
directory mask = 0770
force group = +ti

N esqueça de criar a pasta "/mnt/ti" e de dar as devidas permissões e trocar quem é o grupo do dono da pasta
Obs: INTRAGOV é o nome do seu domínio

Agora digamos que vc queira criar uma unidade de rede pro cara acessar direto, vai novamente no 2003, dá dois cliques no usuário e vá em "Perfil", onde está escrito "Script de logon", dê um nome de um arquivo.bat, ex: "ti.bat", sem aspas.
Agora vc abre o windows explorer, em endreço digite: "\\win2003", lembrando que win2003 é o nome do seu servidor windows, entre na pasta "NETLOGON" crie aí o arquivo "ti.bat" com o seguinte conteúdo:

@echo off
echo Mapeando sua unidades de rede.
echo Z:
net use Z: /del /y
net use Z: \\arquivos\ti

O que esse script faz é criar uma unidade de rede, primeiro ele exclui caso tenha alguma unidade Z e depois cria, arquivos é o nome do seu linux que vc deu lá no samba.

Assim vc também pode colocar um atalho automaticamente da unidade de rede na área de trabalho da pessoa, caso queria a dica de como fazer isso é só falar.
Caso queira utilizar perfil móvel e precisa de alguma ajuda, pergunta aí.

Até.


[14] Comentário enviado por tgomarino em 15/06/2011 - 09:33h:

Vlw parceiro ajudou muito... muito obrigado

[15] Comentário enviado por aantunes em 20/06/2011 - 15:56h:

Tiago,
Obrigado, já tinha resolvido problema.


[16] Comentário enviado por rodolfo_ em 03/09/2011 - 17:52h:

Muito bom! Consegui fazer, foi bem tranquilo.

Só tive um problema, o usuário não conseguia autenticar, mas não conseguia porque existe um tempo de resposta que eu não estava respeitando.

[17] Comentário enviado por jgama em 01/10/2011 - 08:04h:

Pessoal, estou com o problma na hopra de fazer o teste com comando
root@srv-file:~# wbinfo -t
checking the trust secret via RPC calls failed
error code was NT_STATUS_UNSUCCESSFUL (0xc0000001)
Could not check secret
root@srv-file:~#

Eu já usa esta integração quando tinha o DC com Windows Server 2008, e tive que migrar para o Windows Server 2008 R2.

Apesar do erro acima, os comandos "wbinfo -u e wbinfo -g " estão mostrando os usuarios e grupos do AD.

Tenho que fazer algo para resolver o error do wbinfo -t?

Abraço


[18] Comentário enviado por rodolfo_ em 02/10/2011 - 20:21h:

Como faço para adicionar somente usuario do dominio? sem o grupo?

[19] Comentário enviado por tiago2001 em 03/10/2011 - 14:35h:

jgama,
Procure dar uma olhada no /etc/nsswitch.conf e no /etc/samba/smb.conf, verifique bem as linhas do winbind, deve ser algum problema com ele.



[20] Comentário enviado por tiago2001 em 03/10/2011 - 14:46h:

rodolfo,

Acredito que algumas alterações no smb.conf e no switch.conf vc consiga.
No smb.conf faça o seguinte, está assim:

winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind separator = +
idmap uid = 10000-20000
idmap gid = 10000-20000

Faça assim:
winbind enum users = yes
winbind enum groups = no
winbind use default domain = yes
winbind separator = +
idmap uid = 10000-20000

No /etc/nsswitch.conf na linha
group: compat winbind

Altere para:

group: compat

Verifica aí se funciona




[21] Comentário enviado por mackay em 02/11/2011 - 14:45h:

Caro Thiago, primeiramente lhe parabenizo pelo excelente tutorial. Nota 10.

Segui todos os passos e foi tudo bem, até antes do teste final.

Tenho o seguinte compartilhamento:
[dinfo]
path = /arquivos/arquivos
available = yes
create mask = 0660
directory mask = 0770
browseable = yes
writable = yes
valid users = @"DINFO+dinfo"
write list = @"DINFO+dinfo"
force group = +dinfo

No servidor AD Win2008 criei um grupo chamado "dinfo" e um usuário chamado "teste". Coloquei o usuário teste dentro do grupo "dinfo". Até aí, tudo bem.

Na máquina cliente (WinXP) entro com o usuário "teste" normalmente. Mas quando vou acessar o compartilhamento \\arquivos\dinfo ele me pede senha. Não deveria entrar automaticamente?

E mais, mesmo eu digitando a senha corretamente dá erro. Sempre fica com a janela de login e senha abertas e nunca abre o compartilhamento.

Alguma dica?

Abs,

[22] Comentário enviado por tiago2001 em 02/11/2011 - 15:51h:

Mackay, obrigado pelos elogios...
É o seguinte, pode ser algumas coisas, verifique as seguintes:
O winxp esta no seu dominio?
verifique tb o horario entre o controlador de dominio, servidor linux e o winxp, n podem estar c mais de 5min de diferenca.
verifique se vai atraves do ip ao invez do nome do seu server linux

[23] Comentário enviado por diegodtl em 26/01/2012 - 22:44h:

Ótimo artigo funcionou perfeitamente.
Uma dúvida: Queria colocar uma pasta no compartilhamento só leitura para um grupo e controle total para um usuário. Como ficaria a configuração?

[24] Comentário enviado por tiago2001 em 26/01/2012 - 23:36h:

Diegodtl, é bem tranquilo, só uma pergunta antes de eu te explicar.
Vc entende os esquemas de dar permissão, os comandos chown, chgrp, chmod, o que significa o 666, o 777?
Só me responde isso, que aí eu te explico detalhadamente dependendo da sua resposta.

Tiago

[25] Comentário enviado por diegodtl em 27/01/2012 - 18:31h:

Tiago, entendo sim. A minha pergunta não foi lá essas coisas...kkkkk
O que eu gostaria mesmo era de implantar essa ferramenta no samba (http://www.vivaolinux.com.br/artigo/Howto-Servidor-Samba-+-ACL) agora, com essa configuração do seu tutorial. Existe possibilidade?

[26] Comentário enviado por ticopan em 02/02/2012 - 21:05h:

Boa noite caro colaborador.

Estou precisando implementar essa solução em um ambiente que já encontra-se em produção. Hoje os usuários autenticam no samba ao entrarem no servidor de arquivos apenas. Para resolver, estou instalando outro servidor samba clone do primeiro, porém antes de colocá-lo em produção preciso fazer com que este autentique direto no AD, e não mais no passwd do linux.

Entendo que, ao que parece, teu artigo deve resolver essa questão, mas tenho algumas dúvidas. Agradeço desde já a ajuda.

1. Minha rede é heterogênea (estações de trabalho windows xp, win7 e ubuntu 10.04): Essa solução vai funcionar com os desktops linux tb? como?
2. Os servidores windows tem aqueles limites das calls... meus clientes vão ser impedidos de logar ou acessar o samba, caso eu não possua essas calls?
3. Há alguma maneira de deixar as estações ubuntu com o compartilhamento montado em forma de atalho na área de trabalho?

Grato!

[27] Comentário enviado por ticopan em 11/05/2012 - 00:45h:

Prezado, boa noite novamente.

Resolvi colocar em prática e implementar seu artigo.

Tudo aparente ocorreu ok nos testes, apenas um detalhe que no momento de listar usuários e grupos, apenas me mostra os grupos e usuário do linux (passwd e group).

Ao tentar entrar nos compartilhamentos, a tela de login não loga corretamente sem apresentar nenhuma mensagem de erro (estou logando através do ubuntu). Simplesmente volta a tela solicitando usuário e senha novamente. Pode me ajudar a corrigir esse problema?


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.