Antes de tudo é bom frisar que, nesse momento que escreto esse artigo, samba 4.16 é a versão atual estável e é suportado somente em versões 8 do Oracle Linux e do Rocky Linux.
Informações do meu Servidor
- Distro: Rocky Linux 8
- Nome do servidor: rockyserver
- Nome completo: rockyserver.lab.local
- Domínio: lab.local
- Endereço ip: 192.168.0.46
Preparando para Instalação
Antes de instalarmos, verifique:
Hostname
#1 Confira o nome(hostname) do servidor na rede
[elder@localhost /]$ hostname
localhost.localhost
O nome do meu servidor está localhost.localhost e isso não é nada apropriado. Vamos alterar para rockyserver.
sudo hostnamectl set-hostname rockyserver
Aqui é importante sair(log off) e entrar(log on) novamente do terminal.
#2 Configure o o arquivo /etc/hosts para apontar o hostname rockyserver para nosso endereço ip 192.168.0.48
Irei editar /etc/hosts usando o vim
sudo vim /etc/hosts
Adicionei o seguinte linha em laranja:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.48 rockyserver.lab.local rockyserver.lab rockyserver
Confirme se o nome completo(QFDN) aparece
[elder@localhost /]$ hostname -f
rockyserver.lab.local
Data e Horário
[elder@localhost /]$ date
qua jun 8 17:39:59 EDT 2022
Se estiver errada corrija com “date mês + dia + hora + minuto + ano”. Por exemplo, abaixo irei definir a data e horário para: 01/02/2021 12:41
[elder@empresa10 ~]$ sudo date 020112412021
Endereço IP fixo
As distros baseadas na Red Hat 8 usam o NetworkManager para gerenciar rede. Escolha um endereço IP para seu servidor, no meu caso será o 192.168.0.48
#1 Execute “sudo nmtui“. Escolha a interface
[elder@localhost /]$ sudo nmtui
#2 Escolha “Editar uma conexão”
Obs.: Veja que também podemos alterar o nome da máquina por aqui, assim como fizemos usando “hostnamectl set-hostname”
┌───────┤ NetworkManager TUI ├───────┐ │ │ │ Por favor selecione uma opção │ │ │ │ Editar uma conexão │ │ Ativar uma conexão │ │ Definir nome de máquina do sistema │ │ │ │ Cancelar │ │ │ │ <OK> │ │ │ └────────────────────────────────────┘
#3 Escolha a interface de rede a ser editada. No meu caso é a enp0s3
│ │ │ ┌─────────────┐ │ │ │ Ethernet ↑ │ <Adicionar> │ │ │ enp0s3 ▒ │ │ │ │ ▒ │ <Editar…> │ │ │ ▒ │ │ │ │ ▒ │ <Remover> │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ ┌──│ │ ▒ │ │ ──┐ │ │ │ ▒ │ │ │
#4 Deixe a configuração semelhante a essa:
┌────────────────────────────┤ Editar conexão ├─────────────────────────────┐ │ │ │ Nome do perfil enp0s3__________________________________ │ │ Dispositivo enp0s3 (08:00:27:7F:DC:DF)______________ │ │ │ │ ═ ETHERNET <Exibir> │ │ │ │ ╤ CONFIGURAÇÃO IPv4 <Manual> <Ocultar> │ │ │ Endereços 192.168.0.46/24__________ <Remover> │ │ │ <Adicionar…> │ │ │ Gateway 192.168.0.1______________ │ │ │ Servidores DNS 192.168.0.46__________________ <Remover> │ │ │ 8.8.8.8__________________ <Remover> │ │ │ <Adicionar…> │ │ │ Domínios de pesquisa lab.local________________ <Remover> │ │ │ <Adicionar…> │ │ │ │ │ │ Roteamento (Nenhuma rota personalizada) <Editar…> │ │ │ [ ] Nunca usar esta rede para rota padrão │ │ │ [ ] Ignorar rotas obtidas automaticamente │ │ │ [ ] Ignorar parâmetros DNS obtidos automaticamente │ │ │ │ │ │ [ ] Exibir endereçamento IPv4 para esta conexão │ │ └ │ │ │ │ ═ CONFIGURAÇÃO IPv6 <Automático> <Exibir> │ │ │ │ [X] Conectar automaticamente │ │ [X] Disponibilizar à todos os usuários │ │ │ │ <Cancelar> <OK> │ │ │ │ │ │ │ │ │ └───────────────────────────────────────────────────────────────────────────┘
Clique em OK e depois em voltar para retornamos para a telinha preta do shell.
Atualize os Repositórios
Instale o repositório epel-release
sudo yum install epel-release -y
Execute yum update
sudo yum update -y
Instalando Dependências
Bom, antes de iniciarmos a instalação das dependências, quero comentar algumas coisinhas que pode acontecer e fazer com que você não consiga prosseguir:
O samba depende de alguns pacotes. Você não precisa memorizar todos eles. É mais um copiar e colar. Porém é bom sabermos a função de cada pacote. Alguns já são conhecidos, como, por exemplo, python, perl, dnsutils, acl etc. Segue abaixo a lista de pacotes que o samba depende. Essa lista retirei do site oficial samba.org:
Vamos instalar esses pacotes que o samba depende. Podemos usar o dnf ou yum. Irei usar yum:
sudo yum install 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 wget bison flex dbus-devel python3-markdown perl-JSON -y
No Oracle Linux 8 não foi encontrado os pacotes: gpgme-devel libarchive-devel lmdb-devel rpcgen keyutils-libs-devel libarchive libxml2-devel perl-ExtUtils-MakeMaker python3-dns
Descobri que para o Oracle Linux:
- gpgme-devel é apenas gpgme. O repositório epel-release possui esse pacote, mas só havia instalado o epel-release bem mais tarde.
- libarchive-devel é apenas libarchive
- lmdb-devel apenas lmdb
- rpcgen para esse pacote tive que ativar o repositório CodeReady. Temos um tutorial para isso: Como Habilitar os Repositórios PowerTools ou CodeReady no Red Hat, CentOS, Oracle Linux, Rocky Linux…
Com o CodeReady é possível que os todos pacotes acima sejam até encontrados da forma como estão escritos.
Então executamos novamente o “yum install…” com todos os pacotes acima assim:
sudo yum install docbook-style-xsl gcc gdb gnutls-devel gpgme jansson-devel keyutils-libs-devel krb5-workstation libacl-devel libaio-devel libarchive libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb 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 wget bison flex dbus-devel python3-markdown perl-JSON -y
Baixando o Samba
- Entre no diretório dentro do qual quer que o instalador do samba seja salvo, no meu caso, criarei a pasta Download dentro da home(~/) .Criando a pasta:
[elder@rockyserver /]$ sudo mkdir -p /home/elder/download
Troque o proprietário
[elder@rockyserver /]$ sudo chown elder:elder -R /home/elder/
Acessando a pasta criada:
[elder@rockyserver /]$ cd ~/download/
- Acesse o link do site oficial: https://www.samba.org/
- Clique no link get samba:
- clique com o direito do mouse e m “samba-latest.tar.gz” e em seguida em “Copiar endereço do link“.
- Cole o link na frente do programa wget para baixarmos o arquivo instalador(pacote):
(Obs.: Se estiver usando o putty, para colar o texto copiado, use o botão direito do mouse)[elder@rockyserver download]$ wget https://download.samba.org/pub/samba/samba-latest.tar.gz
- Pronto, o download foi finalizado.
[elder@rockyserver download]$ ls samba-latest.tar.gz
Instalando
- Descompacte o samba:
[elder@rockyserver download]$ tar -xvf samba-latest.tar.gz
- Acesse a pasta:
[elder@rockyserver download]$ cd samba-4.16.1/
- Execute o script “configure”:
(Irá demorar um pouco 🙂 )[elder@rockyserver samba-4.7.5]$ sudo ./configure
Observe se ao final apareceu a mensagem de sucesso abaixo:
- Execute o comando make:
(Irá demorar um pouco 🙂 se prestar atenção no print de sucesso abaixo, verá que o make demorou 45 minutos 🙂 )[elder@rockyserver samba-4.7.5]$ sudo make
se tudo certo, receberá uma mensagem de sucesso:
- Execute o make install para realizarmos a instalação:
[elder@rockyserver samba-4.7.5]$ sudo make install
Novamente, observe se apareceu a mensagem de sucesso após o final da instalação:
Provisionando o Samba
Obs.: Estamos levando em consideração que você está dentro da pasta para todos os comandos a seguir: /usr/local/samba
provisionar significa alimentar o samba com as informações do seu domínio.
o Domínio se refere a um endereço, separados por pontos, que de forma única identifique seu servidor. Exemplo: www.meusite.com.br, meuservidor.com.br. Como trabalharemos com informações apenas locais, iremos inventar um dóminio simples, vamos supor que nossa empresa se chama laboratório100 e que nosso domínio será lab.local.
A pasta de instalação do samba é: /usr/local/samba/ Porém, se desejar instalar o samba em outro diretório, no passo acima, use “./configure prefix=/caminho/onde/deseja/instalar “
- Acesse a pasta de instalação do samba:
[elder@rockyserver samba-4.16.1]$ cd /usr/local/samba/
- Use o script samba-tool para provisionarmos:
Atualização: Na linha abaixo acrescentei “use-rfc2307 interactive” por ser uma recomendação da página oficial do samba.[elder@rockyserver samba]$ sudo bin/samba-tool domain provision --use-rfc2307 --interactive
- Insira as informações de acordo com sua livre vontade, livre arbítrio 🙂 🙂 🙂 No meu caso: Realm [LOCALDOMAIN] = lab.local
Domain [empresa100]: = lab
Server Role (dc, member, standalone) [dc] = dc
DNS backend …. = SAMBA_INTERNAL
DNS forwarder IP address = 8.8.8.8 Obs.: aqui pode colocar qualquer endereço dns que queira usar, eu usei o do google.
DNS forwarder IP address = Invente uma senha. Nada de 1234 ou password 🙂
Kerberos
- Remova o arquivo do kerberos que está dentro do /etc
[elder@server01 samba]$ sudo rm -f /etc/krb5.conf
- Copie para o /etc o arquivo krbr5.conf que o samba tem como modelo
[elder@server01 samba]$ sudo cp ./private/krb5.conf /etc/
Iniciando e testando o SAMBA
Obs.: Estamos levando em consideração que você está dentro da pasta: /usr/local/samba
-
- Para iniciar o samba execute
[elder@rockyserver samba]$ sudo ./sbin/samba
- Teste executnado “./bin/smbclient -L localhost -U% ” para ver se o samba está funcionando.No meu Oracle Linux ocorreu tudo bem. Mas no Rocky Linux recebi o erro abaixo:
[elder@rockyserver samba]$ sudo ./bin/smbclient -L localhost -U% Sharename Type Comment --------- ---- ------- tstream_smbXcli_np_destructor: cli_close failed on pipe srvsvc. Error was NT_STATUS_IO_TIMEOUT cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe srvsvc failed with error NT_STATUS_IO_TIMEOUT SMB1 disabled -- no workgroup available
Depois de alguns segundos somente executei novamente o comando e ocorreu tudo bem:
[elder@rockyserver samba]$ sudo ./bin/smbclient -L localhost -U% Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.16.1) SMB1 disabled -- no workgroup available
- Para iniciar o samba execute
- Para encerrar/matar o samba:
[elder@rockyserver samba]$ sudo killall samba
Obs.: Se o programa killall não estiver instalado, instale-o através do pacote psmisc, como em:
sudo yum install psmisc
Compartilhando Pasta
Obs.: Estamos levando em consideração que você está dentro da pasta: /usr/local/samba
- Inicie o samba:
[elder@rockyserver samba]$ sudo ./sbin/samba
- Crie a pasta que deseja compartilhar com outros computadores:
[elder@rockyserver samba]$ mkdir /home/elder/compartilhados
- Dê as permissões à pasta criada. Daremos permissão total 🙂
[elder@rockyserver samba]$ chmod -R 777 /home/elder/compartilhados/
Edite o arquivo smb.conf usando seu editor predileto; utilizei o editor vim.Lembre-se, dentro do vim:
tecle i para inserir texto
tecle ESC para sair do modo de inserção
digite :x! para salvar e sair
[elder@rockyserver samba]$ sudo vim ./etc/smb.conf
digite abaixo, as informações seguintes
[Compartilhados] path = /home/elder/compartilhados read only = no public = yes
Salve e saia do vim teclando esc, depois digitando :x!
Em outro computador, acesse o servidor samba. No meu caso, utilizei o Ubuntu para acessar meu servidor samba com o ip 192.168.0.46. Como fiz testes instalando o samba no Oracle Linux por isso usei abaixo o ip 192.168.0.40:
usando windows 7 para acessar compartilhamento do meu servidor
Espero que tenham gostado, Até a próxima!!!