Samba: instalar um servidor no Raspberry Pi

1 Número de visitas

Um dia destes, dedicarei um artigo a reunir informação diversa sobre o Raspberry Pi (RPi). No presente texto, suponho que o leitor sabe o que é o RPi e as operações básicas com ele. A seguir, descreverei como fiz para instalar um servidor com Samba. O que pretendo com isso?

O que eu quis fazer…

A ideia é ligar um disco externo ao RPi e criar um servidor de rede “caseiro”. Deste modo, todos os computadores (e outros dispositivos) da rede onde se encontra o RPi ficam com acesso a esse disco. Poderão ler ficheiros (e pastas) de lá, enviar ficheiros para lá… Desse modo também utilizarei esse disco para cópias de segurança de ficheiros de que convém fazer cópia frequente.

O que é necessário? Além do RPi e do disco e de uma rede local (LAN) que ligue os vários dispositivos, é necessário software que trate dessas tarefas. Há diversos programas que o fazem; neste caso, utilizei Samba. É um conjunto de aplicações Unix, de código aberto, que torna possível a interligação de redes Windows, Linux, UNIX e outros sistemas operativos juntos e, por consequência, a partilha de ficheiros, impressoras e outros recursos.

Com Samba, todos os dispositivos ligados em rede têm acesso ao disco
[Imagem copiada daqui]

Comecei por instalar Samba no RPi.

Instalar o servidor no Raspberry Pi, com Samba

Até indicação contrária, o que se segue será feito no RPi; o que se encontra em itálico são comandos escritos no Terminal (Ctrl+Alt+T).

Samba vem por pré-definição nos repositórios oficiais. Primeiro, atualizei o sistema (dois primeiros comandos); depois, instalei Samba:
sudo apt update
sudo apt upgrade
sudo apt install samba samba-common-bin

Para verificar se a instalação foi correta e se Samba está a funcionar:

systemctl status smbd

Obter-se-á algo deste género:
samba: /usr/sbin/samba /usr/lib/arm-linux-gnueabihf/samba /etc/samba /usr/share/samba /usr/share/man/man8/samba.8.gz /usr/share/man/man7/samba.7.gz

De seguida, criei um utilizador. Dado que o utilizador predefinido do RPi é “pi”, adicionei-o a Samba:

sudo smbpasswd -a pi

Será pedida uma senha; pode ser escolhida uma qualquer (para exemplo, seja pi2021)

Podem ser adicionados outros utilizadores; para o efeito, o processo é o que fica descrito.

Partilhar pastas

Tenho um disco externo ligado ao RPi. Comecei por criar nele uma pasta para a partilhar e tornar pública. Chamei-lhe “dados”, mas o nome pode ser outro, obviamente.

Depois deste parágrafo, está um conjunto de quatro comandos. O que fiz com eles? Acedi ao disco externo ligado ao RPi, de nome “Backup” (comando 1); criei a pasta (comando 2); dei todas as permissões de acesso (comando 3) e mudei o nome do “dono” (dos ficheiros e pastas) e do grupo para que sejam de… ninguém — de qualquer um (comando 4). Atenção! Provavelmente, terá de adaptar os comandos ao seu caso: o caminho do comando 1 há de ser diferente do meu; o nome da sua pasta pode não ser “dados” (comandos 2-4). Preste também atenção às maiúsculas/minúsculas.

cd /media/pi/Backup
sudo mkdir dados
sudo chmod 777 dados
sudo chown -R nobody:nogroup dados

Feito isto, editei o ficheiro de configuração de Samba, para lhe acrescentar a pasta “dados”:

sudo nano /etc/samba/smb.conf

No final do ficheiro, escrevi estas linhas (antes de as escrever, leia os comentários, a seguir):

[dados]
comment = pasta para partilhar dados
path = /media/pi/Backup/dados
browseable = yes
read only = no
writeable = yes
guest ok = yes
public = yes
force user = nobody
create mask = 0777
directory mask = 0777

Comentários:

  • Entre parêntesis retos, o nome que identifica a pasta partilhada (“dados”)
  • Segunda linha: comentário descritivo da pasta partilhada
  • Terceira linha: a localização (o caminho: path) da pasta (exige-se rigor, incluindo a distinção entre maiúsculas e minúsculas: “Backup” é diferente de “backup”)
  • Se “browseable” for “yes”, o gestor de ficheiros listará a pasta partilhada em “Rede”
  • Quem aceder à pasta terá permissões para fazer qualquer modificação nela (read only = no, writeable = yes); para isso, são dadas permissões para a criação de arquivos e pastas (0777; ver as duas últimas linhas).

Configurações alternativas

