Projeto Servidor de Arquivos
Uma pasta na rede, que todo mundo da casa ou do escritório abre como se fosse local, no Ubuntu, no Windows ou no Mac. O programa que faz isso é o Samba, que fala o mesmo "idioma" de compartilhamento do Windows (o protocolo SMB).
- A pasta
/srv/compartilhadoacessível na rede comosmb://IP/compartilhado. - Acesso só para quem está no grupo
equipe, com senha. - Arquivos criados por qualquer pessoa da equipe editáveis pelas outras.
- A pasta aberta no app Arquivos do notebook.
| Item | Detalhe |
|---|---|
| Tempo estimado | 45 min |
| Pré-requisitos | Como Usar os Projetos, Usuários e Grupos, Entendendo Permissões, chmod, ufw |
| Onde roda | VM lab (servidor) + notebook (cliente) |
As etapas
-
Preparar a VM
O que vamos fazer e por quê: criar a VM e descobrir o IP dela, que será o endereço do servidor de arquivos.
$ multipass launch 26.04 --name lab --disk 10G --memory 2G Launched: lab $ multipass list Name State IPv4 Image lab Running 10.85.140.27 Ubuntu 26.04 LTS $ multipass shell lab
Troque
10.85.140.27pelo IP da sua VM em todos os comandos. -
Instalar o Samba
O que vamos fazer e por quê: o pacote
sambatraz o serviçosmbd, que atende os pedidos de arquivos.$ sudo apt update && sudo apt install -y samba … $ systemctl is-active smbd active
Confira se deu certo:
sudo ss -tlnp | grep smbddeve mostrar as portas445e139emLISTEN. -
Criar a pasta, o grupo e os usuários
O que vamos fazer e por quê: quem pode entrar na pasta é decidido em duas camadas: o Samba e as permissões do Linux. Vamos criar um grupo
equipe, dar a pasta a esse grupo e colocar a ana nele.$ sudo groupadd equipe $ sudo adduser --comment "Ana" ana … $ sudo usermod -aG equipe ana $ sudo mkdir -p /srv/compartilhado $ sudo chgrp equipe /srv/compartilhado $ sudo chmod 2775 /srv/compartilhado $ ls -ld /srv/compartilhado drwxrwsr-x 2 root equipe 4096 Oct 15 14:02 /srv/compartilhado « o "s" no lugar do x do grupo
- chmod
- Muda as permissões.
- 2
- O bit setgid: tudo que for criado dentro da pasta herda o grupo
equipe. - 7
- O dono (root) lê, escreve e entra.
- 7
- O grupo (equipe) lê, escreve e entra.
- 5
- Os outros só leem e entram.
- /srv/compartilhado
- A pasta.
/srvé o lugar padrão para dados servidos pela máquina.
Sem o setgid, um arquivo criado pela ana ficaria no grupo
ana, e o resto da equipe não conseguiria editá-lo. -
Configurar o compartilhamento
O que vamos fazer e por quê: o Samba lê
/etc/samba/smb.conf. Cada bloco entre colchetes é um compartilhamento. Faça uma cópia antes e acrescente o nosso bloco no fim do arquivo.$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak $ sudo nano /etc/samba/smb.conf
[compartilhado] # Texto que aparece ao listar os compartilhamentos comment = Pasta da equipe # A pasta de verdade, no disco do servidor path = /srv/compartilhado # Aparece na lista de compartilhamentos browseable = yes # Permite gravar read only = no # Só membros do grupo equipe (o @ indica grupo) valid users = @equipe # Permissões de arquivos e pastas criados pela rede create mask = 0664 directory mask = 2775
O
testparmconfere o arquivo antes de reiniciar o serviço:$ testparm -s 2>&1 | head -4 Load smb config files from /etc/samba/smb.conf Loaded services file OK. « sem erros de sintaxe Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback) … $ sudo systemctl restart smbd
Se deu errado: testparm mostra "Unknown parameter encountered"O que aconteceu: algum nome de opção foi digitado errado, como
read-onlyem vez deread only.Como resolver: a mensagem cita o nome errado. Corrija no arquivo e rode o
testparm -sde novo. -
Criar a senha do Samba
O que vamos fazer e por quê: o Samba tem um cadastro de senhas próprio, separado do Linux. O usuário precisa existir no Linux e no Samba. A senha pode ser diferente da de login.
$ sudo smbpasswd -a ana New SMB password: Retype new SMB password: Added user ana. $ sudo pdbedit -L ana:1001:Ana « usuários cadastrados no Samba
-
Liberar no firewall
O que vamos fazer e por quê: se o ufw estiver ativo, ele bloqueia as portas do Samba. O pacote já traz um perfil pronto com as portas certas.
$ sudo ufw app list Available applications: OpenSSH Samba $ sudo ufw allow Samba Rules updated Rules updated (v6)
Se o ufw estiver desligado (
Status: inactive), a regra fica guardada e passa a valer quando você ligar. -
Acessar pelo notebook
O que vamos fazer e por quê: testar como um usuário faria. Primeiro pelo terminal, com o
smbclient, que mostra mensagens de erro claras. Depois pelo app Arquivos.$ sudo apt install -y smbclient … $ smbclient -L //10.85.140.27 -U ana Password for [WORKGROUP\ana]: Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers compartilhado Disk Pasta da equipe « o nosso compartilhamento IPC$ IPC IPC Service (lab server (Samba, Ubuntu)) SMB1 disabled -- no workgroup available
Agora, no app Arquivos:
- Clique em Outros locais, no fim da barra lateral.
- Em Conectar ao servidor, digite
smb://10.85.140.27/compartilhadoe clique em Conectar. - Escolha Usuário registrado, informe
ana, o domínioWORKGROUPe a senha dosmbpasswd.
No Windows, digite
\\10.85.140.27\compartilhadona barra do Explorador de Arquivos.Confira se deu certo: crie um arquivo pelo Arquivos do notebook (por exemplo,
ata.txt) e veja-o no servidor:$ ls -l /srv/compartilhado total 4 -rw-rw-r-- 1 ana equipe 23 Oct 15 14:20 ata.txt « dono ana, grupo equipe (graças ao setgid)
-
Testar quem NÃO pode entrar
O que vamos fazer e por quê: segurança se testa pelos dois lados. Vamos criar a bia, fora do grupo
equipe, e confirmar que ela é barrada.$ sudo adduser --comment "Bia" bia … $ sudo smbpasswd -a bia New SMB password: Retype new SMB password: Added user bia.
$ smbclient //10.85.140.27/compartilhado -U bia -c ls Password for [WORKGROUP\bia]: tree connect failed: NT_STATUS_ACCESS_DENIED « barrada: bia não está em @equipe
Para liberar a bia, bastaria
sudo usermod -aG equipe biano servidor.
Quando não funciona
O que aconteceu: usuário ou senha errados, ou o usuário existe no Linux mas não foi cadastrado no Samba.
Como confirmar: sudo pdbedit -L lista quem existe no Samba.
Como resolver: sudo smbpasswd -a usuario.
O que aconteceu: o login funcionou, mas o usuário não está em valid users (no nosso caso, no grupo equipe).
Como confirmar: groups usuario no servidor.
O que aconteceu: o Samba deixa gravar (read only = no), mas o Linux não deixa: a pasta não pertence ao grupo, ou falta o w para o grupo.
Como confirmar: ls -ld /srv/compartilhado deve mostrar drwxrwsr-x … equipe.
Como resolver: refaça o chgrp e o chmod 2775 da etapa 3.
O que aconteceu: o firewall está bloqueando, ou o IP está errado.
Como confirmar: ping 10.85.140.27 do notebook e sudo ufw status no servidor.
Alternativa: NFS
Entre máquinas Linux, o NFS (Network File System) é mais simples e rápido. Ele não tem senha por usuário: o acesso é liberado por IP e as permissões são as do Linux, pelo número do usuário (UID).
$ sudo apt install -y nfs-kernel-server $ echo "/srv/compartilhado 10.85.140.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports $ sudo exportfs -ra $ sudo exportfs -v /srv/compartilhado 10.85.140.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
$ sudo apt install -y nfs-common $ sudo mount -t nfs 10.85.140.27:/srv/compartilhado /mnt $ ls /mnt ata.txt
| Samba (SMB) | NFS | |
|---|---|---|
| Clientes | Windows, Mac, Linux, celular | Principalmente Linux |
| Autenticação | Usuário e senha | Por IP; permissões pelo UID |
| Configuração | Mais opções | Uma linha em /etc/exports |
| Uso típico | Rede de casa ou escritório misto | Servidores Linux entre si |
O que você aprendeu
- Instalar o Samba e criar um compartilhamento em
smb.conf. - Usar grupo + setgid (
chmod 2775) para uma pasta de equipe. - Cadastrar senhas do Samba com
smbpasswde validar o arquivo comtestparm. - Acessar com
smbclient, pelo app Arquivos e pelo Windows. - Testar o acesso negado, não só o permitido.
Desafios extras
- Crie um segundo compartilhamento,
publico, só leitura e sem senha (guest ok = yes,read only = yes). - Monte o compartilhamento no notebook automaticamente no boot, com
cifs-utilse uma linha no fstab usandonofail. - Faça o Backup Automático copiar
/srv/compartilhadotoda noite.
Desfazer e limpar
$ sudo umount /mnt $ multipass delete --purge lab
Exercícios
1. Cadastrar no Samba
Complete para criar a senha do Samba do usuário ana:
2. Só o grupo
Complete a linha do smb.conf que libera só o grupo equipe:
3. Para que serve o 2 em chmod 2775?
4. O login funciona, mas aparece NT_STATUS_ACCESS_DENIED. Qual é a causa mais provável?