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:
yum install samba samba-winbind samba-winbind-devel samba-client samba-common \ pam_krb5 cifs-utils samba-winbind-krb5-locator samba-doc -y
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:
chkconfig --level 234 smb on chkconfig --level 234 winbind on
Ajustando o arquivo de autenticação. Adicione o conteúdo no final do arquivo:
vim /etc/pam.d/system-auth [...] session required pam_mkhomedir.so skel=/etc/skel/ umask=0027
Ajustando o arquivo de resolução de Nomes:
vim /etc/resolv.conf search douglasqsantos.com.br nameserver 192.168.0.254
Ajustando o arquivo de configuração para autenticação em domínio AD:
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
Ajustando o arquivo que determina a ordem a ordem das buscas quando uma informação é requisitada:
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
Ajustando o arquivo de configuração do samba.
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"
Vamos tirar o erro que fica aparecendo no samba quando utilizamos o testparm
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
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.
mkdir -p /srv/programas chmod 777 /srv/programas
Agora vamos configurar o rsyslog para gerenciar os logs de auditoria do samba no arquivo /etc/rsyslog.conf
echo "local5.notice /var/log/samba/auditoria.log" >> /etc/rsyslog.conf
Agora já podemos reiniciar o rsyslog
/etc/init.d/rsyslog restart
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.
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
Ajustando o arquivo de autenticação do ssh
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
Reiniciando os serviços:
/etc/init.d/smb restart /etc/init.d/winbind restart
Adicionando a máquina no domínio
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'
Reiniciando os serviços
/etc/init.d/smb restart /etc/init.d/winbind restart
Agora já podemos testar a conexão do samba com o AD
wbinfo -t checking the trust secret for domain DOUGLASQSANTOS via RPC calls succeeded
Agora vamos checar os grupos que temos no domínio.
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
Agora vamos chegar os usuários do domínio
wbinfo -u SAMBA\nobody SAMBA\douglas administrador convidado krbtgt douglas
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.
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
Agora vamos logar no servidor samba como se fosse um servidor FTP
smbclient //192.168.0.254/programas -U DOUGLASQSANTOS/douglas Enter DOUGLASQSANTOS/douglas's password: Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6] smb: \>
Agora vamos logar novamente no servidor como se fosse um servidor FTP porem informando a senha no prompt
smbclient //192.168.0.254/programas -U DOUGLASQSANTOS/douglas%senha Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6] smb: \>
Agora vamos efetuar a montagem de um compartilhamento via linha de comando
mkdir /mnt/samba mount.smbfs -o user=DOUGLASQSANTOS/douglas,password=senha //192.168.0.254/programas /mnt/samba
Agora vamos verificar se obtivemos sucesso
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
Podemos efetuar a montagem também da seguinte forma vamos obter o mesmo resultado
mount -t cifs //192.168.0.254/programas /mnt/samba -o user=DOUGLASQSANTOS/douglas,password=senha
Montando no /etc/fstab
//192.168.0.254/programas /mnt/samba cifs auto,credentials=/etc/smbcredentials,workgroup=DOUGLASQSANTOS,gid=douglas,uid=douglas,rw,noserverino 0 0
Agora precisamos criar o smbcredentials para armazenar as informações de usuário e senha
vim /etc/smbcredentials username=douglas password=senha
Agora vamos ajustar as permissões do arquivo
chmod 640 /etc/smbcredentials
Agora pra testar é só executar o seguinte comando
mount -a