Hoje trago dicas de como configurar o arquivo de configuração do samba: smb.conf.
Primeiros Passos, Iniciando o Samba
Antes de tudo inicie o samba. Podemos iniciar ou através do arquivo “/usr/local/samba/sbin/samba”
elder@server01:~$ sudo /usr/local/samba/sbin/samba
Ou pelo systemd. Para configurar o samba no systemd siga esse tutorial: Samba 006: Automatizar o Samba como Serviço para start e stop no systemd. Após configurado no systemd basta executar
elder@server01:~$ sudo systemctl start samba
Sempre Use testparm para Validar as Configurações de smb.conf
a Ferramenta testparm fica dentro de “/usr/local/samba/bin/”.
Se usarmos o comando abaixo iremos validar /usr/local/samba/etc/smb.conf
/usr/local/samba/bin/testparm
Se quisermos validar uma cópia do smb.conf basta apenas colocarmos o arquivo na frente. Vamos supor que tenho a cópia de smb.conf que se chama smb.conf.bkp, para validar a smb.conf.bkp faremos
/usr/local/samba/bin/testparm /usr/local/samba/etc/smb.conf.bkp
Para encurtar o texto podemos usar antes o comando “cd” para entrarmos na pasta mais próxima. O comando abaixo terá o mesmo resultado que o de cima.
cd /usr/local/samba/bin sudo ./testparm ../etc/smb.conf.bkp
Acima usei “./” e “../”
- ./ = A pasta atual. Ao usar ./ acima disse que quero acessar o arquivo testparm que está dentro da pasta acessada atualmente, ou seja: /usr/local/samba/bin
- ../ = A pasta anterior. Ao usar ../ acima quis acessar o arquivo smb.conf.bkp que está na pasta /usr/local/samba/.
Faça Alterações em uma Cópia do smb.conf
É recomendado fazer copiar o arquivo smb.conf, alterar a cópia. Após as alterações sobrescreva o arquivo smb.conf. Vamos exemplificar:
Como exemplo de alteração iremos criar a pasta “/Documentos” e compartilhar ela.
Crie a pasta “/Documentos”
elder@server01:~$ sudo mkdir /Documentos
Vamos criar uma cópia do smb.conf e alterá-la
elder@server01:~$ cd /usr/local/samba/etc/ elder@server01:/usr/local/samba/etc$ sudo cp ./smb.conf ./smb.conf.bkp
Acima acessei a pasta /usr/local/samba/etc/ e em seguida gerei a cópia smb.conf.bkp
Agora usaremos um editor de texto para alterarmos a cópia. Usarei o editor vim.
elder@server01:/usr/local/samba/etc$ vim ./smb.conf.bkp
Ao final do arquivo smb.conf.bkp adicione o seguinte
[Documentos]
path = /Documentos
read only = No
Veja como ficou meu Arquivo:
elder@server01:/usr/local/samba/etc$ cat smb.conf.bkp # Global parameters [global] dns forwarder = 8.8.8.8 netbios name = SERVER01 realm = EMPRESA100.LOCAL server role = active directory domain controller workgroup = EMPRESA100 [sysvol] path = /usr/local/samba/var/locks/sysvol read only = No [netlogon] path = /usr/local/samba/var/locks/sysvol/empresa100.local/scripts read only = No [Documentos] path = /Documentos read only = No
Valide as configurações com testparm
elder@server01:/usr/local/samba/etc$ sudo ../bin/testparm ./smb.conf.bkp Load smb config files from ./smb.conf.bkp Loaded services file OK. Weak crypto is allowed Server role: ROLE_ACTIVE_DIRECTORY_DC Press enter to see a dump of your service definitions # Global parameters [global] dns forwarder = 8.8.8.8 passdb backend = samba_dsdb realm = EMPRESA100.LOCAL server role = active directory domain controller workgroup = EMPRESA100 rpc_server:tcpip = no ....... idmap config * : backend = tdb map archive = No vfs objects = dfs_samba4 acl_xattr ......... [Documentos] path = /Documentos read only = No
Acima, apaguei algumas linhas de texto para resumir; também separei por cores. Primeiramente aparece a parte laranja com alguns avisos. Vemos que
- Load smb config files from ./smb.conf.bkp: O arquivo testado por testparm é o smb.conf.bkp ao invés de smb.conf
- Loaded services file OK: os serviços estão ok.
- Weak crypto is allowed: Aqui um alerta avisando que algorítimo de criptografia fraca está sendo permitido. Podemos ignorar esse alerta. Para manter compatibilidade com versões anteriores o SMB requer uso de criptografias consideradas fracas.
- Server role: ROLE_ACTIVE_DIRECTORY_DC: Aqui apenas somos avisados da função que nosso samba está desempenhando, que é um Active Directory e Controlador de Domínio(DC)
Não temos com que nos preocupar até então. A próxima linha nos pede para teclar enter para despejar/jogar(dump) na tela as configurações do smb.conf
Press enter to see a dump of your service definitions
Se testparm avaliar como OK as configurações ele joga na tela(stdout) a nossa configuração.
Já que está ok nossa configuração iremos sobrescrever smb.conf. Para isso iremos renomear smb.conf.bkp para smb.conf. lembrando que em Linux não existe uma ferramenta para renomear. Na verdade é usado o comando mv para ‘movermos’ o arquivo. Usaremos o comando “sudo mv ./smb.conf.bkp ./smb.conf”
elder@server01:/usr/local/samba/etc$ sudo mv ./smb.conf.bkp ./smb.conf
testparm: Simulando Erro de Digitação em smb.conf
Em smb.conf propositadamente digitei “read only = Nooo” ao invés de “read only = No” Vamos ver como testparm reage.
elder@server01:/usr/local/samba$ sudo ./bin/testparm ./etc/smb.conf.bkp Load smb config files from ./etc/smb.conf.bkp set_variable_helper(Nooo): value is not boolean! Error loading services.
Na linha abaixo ele diz que houve um erro. O valor deve ser “yes” ou “no”, ou seja, deve ser um valor booleano:
set_variable_helper(Nooo): value is not boolean!
A terceira linha ele disse que os serviços do samba não foram carregados
Error loading services.
Por que Devemos Usar uma Cópia do smb.conf?
Isso é apenas uma recomendação. Se quiser pode alterar diretamente o arquivo smb.conf.
Precisamos saber de uma coisa: O samba recarrega(reload) suas configurações automaticamente a cada 3 minutos. Por isso é bom alterarmos a cópia para evitar esse reload enquanto alteramos.
Aqui estou falando de reload das configurações e não restart(reinício) dos servicos. Pois no samba podemos aplicar as configurações alteradas sem precisar reiniciar o samba em si.
o reload que acontece a cada 3 minutos também pode ser feito manualmente com o comando abaixo:
elder@server01:~$ sudo /usr/local/samba/bin/smbcontrol all reload-config
Já para reiniciar o serviço do samba podemos fazer assim:
Parar o samba
elder@server01:~$ sudo killall samba
Iniciando novamente
elder@server01:~$ sudo /usr/local/samba/sbin/samba
Procure Sempre Usar ./ e ../ ao Usar o Caminho Relativo das Pastas
Acima já usamos bastante ./ e ../ mas por que estou recomendado o uso deles aqui em um artigo que fala sobre samba?
Simplesmente porque já parei o samba em um servidor em produção ao usar tab para autocompletar. O tab ao invés de completar samba.. com samba-tool acabou completando com samba-restore. Digitei tudo tão rapidamente que só percebi o erro quando os usuários me falaram que não conseguiam acessar pastas compartilhadas.
Se estiver dentro de /usr/local/samba/bin e for usar samba-tool procure digitar ./samba-tool ao invés de apenas samba-tool.