Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalando_e_configurando_samba_com_autenticacao_em_ad_no_centos_6_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando e Configurando Samba com autenticação em AD no CentOS 6 ======
  
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialcentos6_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Para iniciarmos a configuração,​ é necessário a instalação dos pacotes com o comando:
 +<sxh bash>
 +
 +yum install samba samba-winbind samba-winbind-devel samba-client samba-common \
 + ​pam_krb5 cifs-utils samba-winbind-krb5-locator samba-doc -y
 +</​sxh>​
 +
 +Habilitando os serviços para serem inicializados ao ligar o servidor:
 +  * O chkconfig também pode ser usado para configurar um serviço para ser iniciado (ou não) em um nível de execução específico.
 +
 +Por exemplo: para ligar o samba e o winbind nos níveis de execução 3, 4 e 5, use o seguinte comando:
 +<sxh bash>
 +
 +chkconfig --level 234 smb on
 +chkconfig --level 234 winbind on
 +</​sxh>​
 +
 +Ajustando o arquivo de autenticação. Adicione o conteúdo no final do arquivo:
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​system-auth
 +[...]
 +session ​    ​required ​     pam_mkhomedir.so skel=/​etc/​skel/​ umask=0027
 +</​sxh>​
 +
 +Ajustando o arquivo de resolução de Nomes:
 +<sxh bash>
 +
 +vim /​etc/​resolv.conf
 +search douglasqsantos.com.br
 +nameserver 192.168.0.254
 +</​sxh>​
 +
 +
 +Ajustando o arquivo de configuração para autenticação em domínio AD:
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +default_realm = douglasqsantos.com.br
 +krb4_config = /​etc/​krb.conf
 +krb4_realms = /​etc/​krb.realms
 +kdc_timesync = 1
 +ccache_type = 4
 +forwardable = true
 +proxiable = true
 +v4_instance_resolve = false
 +v4_name_convert = {
 +host = {
 +rcmd = host
 +ftp = ftp
 +}
 +plain = {
 +something = something-else
 +}
 +}
 +fcc-mit-ticketflags = true
 +[realms]
 +douglasqsantos.com.br = {
 +kdc = 192.168.0.248
 +admin_server = 192.168.0.248:​749
 +default_server = 192.168.0.248
 +}
 +[domain_realm]
 +.douglasqsantos.com.br=douglasqsantos.com.br
 +douglasqsantos.com.br=douglasqsantos.com.br
 +[login]
 +krb4_convert = true
 +krb4_get_tickets = false
 +[kdc]
 +profile = /​etc/​krb5kdc/​kdc.conf
 +[appdefaults]
 +pam = {
 +debug = false
 +ticket_lifetime = 36000
 +renew_lifetime = 36000
 +forwardable = true
 +krb4_convert = false
 +}
 +[logging]
 +default = file:/​var/​log/​krb5libs.log
 +kdc = file:/​var/​log/​krb5kdc.log
 +admin_server = file:/​var/​log/​kadmind.log
 +</​sxh>​
 +
 +Ajustando o arquivo que determina a ordem a ordem das buscas quando uma informação é requisitada:​
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +passwd: ​    files winbind
 +shadow: ​    files
 +group: ​     files winbind
 +hosts: ​     files dns
 +bootparams: nisplus [NOTFOUND=return] files
 +ethers: ​    files
 +netmasks: ​  files
 +networks: ​  files
 +protocols: ​ files
 +rpc:        files
 +services: ​  files
 +netgroup: ​  ​nisplus
 +publickey: ​ nisplus
 +automount: ​ files nisplus
 +aliases: ​   files nisplus
 +</​sxh>​
 +
 +Ajustando o arquivo de configuração do samba.
 +<sxh bash>
 +
 +vim /​etc/​samba/​smb.conf
 +[global]
 +        workgroup = DOUGLASQSANTOS
 +        realm = douglasqsantos.com.br
 +        server string = Samba Server
 +        security = ADS
 +        auth methods = winbind
 +        password server = 192.168.0.248
 +        log level = 1
 +        log file = /​var/​log/​samba/​samba.log
 +        log file = /​var/​log/​samba/​%D.%U.%m.log
 +        max log size = 1000
 +        follow symlinks = yes
 +        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 +        getwd cache = yes
 +        dead time = 15
 +        wide links = no
 +        debug level = 0
 +        acl compatibility = Auto
 +        aio read size = 16384
 +        max xmit = 65535
 +        read raw = no
 +        write raw = no
 +        large readwrite = yes
 +        strict locking = yes
 +        oplocks = yes
 +        level2 oplocks = yes
 +        load printers = No
 +        printcap name = cups
 +        disable spoolss = Yes
 +        guest account = nobody
 +        local master = No
 +        domain master = No
 +        idmap uid = 10000-30000
 +        idmap gid = 10000-30000
 +        winbind cache time = 15
 +        winbind enum users = Yes
 +        winbind enum groups = Yes
 +        winbind use default domain = Yes
 +        #Arquivos proibidos em qualquer compartilhamento
 +        veto files = /​*.mp3/​*.mp4/​*.wma/​*.avi/​*.divx/​*.mpg/​*.mpeg/​*.rmvb/​*.wmv/​*.scr/​*.inf/​*.ogg/​*.pif
 +        vfs objects = full_audit, recycle
 +        #Auditoria
 +        full_audit:​facility = LOCAL5
 +        full_audit:​priority = NOTICE
 +        full_audit:​success = write, unlink, rename, mkdir, rmdir, chmod, chown
 +        full_audit:​prefix = %P|%U|%I|%m
 +        full_audit:​failure = none
 +        #Controle da Lixeira
 +        recycle:​facility = LOCAL1
 +        recycle:​priority = NOTICE
 +        recycle:​maxsize = 0
 +        recycle:​repository = .recycle/%U
 +        recycle:​directory_mode = 0777
 +        recycle:​subdir_mode = 0777
 +        recycle:​keeptree = True
 +        recycle:​touch = False
 +        recycle:​maxsize = 0
 +        recycle:​versions = True
 +        recycle:​noversions = .doc|.xls|.ppt|.pdf
 +        recycle:​exclude =  *.tmp, ​ *.temp, ​ *.log, ​ *.ldb, ​ *.o,  *.obj, ~*.*,  *.bak, ​ *.iso
 +        recycle:​exclude_dir = tmp, temp, cache
 +
 +[programas]
 +        path = /​srv/​programas
 +        browsable = yes
 +        writable = yes
 +        public = no
 +        guest ok = no
 +        create mask = 0666
 +        directory mask = 0777
 +        force create mode = 0644
 +        force directory mode = 0775
 +        locking = no
 +        vfs objects = recycle, full_audit
 +        #force user = douglas
 +        #force group = @"​%D\ti-admin"​
 +        valid users =  @"​%D\ti-admin",​ @"​%D\ti-estagiarios"​
 +</​sxh>​
 +
 +Vamos tirar o erro que fica aparecendo no samba quando utilizamos o testparm
 +
 +<sxh bash>
 +
 +vim  /​etc/​security/​limits.conf ​
 +[...]
 +#colocar no final do arquivo
 +root hard nofile 131072
 +root soft nofile 65536
 +mioutente hard nofile 32768
 +mioutente soft nofile 16384
 +</​sxh>​
 +
 +Agora vamos criar os diretórios dos compartilhamentos e acertar as permissões
 +
 +Tenho que deixar as permissões iniciais como 777 para que o sistema consiga criar as pastas iniciais.
 +<sxh bash>
 +
 +mkdir -p /​srv/​programas
 +chmod 777 /​srv/​programas
 +</​sxh>​
 +
 +Agora vamos configurar o rsyslog para gerenciar os logs de auditoria do samba no arquivo /​etc/​rsyslog.conf
 +<sxh bash>
 +
 +echo "​local5.notice /​var/​log/​samba/​auditoria.log"​ >> /​etc/​rsyslog.conf
 +</​sxh>​
 +
 +Agora já podemos reiniciar o rsyslog
 +<sxh bash>
 +
 +/​etc/​init.d/​rsyslog restart
 +</​sxh>​
 +
 +
 +No samba criamos 1 compartilhamento para os programas e este esta atribuído permissão para o grupo %D\ti-admins e %D\ti-estagiarios a variável %D vai ser o domínio
 +
 +Então temos que criar esse grupo admins no AD caso não exista e atribuir usuários a ele para que possamos acessar esse compartilhamento,​ este compartilhamento criei somente para exemplificar como vai ser criado compartilhamentos usando grupos do AD 
 +
 +Alterando o arquivo responsável pela forma de autenticação no linux.
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​login
 +#​%PAM-1.0 ​
 +auth       ​sufficient ​   pam_winbind.so
 +auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
 +auth       ​include ​     system-auth
 +
 +
 +account ​   sufficient ​    ​pam_succeed_if.so user ingroup root
 +account ​   required ​   pam_winbind.so
 +account ​   required ​    ​pam_nologin.so
 +account ​   include ​     system-auth
 +#Grupos que vão poder efetuar login no servidor
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +
 +password ​  ​include ​     system-auth
 +# pam_selinux.so close should be the first session rule 
 +
 +session ​   required ​    ​pam_selinux.so close
 +session ​   required ​    ​pam_mkhomedir.so ​       skel=/​etc/​skel umask=0027
 +session ​   include ​     system-auth
 +session ​   required ​    ​pam_loginuid.so
 +session ​   optional ​    ​pam_console.so
 +# pam_selinux.so open should only be followed by sessions to be executed in the user context ​
 +session ​   required ​    ​pam_selinux.so open
 +session ​   optional ​    ​pam_keyinit.so force revoke
 +</​sxh>​
 +
 +Ajustando o arquivo de autenticação do ssh
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​sshd
 +#​%PAM-1.0 ​
 +auth       ​sufficient ​   pam_winbind.so
 +auth       ​include ​     system-auth
 +
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   required ​    ​pam_winbind.so
 +account ​   required ​    ​pam_nologin.so
 +account ​   include ​     system-auth
 +#Grupos que vão poder logar via ssh
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +
 +password ​  ​include ​     system-auth
 +
 +session ​   required ​    ​pam_mkhomedir.so ​       skel=/​etc/​skel umask=0027
 +session ​   optional ​    ​pam_keyinit.so force revoke
 +session ​   include ​     system-auth
 +session ​   required ​    ​pam_loginuid.so
 +</​sxh>​
 +
 +Reiniciando os serviços:
 +<sxh bash>
 +
 +/​etc/​init.d/​smb restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Adicionando a máquina no domínio
 +<sxh bash>
 +
 +net ads join douglasqsantos.com.br -U administrador
 +Enter administrador'​s password: senha
 +Using short domain name -- DOUGLASQSANTOS
 +Joined '​SAMBA'​ to realm '​douglasqsantos.com.br'​
 +</​sxh>​
 +
 +Reiniciando os serviços
 +<sxh bash>
 +
 +/​etc/​init.d/​smb restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Agora já podemos testar a conexão do samba com o AD
 +<sxh bash>
 +
 +wbinfo -t
 +checking the trust secret for domain DOUGLASQSANTOS via RPC calls succeeded
 +</​sxh>​
 +
 +Agora vamos checar os grupos que temos no domínio.
 +<sxh bash>
 +
 +wbinfo -g
 +computadores do domínio
 +controladores de domínio
 +administradores de esquema
 +administradores de empresa
 +editores de certificados
 +admins. do domínio
 +usuários do domínio
 +convidados domínio
 +proprietários criadores de diretiva de grupo
 +servidores ras e ias
 +grupo de replicação de senha rodc permitido
 +grupo de replicação de senha rodc negado
 +controladores de domínio somente leitura
 +controladores de domínio de empresa somente leitura
 +dnsadmins
 +dnsupdateproxy
 +</​sxh>​
 +
 +Agora vamos chegar os usuários do domínio
 +<sxh bash>
 +
 +wbinfo -u
 +SAMBA\nobody
 +SAMBA\douglas
 +administrador
 +convidado
 +krbtgt
 +douglas
 +</​sxh>​
 +
 +Agora vou abordar alguns comandos para manipulação dos compartilhamentos
 +
 +Aqui vamos fazer a listagem o dos compartilhamentos no servidor com o usuário douglas, note que temos que passar DOUGLASQSANTOS/​douglas o primeiro douglas é o domínio e o segundo douglas é o usuário.
 +<sxh bash>
 +
 +smbclient -L //​192.168.0.254 -U DOUGLASQSANTOS/​douglas
 +Enter DOUGLASQSANTOS/​douglas'​s password: senha
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +    Sharename ​      ​Type ​     Comment
 +    --------- ​      ​---- ​     -------
 +    IPC$            IPC       IPC Service (Samba Server)
 +    programas ​      ​Disk ​     Programas
 +        [...]
 +
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +    Server ​              ​Comment
 +    --------- ​           -------
 +    SAMBA                Samba Server
 +
 +    Workgroup ​           Master
 +    --------- ​           -------
 +    DOMINIO ​             SERVER-PC
 +
 +</​sxh>​
 +
 +Agora vamos logar no servidor samba como se fosse um servidor FTP
 +
 +<sxh bash>
 +
 +smbclient //​192.168.0.254/​programas -U DOUGLASQSANTOS/​douglas
 +Enter DOUGLASQSANTOS/​douglas'​s password: ​
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> 
 +</​sxh>​
 +
 +Agora vamos logar novamente no servidor como se fosse um servidor FTP porem informando a senha no prompt
 +<sxh bash>
 +
 +smbclient //​192.168.0.254/​programas -U DOUGLASQSANTOS/​douglas%senha
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> 
 +</​sxh>​
 +
 +Agora vamos efetuar a montagem de um compartilhamento via linha de comando
 +<sxh bash>
 +
 +mkdir /mnt/samba
 +mount.smbfs -o user=DOUGLASQSANTOS/​douglas,​password=senha //​192.168.0.254/​programas /mnt/samba
 +</​sxh>​
 +
 +Agora vamos verificar se obtivemos sucesso
 +<sxh bash>
 +
 +df -Th
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​xvda3 ​    ​xfs ​    ​19G ​ 2,6G   ​17G ​ 14% /
 +tmpfs        tmpfs   ​1003M ​    0 1003M   0% /​lib/​init/​rw
 +udev         ​tmpfs ​   990M   ​80K ​ 990M   1% /dev
 +tmpfs        tmpfs   ​1003M ​    0 1003M   0% /dev/shm
 +/​dev/​xvda1 ​   ext3    184M   ​23M ​ 153M  13% /boot
 +/​dev/​xvdb1 ​    ​xfs ​   400G   ​59G ​ 342G  15% /srv
 +192.168.0.253/​programas/​ cifs    400G   ​59G ​ 342G  15% /mnt/samba
 +</​sxh>​
 +
 +Podemos efetuar a montagem também da seguinte forma vamos obter o mesmo resultado
 +<sxh bash>
 +
 +mount -t cifs //​192.168.0.254/​programas /mnt/samba -o user=DOUGLASQSANTOS/​douglas,​password=senha
 +</​sxh>​
 +
 +Montando no /etc/fstab
 +<sxh bash>
 +//​192.168.0.254/​programas /mnt/samba cifs auto,​credentials=/​etc/​smbcredentials,​workgroup=DOUGLASQSANTOS,​gid=douglas,​uid=douglas,​rw,​noserverino 0 0
 +</​sxh>​
 +
 +Agora precisamos criar o smbcredentials para armazenar as informações de usuário e senha
 +<sxh bash>
 +vim /​etc/​smbcredentials
 +username=douglas
 +password=senha
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões do arquivo
 +<sxh bash>
 +chmod 640 /​etc/​smbcredentials
 +</​sxh>​
 +
 +Agora pra testar é só executar o seguinte comando
 +<sxh bash>
 +mount -a
 +</​sxh>​
 +
 +
 +====== Referências ======
 +
 +  - http://​www.samba.org/​
 +  - http://​www.samba.org/​samba/​docs/​man/​Samba-HOWTO-Collection/​domain-member.html#​ads-member