Compilando Samba 4.6.4 no CentOS 7

Essa semana tive um incidente devido a uma mudança realizada pela Sernet, a fornecedora do pacote SAMBA+ que usamos nas aulas do 452 – Linux Security Server in Cloud da 4Linux. Por conta dessa mudança em suas políticas, toda a aula de SAMBA ficou inutilizada pois precisamos da função Active Directory, e somente o SAMBA+ fornecia a suite pré compilada com essa feature habilitada. Para contornar, foi necessário compilar a partir do código fonte. Apesar do passo a passo ser bem simples, ainda sim decidi registrar no blog para consultas futuras do procedimento.

 

Compilando SAMBA a Partir do Código Fonte

 

Baixe o pacote samba-latest no site oficial para sua máquina. Dê preferência para esse pacote pois ele contém sempre a versão mais recente do serviço (4.6.4 nesse momento).

# wget https://download.samba.org/pub/samba/samba-latest.tar.gz

Baixe também as dependências de compilação do samba através do grupo de instalação “Development Tools”, e os pacotes libgnutls-dev, gnutls-devel, libacl-devel, python-devel, e o openldap-devel.

# yum groupinstall -y "Development Tools"
# yum install -y libgnutls-dev gnutls-devel libacl-devel python-devel openldap-devel

Descompacte o pacote em qualquer lugar de sua máquina e entre dentro do diretório para darmos início a compilação. O processo é bem semelhante a compilação de qualquer outro pacote, sendo somente necessário rodar os comandos ./configure -> make -> make install. Caso a máquina aonde está compilando possui mais de uma CPU, talvez seja interessante compilar usando mais de uma thread. O make recebe o parâmetro “-j <numero>” para que você informe o número de threads que ele utilizar durante o processo de compilação.

# tar -xvzf samba-latest.tar.gz
# cd samba-4.6.4/
# ./configure
# make -j2
# make install

Com isso temos nosso SAMBA compilado e funcionando, porém ainda precisamos fazer algumas modificações em nosso servidor para que facilite nosso dia a dia. A primeira delas é criar uma unit do tipo serviço para que possamos gerenciá-lo através do systemd. Para isso, crie um arquivo chamado samba.service dentro de /etc/systemd/system e coloque as linhas abaixo dentro de seu conteúdo:

# vim /etc/systemd/system/samba.service
[Unit]
Description=Samba AD Daemon
After=syslog.target network.target
 
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/local/samba/sbin/samba $SAMBAOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
 
[Install]
WantedBy=multi-user.target

Note que a opção ExecStart recebe uma variável de ambiente chamada $SAMBAOPTIONS: essa variável será carregada através do arquivo ‘/etc/sysconfig/samba’, assim facilitando a edição futura para ativar ou desativar alguma opção de inicialização do SAMBA. O arquivo pode ter qualquer nome e pode ser salvo em qualquer lugar, porém lembre-se de informar o caminho completo dele dentro da unit do systemd que você criou, dentro da variável ‘EnvironmnetFile’. Nesse primeiro momento, nossa variável só terá a opção ‘-D’ pra daemonizar o processo do samba:

# vim /etc/sysconfig/samba

SAMBAOPTIONS="-D"

Execute o comando systemctl daemon-reload para que o systemd comece a enxergar a nova unit que você criou, e então habilite a inicialização durante o processo de boot do servidor. Ao compilar seu SAMBA a partir do código fonte, ele não terá um arquivo smb.conf, sendo necessário você criar um pois é uma dependência do processo. Nesse primeiro momento você pode colocar qualquer conteúdo dentro dele seguindo a sintaxe do smb.conf, o importante é que o arquivo exista para validar se o serviço do SAMBA irá inicializar ou não.

# systemctl daemon-reload
# systemctl enable samba
# vim /usr/local/samba/etc/smb.conf
[global] 
    workgroup = HEARTOFGOLD 
    netbios name = ZAPHORD 
    security = share

# systemctl start samba

Por ultimo, para facilitar seu dia a dia, altere a variável $PATH do Linux para que reconheça também os diretórios /usr/local/samba/bin e /usr/local/samba/sbin, pois são esses diretórios aonde ficam localizados todos os binários do SAMBA (como por exemplo o samba-tool e o testparm). Para alterar permanentemente sua variável $PATH, crie um arquivo chamado samba.sh dentro de /etc/profile.d/ e coloque as linhas abaixo dentro dele.

# vim /etc/profile.d/samba.sh
SAMBA_PATH="/usr/local/samba/bin:/usr/local/samba/sbin"
export PATH=$PATH:$SAMBA_PATH

Faça logoff/logon com seu usuário, ou execute o comando source para ler o arquivo samba.sh, e então execute o comando samba-tool sem passar o caminho completo dele. Se tudo der certo, deverá exibir o help do comando, caso contrário verifique se o arquivo anterior foi criado corretamente e tente novamente.

Com isso temos nosso servidor de SAMBA pronto para uso, bastando prosseguir agora com a criação e configuração de seu domínio. Abaixo segue o link dos sites que usei de consulta para compilar durante a criação de meu laboratório:

Links

  • https://wiki.samba.org/index.php/Managing_the_Samba_AD_DC_Service_Using_Systemd
  • https://conradjonesit.wordpress.com/2013/06/24/building-a-samba4-domain-controller-on-opensuse-12-3/
  • https://wiki.samba.org/index.php/Build_Samba_from_Source

One thought to “Compilando Samba 4.6.4 no CentOS 7”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *