Samba é um aplicativo utilizado em sistemas operacionais do tipo Unix como Linux e BSD, que simula um servidor Windows, permitindo que seja feito gerenciamento e compartilhamento de arquivos e impressoras em uma rede Microsoft ou heterogênea (com diversos sistemas).
Fonte: Wikipedia 🔗
Para instalar o Samba e todos os pacotes de dependência, é necessário que o sistema de gerenciamento de pacotes do Linux esteja corretamente configurado e acessando a Internet. Para verificar, logue-se no servidor Linux como 'root' e digite no console de comando:
apt-get update
Não devem ser exibidas mensagens de erro. Se aparecerem, verifique a conectividade de rede e Internet do Servidor Linux e consulte os tutoriais das aulas anteriores para saber se o APT está corretamente configurado.
É sempre importante manter seu sistema atualizado para evitar que "bugs" antigos afetem o desempenho e principalmente a segurança do sistema. Para atualizar todo o sistema Debian, comandamos:
apt-get upgrade
Dependendo da última vez que você fez isso e da idade do sistema, a atualização pode demorar vários minutos. A paciência é uma virtude que está se perdendo na T.I. (e os crackers estão ganhando…).
Para que a rede funcione, as máquinas com o sistema Windows devem estar no mesmo grupo de trabalho que a máquina servidor Linux com o Samba. Para verificar o grupo de trabalho no Windows, abra um prompt de comando ("cmd") no cliente Windows e execute o comando:
net config workstation
Localize o item "Domínio de estação de trabalho" ou "Workstation domain" e anote o valor deste.
Voltando ao servidor, para baixar e instalar o Samba Server no Servidor Linux, execute o comando:
apt-get install samba
A instalação pode falhar por conta de instabilidades na rede, então, para confirmar que tudo deu certo, comande:
apt-get install samba --fix-missing
Durante a instalação, o Samba pode vir a te questionar sobre a ativação do "WINS". Responda qualquer coisa (Sim | Não) porque não usaremos o "WINS" mesmo!
👉 Dica: pesquise sobre WINS, você pode precisar disso naquela entrevista de emprego na Microsoft...
Após baixar e instalar, o Samba já deve estar rodando no ambiente. Podemos verificar isso listando os serviços que estão rodando no sistema com "ps" e filtrando-os com "grep", então, comande:
ps aux | grep smb
A resposta deve ter algo como:
As informações mais importantes aqui estão em amarelo e são os números iniciais (PID ou Process Identification) que podem ser diferentes dos listados e o final de cada linha que deve ser "/usr/sbin/smbd" que indica que o serviço está rodando…
Também podemos usar o comando:
systemctl status smbd
Na resposta do comando, deve aparecer em destaque, logo no começo, a linha:
Active: active (running) ....
Com o Samba rodando, a configuração do servidor é feita pelo arquivo "/etc/samba/smb.conf", mas antes, precisamos criar uma estrutura de diretórios (pastas) a serem compartilhados:
Para criar esses diretórios no Linux, usamos o comando "mkdir". Logue-se como "root" e siga os comandos:
mkdir /REDE
mkdir /REDE/ESCRITA
mkdir /REDE/LEITURA
mkdir /REDE/OCULTA
Vamos colocar algum conteúdo nestes diretórios, para que sejam vistos quando compartilharmos. O comando "touch" cria um arquivo vazio no local especificado:
touch /REDE/ESCRITA/lixo.txt
touch /REDE/LEITURA/lixo_leitura.txt
touch /REDE/OCULTA/lixo_oculto.txt
Agora, vamos preparar as permissões dos diretórios. Essas permissões definem como os usuários do sistema (ou sujeitos) podem interagir com cada diretório. O comando "ls" lista o conteúdo de um determinado diretório e outras informações, como as permissões deste:
ls -l /REDE
A resposta deve ser algo como:
Vamos especificar uma permissão de acesso total para o diretório "/REDE" e todo o seu conteúdo, com o comando:
chmod -R 777 /REDE
Ao executar o comando " ls -l /REDE " novamente, temos como resultado:
Podemos usar o acesso total porque as permissões dos compartilhamentos na rede serão controladas pelo SAMBA, mas nada te impede de usar permissões diferentes para estes diretórios e arquivos, lembrando que elas terão precedência sobre a configuração do SAMBA. Por exemplo, se o diretório "ESCRITA" tem permissão "drwxr-xr-x", mesmo que no SAMBA você permita a alteração com "read only = yes", ela não será permitida pelo sistema.
👉 Dica: pesquise mais sobre o sistema de permissões do Linux. Isso é assunto comum em qualquer concurso que envolva as áreas da T.I.
Com a estrutura de diretórios definida e permitida, vamos ativar o Samba. Inicialmente, recomenda-se fazer uma cópia do arquivo de configuração original do Samba, caso algo dê errado, com o comando "cp". Digite o comando abaixo com atenção e só execute se estiver tudo certinho:
cp /etc/samba/smb.conf /etc/samba/smb.conf.original
Vamos editar o arquivo de configuração, abrindo-o no editor com o comando:
pico /etc/samba/smb.conf
Observe que este arquivo é muito extenso, mas a grande maioria das linhas dele são comentários, já que iniciam com "#" e ";" e que explicam a função de cada configuração possível. Portanto, ele funciona como um manual também.
Inicialmente, vemos a seção [global], onde toda a configuração geral do servidor Samba é feita:
Nesta seção, localize a linha que inicia com "workgroup" e, se necessário, edite-a para ficar com o valor obtido do Windows lá no começo desta página e, logo abaixo, adicione a linha "min protocol = NT1". Não altere mais nada aqui. Devemos ter algo como:
[global]
... ← Não altere nada antes da linha abaixo.
workgroup = WORKGROUP
min protocol = NT1
... ← Não altere nada após a linha acima.
PARE! VEJA! ESCUTE!
Se você digitou os três pontos "..." vistos acima, verifique se você está na área certa! Talvez a área de culinária ou mecânica, seja mais interessante pra você! Ou, volte e corrija...
A linha "min protocol = NT1" garante a compatibilidade do Samba com sistemas mais antigos como Windows XP e Windows 7.
Agora, vamos incluir nossos compartilhamentos, então, ainda editando o arquivo "/etc/samba/smb.conf", role até o final do documento e pule algumas linhas com [Enter].
Vamos incluir o compartilhamento do diretório "LEITURA", acrescentando as linhas:
[leitura]
comment = Servidor de arquivos somente leitura
path = /REDE/LEITURA
browseable = yes
read only = yes
guest ok = yes
Onde:
Linha 1 → Nome do compartilhamento. Não use acentos, caracteres especiais ou espaços aqui
Linha 2 → Descrição do compartilhamento, visível nos detalhes do Windows
Linha 3 → Caminho local do diretório que está sendo compartilhado
Linha 4 → Compartilhamento visível?
Linha 5 → Compartilhamento somente para leitura?
Linha 6 → Permitir acesso de visitantes (usuários sem login e senha)?
O compartilhamento da pasta "ESCRITA", segue o mesmo padrão, mudando apenas o parâmetro "read only" (somente leitura) para "no":
[escrita]
comment = Servidor de arquivos para gravação
path = /REDE/ESCRITA
browseable = yes
read only = no
guest ok = yes
Assim como o compartilhamento de "OCULTA", onde mudamos apenas o parâmetro "browseable" para "no", o que torna o compartilhamento "invisível" em máquinas Windows:
[oculta]
comment = Servidor de arquivos ocultos
path = /REDE/OCULTA
browseable = no
read only = yes
guest ok = yes
O arquivo de configuração "/etc/samba/smb.conf" deve ficar assim:
[global]
... ← Não altere nada antes da linha abaixo.
workgroup = WORKGROUP
min protocol = NT1
... ← Não altere nada após a linha acima.
[leitura]
comment = Servidor de arquivos somente leitura
path = /REDE/LEITURA
browseable = yes
read only = yes
guest ok = yes
[escrita]
comment = Servidor de arquivos para gravação
path = /REDE/ESCRITA
browseable = yes
read only = no
guest ok = yes
[oculta]
comment = Servidor de arquivos ocultos
path = /REDE/OCULTA
browseable = no
read only = yes
guest ok = yes
Salve o arquivo teclando [Ctrl] + [O] + [Enter] e saia do editor, teclando [Ctrl] + [X].
Para controlar o servidor Samba, usamos o comando "service" que permite interromper ou iniciar serviços. Para o Samba, temos as seguintes opções:
Para interromper o servidor de arquivos, comandamos:
service smbd stop
Para iniciar o servidor de arquivos, comandamos:
service smbd start
Para reiniciar (parar → iniciar) o servidor de arquivos, comandamos:
service smbd restart
Vamos então reiniciar o servidor, verificando se não ocorrem mensagens de erro. Se ocorrerem, volte e revise o arquivo "/etc/samba/smb.conf":
service smbd restart
Para testar os compartilhamentos no cliente Windows desktop, faça da mesma forma que usamos para acessar compartilhamentos Windows: inicie o cliente Windows da rede interna e tecle [Windows] + [R] → "\\192.168.99.1" → [Enter].
Somente as pastas "leitura" e "escrita" serão listadas. Para ver a pasta "oculta", que é, hummm... "oculta", digite o caminho completo dela:
\\192.168.99.1\oculta
Lembrando que, desde o começo deste tutorial, estamos configurando nossa rede como 192.168.99.0/24 e nosso servidor como 192.168.99.1/24.
👉 Dica: verifique se consegue alterar alguma coisa nas pastas, conforme as permissões que definimos em "read only" para cada uma.
Podemos ainda mapear esses compartilhamentos como unidades de rede. Como atividade no Windows desktop, pesquise e faça as seguintes tarefas:
Mapeie o compartilhamento 'leitura' para a unidade com a letra "L:";
Mapeie o compartilhamento 'escrita' para a unidade com a letra "X:";
Mapeie o compartilhamento 'oculta' para a unidade com a letra "O:";
Observe que o mapeamento deve ser permanente, ou seja, executado toda vez que o Windows inicia.
Assim como é possível, de uma máquina Windows, acessar diretórios compartilhados no Linux, também é possível acessar compartilhamentos Windows pelo Linux. Para isso, precisamos do "Cliente Samba" instalado no Linux.
Você pode fazer isso no "Servidor Linux", mas, para esta atividade, vamos iniciar nosso "Cliente Linux", logar nele como usuário "root" em um terminal e comandar:
apt update
apt upgrade
apt install smbclient
apt install cifs-utils
Para acessar um compartilhamento da rede, precisamos anexá-lo à raiz (/) do sistema Linux, então crie o diretório montaremos o compartilhamento, por exemplo:
mkdir /WINDOWS
mkdir /WINDOWS/LEITURA
mkdir /WINDOWS/ESCRITA
mkdir /WINDOWS/OCULTA
Agora, "montamos" o compartilhamento "LEITURA", comandando:
mount -t cifs //192.168.99.1/LEITURA /WINDOWS/LEITURA
Password for root@//192.168.99.1/LEITURA: ← Apenas tecle [Enter]
cd /WINDOWS/LEITURA
ls -l
Quando o comando solicitar a senha de acesso, apenas tecle [Enter], já que estamos fazendo um compartilhamento do tipo "share" no Samba e "guest ok" está como "yes" para todos eles.
Para montar e acessar "ESCRITA", fazemos o mesmo:
mount -t cifs //192.168.99.1/ESCRITA /WINDOWS/ESCRITA
Password for root@//192.168.99.1/ESCRITA: ← Apenas tecle [Enter]
cd /WINDOWS/ESCRITA
ls -l
No caso de "LEITURA", só podemos ver o conteúdo do diretório. Faça o teste tentando criar algo comandando:
touch /WINDOWS/LEITURA/teste.txt
touch: não foi possível tocar 'teste.txt': Permissão negada
Como "ESCRITA" tem permissão de alteração, neste diretório já será possível criar e alterar o conteúdo:
touch /WINDOWS/ESCRITA/teste.txt
ls /WINDOWS/ESCRITA
lixo.txt teste.txt
Obviamente, para montar o compartilhamento "OCULTA", a sequência é a mesma, mas, vamos adicionar o parâmetro "-o guest" para que o sistema não fique pedindo a senha:
mount -t cifs //192.168.99.1/OCULTA /WINDOWS/OCULTA -o guest
cd /WINDOWS/OCULTA
ls -l
Finalmente, se necessário, para desmontar um compartilhamento, usamos o comando "umount":
cd /
umount /WINDOWS/LEITURA
umount /WINDOWS/ESCRITA
umount /WINDOWS/OCULTA
Assim como no Windows, podemos configurar o "Samba Client" para "montar" o compartilhamento durante a inicialização do sistema, assim ele estará sempre disponível. Para isso, ainda no cliente Linux, liste o compartilhamento no arquivo "/etc/fstab", comandando:
pico /etc/fstab
Agora, para montar "//192.168.99.1/LEITURA" na inicialização, vá ao final do arquivo e inclua, com cuidado, a linha:
//192.168.99.1/LEITURA /WINDOWS/LEITURA cifs rw,nounix,user=password= 0 0
Salve a alteração com [Ctrl]+[O] e saia do editor com [Ctrl]+[X].
Reinicie o cliente Linux, logue-se novamente e acesse o diretório montado:
cd /WINDOWS/LEITURA
ls
lixo_leitura.txt
Como atividade, acrescente os compartilhamentos "//192.168.99.1/ESCRITA" e "//192.168.99.1/OCULTA" na inicialização também.
O aplicativo Samba tem muito mais recursos do que vimos aqui, sendo tão ou mais poderoso até mesmo do que o próprio sistema de compartilhamentos do Windows em alguns casos. Cabe a você, se necessário, estudar mais profundamente os recursos do servidor Samba.
As distribuições Linux também suportam um cliente Samba que permite o acesso à compartilhamentos criados no próprio Samba Server de outros hosts Linux e até mesmo compartilhamentos criados em máquinas Windows.
Os comandos usados neste material tem diversas opções e capacidades que podem ser necessárias para outros CASES. Sempre que encontrar um novo comando Linux, leia as páginas de manual deste. Por exemplo:
man mkdir → Manual do comando "mkdir" que cria diretórios
man ls → Manual do comando "ls" que lista diretórios
man apt-get → Manual do gerenciador de pacotes do Debian
man touch → Manual do comando "touch" que cria arquivos vazios
man chmod → Manual do comando "chmod" que altera as permissões de objetos
man mv → Manual do comando "mv" que renomeia ou move objetos para outro local
man cp → Manual do comando "cp" que copia objetos
man pico → Manual do editor de textos planos "pico"
...