ATENÇÃO:
Todo comando abaixo será acompanhado de uma #, para caso copie e cole em seu servidor não corra o risco da execução imediata.
Obs: Este
Samba foi compilado em um
Servidor com
Sistema Operacional Oracle Linux 8 versão 8.6 e
Kernel 4.18.0-372.9.1.el8.x86_64
Vamos iniciar a nossa configuração:
# vim /etc/profile
Logo após
unset -f pathmunge, cole o conteúdo abaixo e salve o arquivo:
SAMBA_HOME=/samba4
PATH=$PATH:$SAMBA_HOME/bin
export PATH SAMBA_HOME
Agora execute:
# . /etc/profile
Neste momento vamos configurar o SELinux para permitir o restante da configuração:
# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config && setenforce 0
Este comando valida se a configuração do Selinux esta como permissive
# getenforce
Vamos nomear o nosso
Servidor através do hosts:
# vim /etc/hosts
{ipservidor} servidor.{nomedodominio}.domain servidor
Agora vamos alterar temporariamente o nome de seu servidor:
# hostname servidor
Adicionando as Regras no firewall do Linux:
# firewall-cmd --permanent --add-service=samba && firewall-cmd --permanent --add-service=samba-dc && firewall-cmd --reload
Desabilitar resolução de nomes do Linux no systemd:
# systemctl stop systemd-resolved.service
# systemctl disable systemd-resolved.service
Instalando as dependências:
# dnf config-manager --set-enabled ol8_codeready_builder
# dnf install -y @Development\ Tools cups-devel dbus-devel python3-markdown perl-JSON docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel keyutils-libs-devel krb5-workstation libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography python3-dns python3-gpg python36-devel readline-devel rpcgen systemd-devel tar zlib-devel htop
Vamos fazer o download e extrair o código fonte:
# cd /tmp/
# wget https://download.samba.org/pub/samba/stable/samba-4.17.4.tar.gz
# tar -xvzf samba-4.17.4.tar.gz -C /tmp/samba-4.17.4/
Compilando o
Samba:
# cd /tmp/samba-4.17.4/
# ./configure --prefix=/usr/local/samba4
# make && make install
Agora vamos provisionar o domínio:
# cd /usr/local/samba4/sbin/
# ./samba-tool domain provision --use-rfc2307 --server-role=dc --realm={nomedominio}.domain --domain={nome} --adminpass=senha001 --option="interfaces=lo {placaredelocal}" --option="bind interfaces only=yes" --option="dns forwarder={gateway}" --host-name=servidor --host-ip={ipservidor} --dns-backend=SAMBA_INTERNAL
Configurando o kerberos do
Servidor:
# cp -vbf /usr/local/samba4/private/krb5.conf /etc/krb5.conf
Configurando o winbind do servidor:
# ln -s /usr/local/samba4/lib/libnss_winbind.so.2 /lib64/
# ln -s /lib64/libnss_winbind.so.2 /lib64/libnss_winbind.so
# ldconfig
# sed -i s/^passwd:\ .*$/passwd:\ files\ sss\ systemd\ winbind/ /etc/nsswitch.conf
# sed -i s/^group:\ .*$/group:\ files\ sss\ systemd\ winbind/ /etc/nsswitch.conf
Criando e habilitando o serviço systemd:
# cp /tmp/samba-4.17.4/bin/default/packaging/systemd/samba.service /etc/systemd/system/samba-ad-dc.service
# mkdir -p /usr/local/samba4/etc/sysconfig
# echo SAMBAOPTIONS=\"-D\" > /usr/local/samba4/etc/sysconfig/samba
# systemctl daemon-reload
# systemctl start samba-ad-dc.service
Habilitando o log de auditoria:
# echo local5.alert /var/log/samba/samba-full_audit.log > /etc/rsyslog.d/samba-full-audit.conf
# echo local5.alert /var/log/samba/samba-full_audit.log >> /etc/rsyslog.conf
# systemctl restart rsyslog.service
Habilitar o gerenciamento de permissões para utilização da ferramenta Rsat do Windows, utilizaremos um diretório chamado dados, que utilizaremos para teste posterior:
# mkdir /dados/
# net rpc rights grant '{nomedodominio}\Domain Admins' SeDiskOperatorPrivilege -U '{nomedodominio}\administrator'
# chgrp -v '{nomedodominio}\Domain Admins' /dados/
Vamos desabilitar cliente ntp systemd, pois o
Samba utilizará o horário do servidor:
# systemctl stop systemd-timesyncd.service
# systemctl disabled systemd-timesyncd.service
Vamos editar as informações abaixo de acordo com o cenário do cliente em questão:
# vim /etc/chrony.conf
allow {redelocalservidor}/24
bindaddress {ipservidor}
Abaixo segue um modelo de smb.conf; na seção Global logo após idmap_ldb:use rfc2307, cole as informações abaixo:
security = user
invalid users = root
guest account = nobody
smb passwd file = /usr/local/samba4/bin/smbpasswd
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
template shell = /bin/false
vfs objects = dfs_samba4 recycle full_audit acl_xattr
log file = /var/log/samba/%U.log
max log size = 50
log level = 2
full_audit:facility = local5
full_audit:priority = notice
full_audit:prefix = %u|%I|%S
full_audit:success = renameat rewinddir unlinkat
full_audit:failure = none
idmap config * : range = 16777216-33554431
idmap config * : backend = tdb
idmap config {nomedominio}:schema_mode = rfc2307
idmap config {nomedominio}:unix_nss_info = yes
map acl inherit = yes
store dos attributes = yes
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
ldap server require strong auth = no
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind offline logon = yes
winbind nss info = rfc2307
Abaixo do
netlogon cole as instruções abaixo:
[dados]
path = /dados/
browseable = yes
write list = @cliente
valid users = @cliente
Para testarmos as nossas configurações segue abaixo alguns comandos:
# /usr/local/samba4/bin/wbinfo --ping-dc
# /usr/local/samba4/bin/wbinfo -u
# host -t SRV _ldap._tcp.{nomedominio}.domain
# host -t SRV _kerberos._udp.{nomedominio}.domain
# host -t A servidor.{nomedominio}.domain
# getent passwd
# getent group
# cd /usr/local/samba4/bin
# ./smbclient -L localhost -U administrator