Samba 4
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: https://wiki.projetoroot.com.br/index.php?title=Samba_4#Utilidades_vistas_nos_v.C3.ADdeos
/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 [email protected]
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 vistas 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