Para partilhar o disco todo (e não apenas uma pasta), os parâmetros são os do exemplo anterior. Obviamente, terá de ser alterado o caminho onde está montado o disco (no caso do meu exemplo, seria path = /media/pi/Backup/dados); convém alterar o nome para um mais significativo (sei lá… [hdusb]) e o comentário (sei lá… comment = disco externo partilhado).

Tanto no caso de uma pasta como no de um disco, podemos escolher outra configuração. Por exemplo, supondo que queria acesso reservado apenas a utilizadores autorizados (vamos conceder acesso apenas ao utilizador “pi”; mas outros podem ser acrescentados, separados por vírgulas ou espaços):

[dados]
comment = pasta para partilhar dados
path = /media/pi/Backup/dados
browseable = yes
read only = no
writeable = yes
guest ok = no
public = no
valid users = pi
admin users = pi
create mask = 0644
directory mask = 0755

Neste caso, só o utilizador “pi” tem acesso, com permissão de leitura e de escrita (read only = no, writeable = yes); create mask e directory mask respeitam às permissões para a criação de novos ficheiros e pastas, respetivamente. Para que as permissões de escrita sejam efetivas, devem coincidir com as permissões que a pasta possui no sistema de ficheiros do sistema operativo do RPi (ver/alterar nas propriedades respetivas).

Recordo que ainda estamos na edição do ficheiro de configuração de Samba. Concluída esta, gravei o ficheiro (Ctrl+O e depois, Enter, para confirmar o nome) e saí da edição (Ctrl+X).

Reiniciei o servidor (para adotar a nova configuração):

sudo service smbd restart

…e pronto! A pasta (ou o disco, conforme os casos) está partilhada e podemos usá-la para partilhar ficheiros com outros computadores da nossa rede.

Aceder à pasta / disco partilhada…

…através do IP local do RPi (se não sabe qual o IP, use o comando ifconfig; no meu caso, é o 192.168.1.96)

Mudamos agora para o computador a partir do qual queremos aceder à pasta/disco partilhada.

Não experimentei em Windows ou macOS, mas as indicações que tenho para Windows são estas: o RPi aparece na secção de Redes do gestor de ficheiros; podemos igualmente criar um acesso direto ou ainda aceder escrevendo diretamente o seu IP na barra superior (por exemplo, \\192.168.1.96\raspberry\dados — este é um endereço possível; deve verificar qual o seu). Se a pasta for privada, tem-se acesso através do nome de utilizador e senha previamente escolhidos na configuração (ver acima).

Como uso um computador com Ubuntu, verifiquei se tinha instalado neste o cliente Samba. Como já expliquei neste artigo, o cliente é o dispositivo que requer determinados serviços a um servidor; servidor alude ao equipamento que oferece esses serviços aos computadores ligados a ele através de uma rede.

No caso presente, o servidor encontra-se no meu RPi e o cliente, no meu computador com Ubuntu.

sudo apt install smbclient

Recebi a notificação de que já tinha a última versão.

A maneira que me parece mais fácil de aceder à pasta partilhada (há outras…) é

  • abrir o gestor de ficheiros;
  • na janela da esquerda, ao fundo, dar duplo clique em “Rede”;
  • se tudo estiver em condições, na janela da direita aparece a pasta (disco) pretendida;
  • …e é usá-la: criar/eliminar pastas, copiar para lá ficheiros, lê-los ou copiá-los de lá…

Em alternativa, é possível o acesso pelo terminal, com o comando

smbclient //<hostname>/<sharename> -U <username>

…substituindo <hostname>, <sharename> e <username>, respetivamente, pelo IP do servidor Samba a que queremos ligar-nos, pelo nome da pasta partilhada e pelo nome de utilizador. No meu caso, seria

smbclient //192.168.1.96/dados -U pi

Introduzir a senha e Enter (ou simplesmente Enter, se não for necessária senha)

Se aparecer smb:> no monitor, a ligação está estabelecida sem problema. O comando help mostra a lista de comandos. Para sair de smbclient, escrever exit na linha de comandos smb:>.

Ainda por experimentar…

Este artigo deve muito à ajuda do canal do Telegram OffTopic-PT, a este “tutorial” (em inglês) e a este (em espanhol).

No segundo tutorial, propõem-se duas hipóteses, que hei de experimentar quando tiver tempo: como evitar partilhar a pasta de utilizador e como criar um caixote do lixo, para recuperar ficheiros ou pastas apagados, voluntária ou acidentalmente.


||| Índice de outros artigos sobre o Raspberry Pi, incluindo a instalação do sistema operativo oficial.

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Scroll to Top