sudo apt install samba
A saída deve ser semelhante a abaixo, indicando que o serviço Samba está ativo e em execução:
● smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-27 09:25:38 UTC; 2min 12s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 15142 (smbd) Status: "smbd: ready to serve connections..." Tasks: 4 (limit: 1152) CGroup: /system.slice/smbd.service ...
Configurando firewall
Supondo que você esteja usando o UFW
para gerenciar seu firewall, você pode abrir as portas ativando o perfil 'Samba':
sudo ufw allow 'Samba'
Configurando opções globais de samba
Antes de fazer alterações no arquivo de configuração do Samba, crie um backup para fins de referência futura:
sudo cp /etc/samba/smb.conf{, .backup}
O arquivo de configuração padrão que acompanha o pacote Samba está configurado para o servidor Samba independente. Abra o arquivo e verifique se a server role
está definida como standalone server
sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
... # Most people will want "standalone sever" or "member server". # Running as "active directory domain controller" will require first # running "samba-tool domain provision" to wipe databases and create a # new domain. server role = standalone server ...
Por padrão, o Samba escuta em todas as interfaces. Se você deseja restringir o acesso ao servidor Samba somente da sua rede interna, remova o comentário das duas linhas a seguir e especifique as interfaces às quais se vincular:
/etc/samba/smb.conf
... # The specific set of interfaces / networks to bind to # This can be either the interface name or an IP address/netmask; # interface names are normally preferred interfaces = 127.0.0.0/8 eth0 # Only bind to the named interfaces and/or networks; you must use the # 'interfaces' option above to use this. # It is recommended that you enable this feature if your Samba machine is # not protected by a firewall or is a firewall itself. However, this # option cannot handle dynamic or non-broadcast interfaces correctly. bind interfaces only = yes ...
Depois de concluído, execute o utilitário
testparm
para verificar se há erros no arquivo de configuração do Samba. Se não houver erros de sintaxe, você verá o Loaded services file
Por fim, reinicie os serviços do Samba com:
sudo systemctl restart smbd
sudo systemctl restart nmbd
Criando usuários do Samba e estrutura de diretórios
Para facilitar a manutenção e a flexibilidade, em vez de usar os diretórios pessoais padrão ( /home/user
), todos os diretórios e dados do Samba estarão localizados no diretório /samba
.
Para criar o diretório /samba
, digite:
sudo mkdir /samba
Defina a propriedade do grupo como sambashare
. Este grupo é criado durante a instalação do Samba; posteriormente, adicionaremos todos os usuários do Samba a este grupo.
sudo chgrp sambashare /samba
O Samba usa usuários do Linux e sistema de permissão de grupo, mas possui seu próprio mecanismo de autenticação separado da autenticação padrão do Linux. Criaremos os usuários usando a ferramenta padrão useradd
Linux e, em seguida, definiremos a senha do usuário com o utilitário smbpasswd
.
Como mencionamos na introdução, criaremos um usuário comum que terá acesso ao seu compartilhamento de arquivos privado e uma conta administrativa com acesso de leitura e gravação a todos os compartilhamentos no servidor Samba.
Criando usuários do Samba
Para criar um novo usuário chamado josh
use o seguinte comando:
sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh
As opções useradd
têm os seguintes significados:
-M
-não cria o diretório inicial do usuário. Criaremos este diretório manualmente.-d /samba/josh
- define o diretório inicial do usuário como/samba/josh
.-s /usr/sbin/nologin
- desativa o acesso ao shell para este usuário.-G sambashare
- adicione o usuário ao gruposambashare
.Crie o diretório inicial do usuário e configure a propriedade do diretório para o usuário
josh
e groupsambashare
:sudo mkdir /samba/josh
sudo chown josh:sambashare /samba/josh
O comando a seguir adicionará o bit setgid ao diretório
/samba/josh
, para que os arquivos recém-criados neste diretório herdem o grupo do diretório pai. Dessa forma, não importa qual usuário crie um novo arquivo, o arquivo terá o proprietário do grupo desambashare
. Por exemplo, se você não definir as permissões do diretório para2770
e o usuáriosadmin
criar um novo arquivo, o usuáriojosh
não poderá ler / gravar neste arquivo.sudo chmod 2770 /samba/josh
Inclua a conta de usuário
josh
no banco de dados Samba, configurando a senha do usuário:sudo smbpasswd -a josh
Você será solicitado a inserir e confirmar a senha do usuário.
New SMB password: Retype new SMB password: Added user josh.
Depois que a senha é definida para ativar a conta do Samba, execute:
sudo smbpasswd -e josh
Enabled user josh.
Para criar outro usuário, repita o mesmo processo que ao criar o usuário
josh
.Em seguida, vamos criar um usuário e um grupo
sadmin
. Todos os membros deste grupo terão permissões administrativas. Posteriormente, se você quiser conceder permissões administrativas para outro usuário, adicione-o ao gruposadmin
.O comando acima também criará um grupo
sadmin
e adicionará o usuário aos grupossambashare
esambashare
.Defina uma senha e habilite o usuário:
sudo smbpasswd -a sadmin
sudo smbpasswd -e sadmin
Em seguida, crie o diretório de compartilhamento
Users
:sudo mkdir /samba/users
Defina a propriedade do diretório como usuário
sadmin
e groupsambashare
:sudo chown sadmin:sambashare /samba/users
Este diretório estará acessível por todos os usuários autenticados. O comando
chmod
seguir fornece acesso de gravação / leitura aos membros do gruposambashare
no diretório/samba/users
:
Configurando compartilhamentos Samba
Abra o arquivo de configuração do Samba e acrescente as seções:
sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
path = /samba/users browseable = yes read only = no force create mode = 0660 force directory mode = 2770 valid users = @sambashare @sadmin path = /samba/josh browseable = no read only = no force create mode = 0660 force directory mode = 2770 valid users = josh @sadmin
As opções têm os seguintes significados:
e
- Os nomes dos compartilhamentos que você usará ao fazer login.
path
- O caminho para o compartilhamento.browseable
- se o compartilhamento deve ser listado na lista de compartilhamentos disponíveis. Ao definir comono
outro usuário, não será possível ver o compartilhamento.read only
- se os usuários especificados na lista devalid users
podem gravar neste compartilhamento.force create mode
- Define as permissões para os arquivos recém-criados neste compartilhamento.force directory mode
- Define as permissões para os diretórios recém-criados neste compartilhamento.valid users
- Uma lista de usuários e grupos que têm permissão para acessar o compartilhamento. Os grupos são prefixados com o símbolo@
.Para obter mais informações sobre as opções disponíveis, consulte a página de documentação do arquivo de configuração do Samba.
Depois de concluído, reinicie os serviços do Samba com:
sudo systemctl restart smbd
sudo systemctl restart nmbd
Nas seções a seguir, mostraremos como conectar-se a um compartilhamento Samba de clientes Linux, macOS e Windows.
Conectando a um compartilhamento Samba do Linux
Os usuários do Linux podem acessar o compartilhamento samba na linha de comando, usando o gerenciador de arquivos ou montar o compartilhamento Samba.
smbclient
é uma ferramenta que permite acessar o Samba a partir da linha de comando. O pacote smbclient
não está pré-instalado na maioria das distribuições Linux, portanto, você precisará instalá-lo com o gerenciador de pacotes de distribuição.
Para instalar o smbclient
no Ubuntu e Debian, execute:
sudo apt install smbclient
Para instalar o smbclient
no CentOS e no Fedora, execute:
sudo yum install samba-client
A sintaxe para acessar um compartilhamento Samba é a seguinte:
mbclient //samba_hostname_or_server_ip/share_name -U username
Por exemplo, para conectar-se a um compartilhamento chamado josh
em um servidor Samba com endereço IP 192.168.121.118
como usuário josh
você executaria:
smbclient //192.168.121.118/josh -U josh
Você será solicitado a inserir a senha do usuário.
Enter WORKGROUP\josh's password:
Depois de inserir a senha, você será conectado à interface da linha de comando do Samba.
Try "help" to get a list of possible commands. smb: \>
Montando o compartilhamento Samba
Para montar um compartilhamento Samba no Linux primeiro, você precisa instalar o pacote cifs-utils
.
No CentOS e no Fedora, execute:
sudo yum install cifs-utils
Em seguida, crie um ponto de montagem:
sudo mkdir /mnt/smbmount
Monte o compartilhamento usando o seguinte comando:
sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount
Por exemplo, para montar um compartilhamento chamado josh
em um servidor Samba com endereço IP 192.168.121.118
como usuário josh
no ponto de montagem /mnt/smbmount
você executaria:
sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount
Você será solicitado a inserir a senha do usuário.
Password for josh@//192.168.121.118/josh: ********
Usando GUI
Arquivos, o gerenciador de arquivos padrão no Gnome possui uma opção embutida para acessar os compartilhamentos do Samba.
- Abra Arquivos e clique em "Outros locais" na barra lateral. Em "Conectar ao servidor", digite o endereço do compartilhamento Samba no seguinte formato
smb://samba_hostname_or_server_ip/sharename
Clique em "Connect" e a seguinte tela será exibida: