Samba 4

De Wiki Projeto Root
Revisão de 13h43min de 17 de setembro de 2017 por Diegocosta (discussão | contribs) (Samba 4)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Sobre

Olá! Visitante, reunimos aqui, informações sobre o software Samba. não sabe o que é o samba? Samba é um programa de computador, utilizado em sistemas operacionais do tipo Unix, que simula um servidor Windows, permitindo que seja feito gerenciamento e compartilhamento de arquivos em uma rede Microsoft.Na versão 3, o Samba não só provê arquivos e serviços de impressão para vários Clientes Windows, como pode também integrar-se com Windows Server Domain, tanto como Primary Domain Controller (PDC) ou como um Domain Member. Pode fazer parte também de um Active Directory Domain, mas apenas na Versão 4, o samba começou a ser implementado com mais aceitação em muitas empresas, pois com o samba 4, além de poder ingressar em domínios, também é possível criar e gerenciar GPO's, que na sua versão 3, não tinha suporte.


Vídeos

Parte 01 - https://youtu.be/pk8fEX6eko4

Parte 02 - https://youtu.be/ByasC-EiDts

Parte 03 - https://youtu.be/afzumOOHn1g

Parte 04 - https://youtu.be/YvWmufFixks

Tira dúvidas - https://youtu.be/fQK5aYx3PTM

Backup e Restore - https://youtu.be/UpPzzSCm4po

Compilando e Instalando Samba 4 - Debian

Dependências para Instalação do Samba 4 até o Debian 7.6:

  apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev 
  python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl 
  libcups2-dev libkrb5-dev libssl-dev python-software-properties acl quota
  
  *PARA DEBIAN 8: troque nas dependências  
  libgnutls-dev por libgnutls28-dev

Baixando o Fonte

Fonte exibido no vídeo: https://download.samba.org/pub/samba/stable/samba-4.1.16.tar.gz

Atualmente (08/08/2017): https://download.samba.org/pub/samba/stable/samba-4.6.7.tar.gz

Para fazer o Download direto no servidor na pasta do root, utilizar o wget

  cd /root
  wget https://download.samba.org/pub/samba/stable/samba-4.6.7.tar.gz


Extraindo o Fonte

  • Extrair na pasta root para poder compilar e instalar
   cd /root
   tar -zxvf samba-4.6.7.tar.gz
  • Entrar na pasta
  cd /root/samba-4.6.7
  • Preparando a compilação com ./configure
  ./configure
  • Compilando
  make
  • Instalando o pacote Compilado
  make install

Provisionando o Samba 4 Como PDC

Para que o samba 4 seja o controlador de domínio, é necessário utilizar o comando samba-tool com o parâmetro para provisionar.

  • Para configurações avançadas veja:
 /usr/local/samba/bin/samba-tool domain provision 

Preencher com os dados de domínio seguindo o exemplo abaixo:

  REALM: INTRANET.PROJETOROOT.COM.BR
  DOMAIN: INTRANET
  SERVER ROLE: DC
  DNS BACKEND:SAMBA_INTERNAL
  DNS FORWARDER: GATEWAY DE REDE (192.168.0.1)
  ADMIN PASSWORD: S3NH@_S3GuR@

Configurando o resolv.conf

Para que o samba possa resolver primeiramente os endereços IPs em Nomes, é necessário alterar em /etc/resolv.conf o conteúdo conforme o exemplo abaixo:

   nano /etc/resolv.conf
   domain INTRANET.PROJETOROOT.COM.BR
   nameserver 192.168.0.100 #(IP do SAMBA 4)

Realizando Testes

Para saber se o provisionamento funcionou é necessário executar os testes abaixo:

  • Verificar a versão do samba client
  /usr/local/samba/bin/smbclient --version
  • Verificar se o client está acessando localhost
  /usr/local/samba/bin/smbclient -L localhost -U%
  • Verificar se o smb.conf está correto
  /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'S3NH@_S3GuR@'
   
  • Verificar o protocolo ldap
  host -t SRV _ldap._tcp.intranet.projetoroot.com.br.
  
  • Verificar o Kerberos
  host -t SRV _kerberos._udp.intranet.projetoroot.com.br.
  • Verificar resolução de nomes no samba 4
  host -t A samba.intranet.projetoroot.com.br.

  • Verificar a conf do Kerberos
  nano /usr/local/samba/private/krb5.conf
   [libdefaults]
          default_realm = INTRANET.PROJETOROOT.COM.BR
          dns_lookup_realm = false
          dns_lookup_kdc = true
  • Verificar se o usuário Administrator está acessível com o comando Kinit
   kinit administrator@INTRANET.PROJETOROOT.COM.BR


Script de inicialização

Necessário apenas para quem compilou o samba 4, em distros que existe o binário, não existe a necessidade de criar o script abaixo.

   #! /bin/bash
   
   ### BEGIN INIT INFO
   # Provides:          samba
   # Required-Start:    $network $local_fs $remote_fs
   # Required-Stop:     $network $local_fs $remote_fs
   # Default-Start:     2 3 4 5
   # Default-Stop:      0 1 6
   # Short-Description: start Samba daemons 
   ### END INIT INFO
   
   #
   # Start/stops the Samba daemon (samba).
   # Adapted from the Samba 3 packages.
   #
   
   SAMBAPID=/etc/samba/var/run/samba.pid
   
   # clear conflicting settings from the environment
   unset TMPDIR
   
   # See if the daemon and the config file are there
   test -x /etc/samba/sbin -a -r /etc/samba/etc/smb.conf || exit 0
   
   . /lib/lsb/init-functions
   
   case "$1" in
   	start)
   		log_daemon_msg "Starting Samba 4 daemon" "samba"
   
   		if ! start-stop-daemon --start --quiet --oknodo --exec /etc/samba/sbin/samba -- -D; then
   			log_end_msg 1
   			exit 1
   		fi
   
   		log_end_msg 0
   		;;
   	stop)
   		log_daemon_msg "Stopping Samba 4 daemon" "samba"
   
   		start-stop-daemon --stop --quiet --name samba $SAMBAPID
   		# Wait a little and remove stale PID file
   		sleep 1
   		if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
   		then
   			# Stale PID file (samba was succesfully stopped),
   			# remove it (should be removed by samba itself IMHO.)
   			rm -f $SAMBAPID
   		fi
   
   		log_end_msg 0
   
   		;;
   	restart|force-reload)
   		$0 stop
   		sleep 1
   		$0 start
   		;;
   	*)
   		echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
   		exit 1
   		;;
   esac
   
   exit 0
   


Comandos do Samba 4

  • Obs1: para executar esses comandos sem ter digitar o caminho completo

Exemplo:

   samba-tool /opt/samba/bin/samba-tool

Exportar a variável path do local da instalação do Samba 4 isso pode ser feito da seguinte forma.

   export PATH=$PATH:"/opt/samba/bin:/opt/samba/sbin"


  • obs2: para melhorar a visualização na Wiki, removeu-se a marcação de superuser root (#), então para tal, é necessário executar os comandos abaixo sendo o super usuário, ou seja, o root.

Exemplo:

  sudo su -


Usuários

Os comandos abaixo, são executados no Shell Linux, quando é necessário fazer alterações em usuários e senhas de usuários.


Trocar senha do usuário

   samba-tool user setpassword usuario --newpassword=123NovaSenha123

Trocar senha do usuário e forca a troca no Próximo Login

  samba-tool user setpassword usuario --newpassword=1234MudarSenha123 --must-change-at-next-login

Deletar Usuário

  samba-tool user delete usuario

Deletar Usuário e Deletar a sua pasta Home

  samba-tool user delete usuario && rm -r /home/samba/usuario

Listar Todos os Usuários do samba

  samba-tool user list

Desabilitar o Usuário (com essa opção a conta não pode ser utilizada mais permanece no servidor)

  samba-tool user disable usuario

Habilitar Usuário

 samba-tool user enable usuario

Expiração de senha do usuário

  • A expiração de senha para todos os usuários do domínio e feita com outro comando, essa altera somente do usuário especificado. ( bom para ser usado em certas exceções como por exemplo aquele diretor que insiste em ser uma exceção a regra ). Onde 10, é o numero de dias em que a senha ira expirar.
  samba-tool user setexpiry usuario --days=10

Desabilitar a expiração de senha

  samba-tool user setexpiry usuario --noexpiry

Para alterar a complexidade de senha do Samba 4 utilize o comando samba-tool.

O comando para listar as regras de política de senha:

 samba-tool domain passwordsettings show

Já para desativar ou fazer alterações:

 samba-tool domain passwordsettings set --complexity=off --history-length=0 --min-pwd-length=0 --min-pwd-age=0

Desativar a verificação de complexidade de senha (por padrão a senha de qualquer usuário deve ter pelo menos três dos quatro ítens: Maiúsculas, Minusculas, Números, Simbolos):

 samba-tool domain passwordsettings set --complexity=off

Alterar o tamanho mínimo da senha, por exemplo para 6:

  samba-tool domain passwordsettings set --min-pwd-length=6

Alterar o prazo mínimo em que o usuário pode mudar a senha (usuário só vai poder mudar a senha após 4 dias da última mudança)

  samba-tool domain passwordsettings set --min-pwd-age=4

Mudar o tempo de vida máximo da senha do usuário (usuário terá que mudar a senha após 30 dias da última mudança)

  samba-tool domain passwordsettings set --max-pwd-age=30

Mudar o histórico de senhas que impede que o usuário utilize uma senha repetida (usuário não vai poder repetir nenhuma das últimas 5 senhas)

 samba-tool domain passwordsettings set --history-length=5

Para mudar a senha de um usuário do domínio dentro do windows xp basta logar com o usuário, pressionar ctrl+alt+del e clicar em alterar senha.


Grupos

Os comandos abaixo, são executados no Shell Linux, quando é necessário fazer alterações em grupos, assim podendo organizar a estrutura do AD, dentro de grupos, adicionado cada usuário em seu determinado grupo.

Criar um grupo

 samba-tool group add compras

Adicionar Vários Grupos de uma vez

 samba-tool group add "compras juridico"

Criar um grupo e adicionar um descrição ao grupo

 samba-tool group add compras --description="Grupo da compras"

Adicionar um membro a um grupo

 samba-tool group addmembers compras usuario

Adicionar um Grupo dentro de Outro Grupo (No samba 4 podemos adicionar um grupos dentro de outro isso e muito útil)

 samba-tool group addmembers compras juridico

Adicionar Vários Membros a um grupo de uma vez só

 samba-tool group addmembers compras "usuario1,usuario2"

Remover um grupo

 samba-tool group delete compras

Removendo Vários grupos de uma vez

 samba-tool group delete "compras juridico"

Remover um membro de um grupo

 samba-tool group removemembers compras usuario

Remover Membros de um grupo

 samba-tool group removemembers compras “usuario,usuario2″

Listar todos os grupos

 samba-tool group list

Listar Usuários pertencente a um grupo

 samba-tool group listmembers compras

Utilidades vista nos vídeos

Para provisionar o AD/DC utilizar o comando provision

  samba-tool domain provision --use-rfc2307 --use-xattrs=yes --interactive

Onde: --use- RFC2307: Este argumento acrescenta POSIX atributos (UID / GID) para o esquema AD . Isto será necessário se você pretende autenticar Linux , BSD, ou clientes OS X (incluindo a máquina local ) , além de Microsoft Windows .

--use- xattrs = yes : Esse argumento permite o uso de unix atributos estendidos (ACLs) para arquivos hospedados neste servidor. Se você não pretende ter compartilhamentos de arquivos no controlador de domínio , você pode omitir essa opção (mas isso não é recomendado ) . Você também deve garantir que quaisquer sistemas de arquivos que sediarão as partilhas do Samba são montados com suporte para ACLs.

--interactive : Este parâmetro força o script disposição para executar de forma interativa.


Montar Compartilhamento no FSTAB

  nano /etc/fstab
  /dev/sdXX     /mnt/samba/     ext4      user_xattr,acl,barrier=1      1 1


Adicionar no smb.conf

   Global
    vfs objects = acl_xattr
    map acl inherit = Yes
    store dos attributes = Yes

Para gerenciar o compartilhamento

  /usr/local/samba/bin/./net rpc rights grant 'INTRANET\Domain Admins' SeDiskOperatorPrivilege -U'INTRANET\administrator'

Para verificar se esta ok

  /usr/local/samba/bin/./net rpc rights list accounts -U'INTRANET\administrator'

Reload samba config

  smbcontrol all reload-config


Padrão de Definição de Segurança da Microsoft SDDL = Secutity Descriptor Definition Language


samba-tool ntacl set <ACL> /pasta_compartilhada

   samba-tool ntacl set'O:S-1-5-21-2159416005-224523052-165761012-1549G:DUD:(A;OICI;0x001f01ff;;;S-1-5-21-2159416005-224523052-
   165761012-1549)(A;OICI;0x001200a9;;;DU)(A;OICI;0x001200a9;;;WD)(A;;0x001200a9;;;DU)(A;;0x001f01ff;;;S-1-5-21-2159416005-
   224523052-165761012-1549)(A;OICIIO;0x001f01ff;;;CO)(A;OICIIO;0x001200a9;;;CG)' /pasta_compartilhada