Samba (Português)

From ArchWiki

Samba é a suíte de programas padrão de interoperabilidade do Windows com Linux e Unix. Desde 1992, Samba vem provendo seguros, estáveis e rápidos serviços de arquivo e impressão para todos os clientes usando o protocolo SMB/CIFS, como todas as versões do DOS e Windows, OS/2, Linux e muitos outros.

Para compartilhar arquivos através do Samba, veja a seção #Servidor; para acessar arquivos compartilhados através do Samba em outras máquinas, veja a seção #Cliente.

Servidor

Instalação

Instale o pacote samba.

Samba é configurado pelo arquivo de configuração /etc/samba/smb.conf, o qual é extensivamente documentado em smb.conf(5).

Pelo fato do pacote samba não prover este arquivo, um deverá ser criado antes de iniciar o serviço smb.service.

Um exemplo documentado smb.conf.default do repositório git do Samba pode ser usado para configurar /etc/samba/smb.conf.

Nota:
  • A configuração padrão ajusta log file para uma localização não gravável, o que irá causar erros - aplica-se uma das seguintes soluções:
    • Altere a localização do arquivo de log para um caminho gravável: log file = /var/log/samba/%m.log
    • Altere o log para uma solução de back-end sem arquivo: logging = syslog com syslog only = yes, ou use logging = systemd
  • Se necessário; o workgroup especificado na seção [global] precisa equivaler ao grupo de trabalho do Windows (por padrão WORKGROUP).
Dica: Sempre que você modificar o arquivo smb.conf, execute o comando testparm(1) para verificar por erros de sintaxe.

Ativando e iniciando serviços

Para prover compartilhamento básico de arquivos via SMB, ative/inicie smb.service. Veja smbd(8) para mais detalhes.

Se você deseja tornar o seu servidor acessível via NetBIOS hostname, ajuste o nome desejado através da opção netbios name em smb.conf e ative/inicie nmb.service. Veja nmbd(8) para detalhes.

Nota: nmb.service não é requerido. Entretanto, é necessário para acessar servidores Samba pelo hostname (por exemplo, smb://hostname/) para alguns hosts. Se sua rede é composta somente por máquinas executando Windows 10 ou mais recente, considere instalar também um daemon WSD para que seu servidor apareça ao visualizar o componente "Rede".

Tornar a rede detectável

Instale o pacote avahi, então ative/inicie avahi-daemon.service para tornar o servidor samba detectável com Zeroconf. Isto deve funcionar para a maioria dos gerenciadores de arquivos não-Windws (como Finder do macOS, vários gerenciadores de arquivos baseados em interface gráfica do Linux e BSD etc.)

Se avahi-daemon.service não estiver em execução, o servidor continuará acessível, apenas não detectável, isto é, não aparecerá nos gerenciadores de arquivos, mas você poderá conectar-se ao servidor diretamente pelo IP ou domínio.

O Windows Explorer depende do protocolo WS-Discovery; veja #Windows 1709 ou mais recente não mostra o servidor Samba na rede.

Configurar firewall

Se você estiver usando um firewall, não se esqueça de abrir as portas necessárias (normalmente 137-139 + 445). Para uma lista completa, veja uso de portas pelo Samba.

Regra UFW

Um perfil de aplicativo Ufw para SMB/CIFS é incluído por padrão com a instalação padrão do UFW em ufw-fileserver.

Permita ao Samba executar ufw allow CIFS como root.

Caso tenha excluído o perfil, crie/edite /etc/ufw/applications.d/samba e adicione o seguinte conteúdo:

[Samba]
title=LanManager-like file and printer server for Unix
description=The Samba software suite is a collection of programs that implements the SMB/CIFS protocol for unix systems, allowing you to serve files and printers to Windows, NT, OS/2 and DOS clients. This protocol is sometimes also referred to as the LanManager or NetBIOS protocol.
ports=137,138/udp|139,445/tcp

Em seguida, carregue o perfil no UFW executando ufw app update Samba como root.

Então finalmente dê permissão ao Samba executando ufw allow Samba como root.

Serviço firewalld

Para configurar firewalld para permitir Samba na zona home, execute:

# firewall-cmd --permanent --add-service={samba,samba-client,samba-dc} --zone=home

Os três serviços listados são:

--permanent garante que as mudanças continuem após o reinício do serviço firewalld.service.

Uso

Gerenciamento de usuários

A seguinte seção descreve como criar um banco de dados local (tdbsam) de usuários do Samba. Para autenticação de usuários e outros propósitos, Samba também pode ser vinculado a um domínio do Active Directory, pode servir como um controlador de domínio do Active Directory ou pode ser usado com um servidor LDAP.

Adicionando um usuário

Samba requer uma conta de usuário Linux - você poderá usar uma existente ou criar uma nova.

Nota: O usuário/grupo nobody já deve existir no sistema, é usado como padrão guest account e poderá ser usado para compartilhamentos contendo guest ok = yes, evitando assim a necessidade de login do usuário nesse compartilhamento.

Embora o nome de usuário seja compartilhado com o sistema Linux, o Samba usa uma senha separada daquela das contas de usuário do Linux. Substitua samba_user com a conta de usuário Samba escolhida:

# smbpasswd -a samba_user

Dependendo da função do servidor, permissões de arquivo e atributos existentes podem precisar ser alterados para a conta de usuário do Samba.

Se você deseja que o novo usuário tenha permissão apenas para acessar remotamente os compartilhamentos do servidor de arquivos através do Samba, você pode restringir outras opções de login:

  • disabling shell - usermod --shell /usr/bin/nologin --lock samba_user
  • disabling SSH logons - edit /etc/ssh/sshd_config, change option AllowUsers

Veja também segurança para aumentar a segurança do seu sistema.

Listando usuários

Usuários do Samba podem ser listados usando o comando pdbedit(8):

# pdbedit -L -v
Alterando senha do usuário

Para alterar uma senha do usuário, use smbpasswd:

# smbpasswd samba_user

Criando um compartilhamento anônimo

1. Crie um usuário Linux para o qual os usuários anônimos do Samba serão mapeados.

# useradd guest -s /bin/nologin
Nota: O nome de usuário pode ser qualquer username válido em Linux, não apenas "guest". Este usuário não precisa ser um usuário do Samba.

2. Adicione o seguinte ao /etc/samba/smb.conf:

/etc/samba/smb.conf
...
[global]
security = user
map to guest = bad user
guest account = guest

[guest_share]
    comment = guest share
    path = /tmp/
    public = yes
    only guest = yes
    writable = yes
    printable = no

Usuários anônimos serão agora mapeados ao usuário Linux guest e terão a capacidade de acessar quaisquer diretórios definidos em guest_share.path, o qual é configurado para ser /tmp/ no exemplo acima.

Nota: O nome de compartilhamento não precisa ter "guest" nele. Pode ser qualquer nome de compartilhamento válido para o Samba.

Certifique-se de que o usuário Linux guest possui as permissões apropriadas para acessar arquivos em guest_share.path.

Além disso, certifique-se de que os compartilhamentos foram definidos adequadamente de acordo com a seção Share Definitions de smb.conf.default.

Ativar seguimento de links simbólicos

Atenção: Ativar a opção follow symlinks pode ser um risco de segurança.
/etc/samba/smb.conf
...
[global]
   follow symlinks = yes
   wide links = yes
   unix extensions = no

Então, reinicie smb.service.

Nota: Ao usar AppArmor, caso o link simólico aponte para um diretório fora do diretório home do usuário ou ao diretório usershare, então você precisará modificar as permissões do perfil AppArmor.

Configuração avançada

Ativar compartilhamentos de usuário

Nota: Este recurso é opcional. Pule esta seção caso você não necessite dela.

Compartilhamentos de usuário é um recurso que dá a usuários não-root a capacidade de adicionar, modificar e excluir suas próprias definições de compartilhamento. Veja smb.conf(5) § USERSHARES.

  1. Crie um diretório para compartilhamentos de usuário:
    # mkdir /var/lib/samba/usershares
  2. Crie um grupo de usuários:
    # groupadd -r sambashare
  3. Altere o proprietário do diretório para root e o grupo para sambashare:
    # chown root:sambashare /var/lib/samba/usershares
  4. Altere as permissões do diretório usershares para que os usuários do grupo sambashare possam criar arquivos. Este comando também ajusta o sticky bit, o qual é importante para prevenir que usuários excluam compartilhamentos de outros usuários:
    # chmod 1770 /var/lib/samba/usershares

Ajuste os seguintes parâmetros no arquivo de configuração smb.conf:

/etc/samba/smb.conf
[global]
  usershare path = /var/lib/samba/usershares
  usershare max shares = 100
  usershare allow guests = yes
  usershare owner only = yes

Adicione o usuário ao grupo sambashare. Substitua your_username pelo nome de seu usuário:

# gpasswd sambashare -a your_username

Reinicie os serviços smb.service e nmb.service.

Faça logout e login novamente.

Se desejar compartilhar caminhos dentro de seu diretório home, você deve torná-lo acessível para o grupo others.

Na interface gráfica, você pode usar Thunar ou Dolphin - clique com o botão direito em qualquer diretório e compartilhe-o na rede.

Na linha de comando, use um dos seguintes comandos, substituindo o que está em itálico sharename, user, ... :

# net usershare add sharename abspath [comment] [user:{R|D|F}] [guest_ok={y|n}]
# net usershare delete sharename
# net usershare list wildcard-sharename
# net usershare info wildcard-sharename

Ajustar e forçar permissões

Permissões podem ser aplicadas para ambos servidor e compartilhamentos:

/etc/samba/smb.conf
[global]
  ;inherit owner = unix only ; Inherit ownership of the parent directory for new files and directories
  ;inherit permissions = yes ; Inherit permissions of the parent directory for new files and directories
  create mask = 0664
  directory mask = 2755
  force create mode = 0644
  force directory mode = 2755
  ...

[media]
  comment = Media share accessible by greg and pcusers
  path = /path/to/media
  valid users = greg @pcusers
  force group = +pcusers
  public = no
  writable = yes
  create mask = 0664
  directory mask = 2775
  force create mode = 0664
  force directory mode = 2775

[public]
  comment = Public share where archie has write access
  path = /path/to/public
  public = yes
  read only = yes
  write list = archie
  printable = no

[guests]
  comment = Allow all users to read/write
  path = /path/to/guests
  public = yes
  only guest = yes
  writable = yes
  printable = no

Veja smb.conf(5) para uma visão geral de possíveis bandeiras de permissão e configurações.

Restringir protocolos para maior segurança

Atenção: Por padrão, versões do Samba anteriores a 4.11 permitem conexões usando o desatualizado e inseguro protocolo SMB1. Ao usar uma dessas versões do Samba, é altamente recomendável configurar server min protocol = SMB2_02 para proteger seu sistema de ataques de ransonware. Em versões do Samba 4.11 e mais novas, SMB2 é o protocolo padrão, portanto nenhuma alteração será necessária.

Acrescente server min protocol e server max protocol em /etc/samba/smb.conf para forçar o uso de um protocolo mínimo e máximo:

/etc/samba/smb.conf
[global]
  server min protocol = SMB2_02
  ; server max protocol = SMB3

Veja server max protocol em smb.conf(5) para uma visão geral de protocolos suportados.

Para compatibilidade com clientes e/ou servidores mais antigos, você pode precisar definir client min protocol = CORE ou server min protocol = CORE, mas observe que isto torna o seu sistema mais vulnerável a exploits no SMB1 incluindo ataques de ransonware.

Dica: Use server min protocol = SMB3_00 quando clientes devem apenas conectar-se usando o mais recente protocolo SMB3, por exemplo, clientes usando Windows 8 e mais recentes.

Clientes usando mount.cifs podem necessitar que seja especificado o vers=* correto, por exemplo:

# mount -t cifs //SERVER/sharename /mnt/mountpoint -o username=username,password=password,iocharset=utf8,vers=3.1.1

Veja mount.cifs(8) para mais informações.

Usar criptografia de transporte SMB nativa

A criptografia de transporte SMB nativa está disponível na versão SMB 3.0 ou mais recente. Os clientes que oferecem suporte a esse tipo de criptografia incluem Windows 8 e mais recente, Windows server 2012 e mais recente e smbclient do Samba 4.1 e mais recente.

Para usar a criptografia de transporte SMB nativa por padrão, defina o parâmetro server smb encrypt globalmente e/ou por compartilhamento. Valores possíveis são off, enabled (valor padrão), desired, ou required:

/etc/samba/smb.conf
[global]
  server smb encrypt = desired

Para configurar a criptografia no lado do cliente, use a opção client smb encrypt.

Veja smb.conf(5) para maiores informações, especialmente os parágrafos Effects for SMB1 e Effects for SMB2.

Dica: Ao montar um compartilhamento, especifique a opção de montagem seal para forçaro uso de criptografia.

Desativar compartilhamento de impressora

Por padrão, o Samba compartilha impressoras configuradas usando CUPS.

Se você não quiser que as impressoras sejam compartilhadas, use as seguintes configurações:

/etc/samba/smb.conf
[global]
  load printers = no
  printing = bsd
  printcap name = /dev/null
  disable spoolss = yes
  show add printer wizard = no

Bloquear certas extensões de arquivo em um compartilhamento do Samba

Nota: Definir este parâmetro afetará o desempenho do Samba, pois ele será forçado a verificar todos os arquivos e diretórios para uma correspondência à medida que são verificados.

O Samba oferece uma opção para bloquear arquivos com determinados padrões, como extensões de arquivo. Esta opção pode ser usada para evitar a disseminação de vírus ou para dissuadir os usuários de desperdiçar espaço com determinados arquivos. Mais informações sobre esta opção podem ser encontradas em smb.conf(5).

/etc/samba/smb.conf
...
[myshare]
  comment = Private
  path = /mnt/data
  read only = no
  veto files = /*.exe/*.com/*.dll/*.bat/*.vbs/*.tmp/*.mp3/*.avi/*.mp4/*.wmv/*.wma/

Melhorar o desempenho

Atenção: Cuidado, isso pode levar a problemas de corrupção/conexão e potencialmente prejudicar sua pilha TCP/IP.

As configurações padrão devem ser suficientes para a maioria dos usuários. No entanto, definir 'socket options' corretamente poderá melhorar o desempenho, mas errar pode torná-lo mais lento. Teste o efeito antes de fazer grandes alterações.

Leia smb.conf(5) no manual antes de aplicar quaisquer opções listadas abaixo.

As seguintes configurações deverão ser acrescentadas à seção [global] de /etc/samba/smb.conf.

Definir deadtime é útil para impedir que os recursos de um servidor sejam esgotados por um grande número de conexões inativas:

deadtime = 30

O uso de sendfile pode tornar o uso mais eficiente das CPUs do sistema e fazer com que o Samba seja mais rápido:

use sendfile = yes

Definir um tamanho mínimo de receivefile permite gravações de cópia zero diretamente dos buffers de soquete de rede no cache de buffer do sistema de arquivos (se disponível). Pode melhorar o desempenho, mas o teste do usuário é recomendado:

min receivefile size = 16384

Aumentar o tamanho dos buffers de recebimento/envio e as bandeiras de otimização de soquete podem ser úteis para melhorar o rendimento. Recomenda-se testar cada bandeira separadamente, pois pode causar problemas em algumas redes:

socket options = IPTOS_LOWDELAY TCP_NODELAY IPTOS_THROUGHPUT SO_RCVBUF=131072 SO_SNDBUF=131072
Nota: Ajustes na interface de rede podem ser necessários para que algumas opções funcionem, consulte Sysctl#Networking.

Ativar acesso para dispositivos/clientes antigos

Últimas versões do Samba oferecem métodos de autenticação mais antigos e protocolos que continuam sendo usados por clientes antigos (câmeras de vigilância , etc). Estes dispositivos normalmente requerem que o servidor do Samba permita autenticação NTMLv1 e a versão do protocolo NT1, conhecida como CIFS. Para que estes dispositivos trabalhem com a última versão do Samba, você precisa adicionar estes dois parâmetros de configuração dentro da seção [global]:

server min protocol = NT1
ntlm auth = yes

O acesso anônimo/convidado a um comopartilhamento requer apenas o primeiro parâmetro. Se o dispositivo antigo irá acessar com usuário e senha, você precisará também adicionar a segunda linha.

Ativar busca Spotlight

Spotlight permite que os clientes suportados (por exemplo, MacOS Finder) para rapidamente procurar por arquivos compartilhados.

Instale e inicie/ative OpenSearch. Instale fs2es-indexerAUR, configure os diretórios que deseja que sejam indexados em /etc/fs2es-indexer/config.yml e inicie/ative fs2es-indexer.service para indexação periódica.

Edite smb.conf como descrito na wiki do Samba para ativar Spotlight por compartilhamento, e reinicie smb.service para aplicar as alterações.

Cliente

Instale smbclient para uma interface de linha de comando ftp. Veja smbclient(1) para os comandos comumente usados.

Para uma alternativa leve (sem suporte para listar ações públicas, etc.), instale cifs-utils que provê /usr/bin/mount.cifs.

Dependendo do ambiente desktop, métodos de interface gráfica estarão disponíveis. Veja #Configuração do gerenciador de arquivos para uso com um gerenciador de arquivos.

Nota:

Listar compartilhamentos públicos

O seguinte comando lista compartilhamentos públicos em um servidor:

$ smbclient -L hostname -U%

Alternativamente, executar $ smbtree -N irá exibir um diagrama de árvore de todos os compartilhamentos. Ele usa consultas de transmissão e, portanto, não é aconselhável em uma rede com muitos computadores, mas pode ser útil para diagnosticar se você tiver o nome de compartilhamento correto. A opção -N (-no-pass) suprime a solicitação de senha.

Nota: smbtree usa SMB1 e NetBIOS, o que significa que eles devem estar habilitados nos servidores e você precisa definir client min protocol = NT1 em smb.conf no cliente. Caso contrário, smbtree emitirá uma saída vazia.

Hostnames NetBIOS/WINS

Clientes Samba lidam com hostnames NetBIOS automaticamente por padrão (o comportamento é controlado pela opção name resolve order em smb.conf). Outros programas (incluindo mount.cifs) tipicamente usam Name Service Switch, o qual não lida com NetBIOS por padrão.

O pacote smbclient fornece um controlador libnss para resolver hostnames NetBIOS. Para usa-lo, instale juntamente com o pacote samba (o qual fornece a daemon winbindd), inicie/ative winbind.service e adicione wins à linha hosts em nsswitch.conf(5):

/etc/nsswitch.conf
...
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns wins
...
Nota: Devido a um erro em winbind.service, você pode ter que modificar o arquivo de unidade conforme descrito neste bug-report

Agora, durante a resolução de host (por exemplo, ao usar mount.cifs ou simplesmente ping netbios-name), winbindd irá resolver o nome do host enviando consultas usando Serviço de Nomes NetBIOS (NBNS, também conhecido como protocolo WINS).

Por padrão, ele envia uma consulta de transmissão para sua rede local. Caso tenha um servidor WINS, você poderá adicionar wins server = wins-server-ip ao smb.conf e reiniciar winbind.service, então winbindd e outros clientes Samba irão enviar consultas unicast para o IP especificado.

Se desejar resolver sou nome de host local (especificado na opção netbios name em smb.conf), inicie/ative nmb.service, o qual lidará com as consultas recebidas.

Você pode testar a resolução WINS com nmblookup. Por padrão, ela transmite consultas para sua rede local independentemente da opção wins server.

Observe que a resolução WINS exige tráfego de entrada oriundo da porta 137.

Desativar o suporte a NetBIOS/WINS

Quando não se usa resolução de nome de host NetBIOS/WINS, pode ser preferível desativar este protocolo:

/etc/samba/smb.conf
[global]
  disable netbios = yes
  dns proxy = no

Finalmente desative/pare winbind.service.

Montagem manual

Monte o compartilhamento usando mount.cifs como type. Nem todas as opções listadas abaixo são necessárias ou desejáveis:

# mount --mkdir -t cifs //SERVER/sharename /mnt/mountpoint -o username=username,password=password,workgroup=workgroup,iocharset=utf8,uid=username,gid=group

As opções uid e gid correspondem ao local (por exemplo, cliente) usuário/grupo de usuários que terão acesso de leitura/gravação no caminho fornecido.

Nota:
  • Caso uid e gid usados não equivalham ao usuário do servidor, as opções forceuid e forcegid poderão ser úteis. No entanto, observe que as permissões atribuídas a um arquivo quando forceuid ou forcegid que estão em vigor podem não refletir as permissões reais (do servidor). Veja a seção File And Directory Ownership And Permissions em mount.cifs(8) § FILE AND DIRECTORY OWNERSHIP AND PERMISSIONS para mais informações.
  • Para montar um compartilhamento Windows sem autenticação, use "username=*".
Atenção: Usar uid e/ou gid como opções de montagem podem causar erros de I/O, portanto, em vez disso, é recomendável definir/verificar as permissões e atributos de arquivos corretas.
  • SERVER — O nome do servidor.
  • sharename — O diretório compartilhado.
  • mountpoint — O diretório local onde o compartilhamento será montado.
  • [-o options] — Veja mount.cifs(8) para mais informações.
Nota:
  • Abstenha-se de usar uma / seguinte. //SERVER/sharename/ não irá funcionar.
  • Se sua montagem não ficar estável, com engasgos e travamentos, tente ativar uma versão diferente do protocolo SMB com a opção vers=. Por exemplo, vers=2.0 para uma montagem do Windows Vista.
  • Se estiver excedendo o tempo limite em um compartilhamento de rede montado com cifs em um desligamento, veja wpa_supplicant#Problem with mounted network shares (cifs) and shutdown.

Armazenando senhas de compartilhamentos

Armazenar senhas em um arquivo legível por todos não é recomendado. Um método mais seguro é usar um arquivo de credenciais, por exemplo, dentro de /etc/samba/credentials:

/etc/samba/credentials/share
username=myuser
password=mypass

Para o comando de montagem, substitua username=myuser,password=mypass por credentials=/etc/samba/credentials/share.

O arquivo de credencial deve ser explicitamente legível/gravável por root:

# chown root:root /etc/samba/credentials
# chmod 700 /etc/samba/credentials
# chmod 600 /etc/samba/credentials/share

Montagem automática

Nota: Talvez seja necessário ativar systemd-networkd-wait-online.service ou NetworkManager-wait-online.service (dependendo das suas configurações) para habilitar corretamente durante a inicialização.

Using NetworkManager and GIO/gvfs

NetworkManager pode ser configurado para executar um script quando ocorrerem alterações no status de rede do sistema. Este script usa o comando gio para que ele monte os compartilhamentos do Samba automaticamente, da mesma forma que seu gerenciador de arquivos faz, conforme explicado abaixo. O script também desmonta com segurança os compartilhamentos do Samba antes que a conexão de rede relevante seja desabilitada, ouvindo os eventos pre-down e vpn-pre-down. Torne o script executável executable após criá-lo.

/etc/NetworkManager/dispatcher.d/30-samba.sh
#!/bin/sh

# Find the connection UUID with "nmcli con show" in terminal.
# All NetworkManager connection types are supported: wireless, VPN, wired...
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"

# The user the share will be mounted under
USER="yourusername"
# The path that appears in your file manager when you manually mount the share you want
SMB_URL="smb://servername/share"

# Get runtime user directory. If it does not exist, do nothing and just exit
XDG_RUNTIME_DIR=$(loginctl show-user --property=RuntimePath --value "$USER") || exit 0

if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
    
    # Script parameter $1: network interface name, not used
    # Script parameter $2: dispatched event
    
    case "$2" in
        "up"|"vpn-up")
            su $USER -c "DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus gio mount $SMB_URL"
            ;;
        "pre-down"|"vpn-pre-down")
            su $USER -c "DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus gio mount -uf $SMB_URL"
            ;;
    esac
fi

Cria um link simbólico dentro de /etc/NetworkManager/dispatcher.d/pre-down para capturar os eventos pre-down:

# ln -s /etc/NetworkManager/dispatcher.d/30-samba.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-samba.sh
Nota: Como este script usa o barramento do usuário, ele só funcionará se o usuário tiver sessões ativas. Isso significa que o compartilhamento não será montado automaticamente após a inicialização se a conexão for estabelecida antes de você estar logado.

Como uma entrada de montagem

Este á um simples exemplo de uma entrada de montagem no fstab do tipo cifs que requer autenticação:

/etc/fstab
//SERVER/sharename /mnt/mountpoint cifs _netdev,nofail,username=myuser,password=mypass 0 0
Nota:
  • Espaços no nome do compartilhamento deverão ser substituídos por \040 (código ASCII para espaços, em octal). Por exemplo, //SERVER/nome do compartilhamento na linha de comando deve ser //SERVER/nome\040do\040compartilhamento em /etc/fstab.
  • Para permitir que os usuários o montem desde que o ponto de montagem resida em um diretório controlado pelo usuário; ou seja, dentro do diretório home, acrescente a opção de montagem users. A opção é users (no plural). Para outros tipos de sistema de arquivos manipulados pelo mount, esta opção geralmente é user; sem o "s".
Tip: Use x-systemd.automount caso queira que eles sejam montados apenas após o acesso. Veja fstab (Português)#Sistema de arquivos remoto para detalhes.

Como unit do systemd

Crie um novo arquivo .mount dentro de /etc/systemd/system, por exemplo mnt-myshare.mount. Veja systemd.mount(5) para detalhes.

Nota: Certifique-se de que o nome do arquivo corresponda ao ponto de montagem que queira usar. Por exemplo, o nome de unit mnt-myshare.mount somente pode ser usado se estiver montando o compartilhamento sob /mnt/myshare. Caso contrário, o seguinte erro ocorrerá: systemd[1]: mnt-myshare.mount: Where= setting does not match unit name. Refusing..

What= caminho para o compartilhamento

Where= caminho para montar o compartilhamento

Options= opções de montagem do compartilhamento

Nota:
  • Unidades de montagem em rede adquirem automaticamente dependências After em remote-fs-pre.target, network.target e network-online.target, e ganham uma dependência Before em remote-fs.target, a menos que a opção de montagem nofail esteja definida. Para este último, uma unidade Wants é adicionada também.
  • Acrescente noauto em Options para impedir a montagem automática durante a inicialização (a menos que seja puxado por alguma outra unidade).
  • Caso queira usar um nome de host para o servidor que deseja compartilhar (em vez de um endereço IP), adicione nss-lookup.target a After. Isso pode evitar erros de montagem no momento da inicialização que não surgem ao testar a unidade.
/etc/systemd/system/mnt-myshare.mount
[Unit]
Description=Mount Share at boot

[Mount]
What=//server/share
Where=/mnt/myshare
Options=_netdev,credentials=/etc/samba/credentials/myshare,iocharset=utf8,rw
Type=cifs
TimeoutSec=30

[Install]
WantedBy=multi-user.target
Dica:
  • Caso o sistema fique inalcançável, acrescente ForceUnmount=true em [Mount], permitendo que a montagem seja forçada.
  • Se seu compartilhamento tiver grupos com acesso somente leitura, acrescente uid=username ou gid=group em Options=, para especificar seu usuário/grupo permitindo escrita no compartilhamento.

Para usar mnt-myshare.mount, inicie a unit e ative a mesma para que execute durante a inicialização do sistema.

Montagem automática

Para automaticamente montar um compartilhamento (quando acessado, como autofs), uma maneira é usar a seguinte unit de de montagem automática:

/etc/systemd/system/mnt-myshare.automount
[Unit]
Description=Automount myshare

[Automount]
Where=/mnt/myshare

[Install]
WantedBy=multi-user.target

Desative/pare a unit mnt-myshare.mount e ative/inicie mnt-myshare.automount para montagem automática do compartilhamento quando o caminho de montagem estiver sendo acessado.

Dica: Acrescente TimeoutIdleSec para ativar a desmontagem automática. Veja systemd.automount(5) para detalhes.

smbnetfs

Nota: smbnetfs precisa de uma configuração de servidor Samba intacta. Veja acima como fazer isso.

Primeiro, verifique se você consegue visualizar todos os compartilhamentos que você está interessado em montar:

$ smbtree -U remote_user

Se isso não funcionar, localize e modifique apropriadamente a seguinte linha em /etc/samba/smb.conf:

domain master = auto

Agora reinicie smb.service e nmb.service.

Se tudo funcionar como esperado, instale smbnetfs.

Então, adicione a seguinte linha ao /etc/fuse.conf:

user_allow_other

Agora copie o diretório /etc/smbnetfs/.smb para o seu diretório home:

$ cp -a /etc/smbnetfs/.smb ~

Então crie um link para smb.conf:

$ ln -sf /etc/samba/smb.conf ~/.smb/smb.conf

Caso um usuário e senha sejam solicitados para acessar alguma das pastas do compartilhamento, edite ~/.smb/smbnetfs.auth para incluir uma ou mais entradas, assim:

~/.smb/smbnetfs.auth
auth			"hostname" "username" "password"

Também é possível adicionar entradas para hosts específicos a serem montados pelo smbnetfs, se necessário. Mais detalhes podem ser encontrados em ~/.smb/smbnetfs.conf.

Se estiver usando Dolphin ou GNOME Files, talvez queira adicionar o seguinte ao ~/.smb/smbnetfs.conf para evitar erros "disco cheio" já que smbnetfs por padrão relatará 0 bytes de espaço livre:

~/.smb/smbnetfs.conf
free_space_size 1073741824

Ao terminar a configuração, será necessário executar

$ chmod 600 ~/.smb/smbnetfs.*

Caso contrário, smbnetfs reclamará de 'permissões de arquivo de configuração inseguras'.

Finalmente, para montar sua vizinhança de rede Samba em um diretório de sua escolha, chame

$ smbnetfs mount_point
Daemon

O pacote Arch Linux também mantém um modo de operação adicional em todo o sistema para smbnetfs. Para habilitá-lo, você precisa fazer as referidas modificações no diretório /etc/smbnetfs/.smb.

Então, você podera iniciar/ativar a daemon smbnetfs como o usual. O ponto de montagem de todo o sistema está em /mnt/smbnet/.

autofs

Veja Autofs para informações sobre montagem automática baseada em kernel para Linux.

Configuração do gerenciador de arquivos

GNOME Files, Nemo, Caja, Thunar e PCManFM

Para acessar compartilhamentos samba pelos gerenciadores de arquivos GNOME Files, Nemo, Caja, Thunar ou PCManFM, instale o pacote gvfs-smb.

Pressione Ctrl+l e insira smb://nome_do_servidor/compartilhamento na barra de locais para acessar seu compartilhamento.

O compartilhamento montado estará provavelmente em /run/user/seu_UID/gvfs ou ~/.gvfs no sistema de arquivos.

KDE

Aplicações do KDE (como Dolphin) tem a capacidade de navegar por compartilhamentos do Samba embutida. Use o caminho smb://nome_do_servidor/compartilhamento para navegar pelos arquivos. Caso deseje acessar arquivos por uma aplicação que não seja do KDE, você pode instalar kio-fuse.

Para usar uma interface gráfica nas Configurações do Sistema KDE, você precisará instalar o pacote kdenetwork-filesharing.

Outros ambientes gráficos

Existem vários programas úteis, mas eles podem precisar ter pacotes criados para eles. Isso pode ser feito com o sistema de compilação do pacote Arch. Uma vantagem desses outros é que eles não exigem que um ambiente específico seja instalado para suportá-los e, portanto, trazem menos bagagem.

  • pyneighborhoodAUR
  • LinNeighborhood, RUmba, xffm-samba plugin para Xffm não estão disponíveis nos repositórios oficiais ou no AUR. Como eles não são oficialmente (nem mesmo extraoficialmente suportados), eles podem estar obsoletos e poderão sequer funcionar.

Dicas e truques

Descobrindo compartilhamentos de rede

Se nada for conhecido sobre outros sistemas na rede local e ferramentas automatizadas como smbnetfs não estiverem disponíveis, você poderá investigar manualmente os compartilhamentos do Samba.

Primeiro, instale os pacotes nmap e smbclient.

Use nmap para varrer sua rede local para encontrar sistemas com a porta TCP 445 aberta, que é a porta usada pelo protocolo SMB. Observe que talvez seja necessário usar -Pn ou definir um tipo de varredura ping personalizada (por exemplo, -PS445) porque sistemas Windows são geralmente protegidos por firewall.

$ nmap -p 445 "192.168.1.*"
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-13 12:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0011s latency).

PORT    STATE  SERVICE
445/tcp open  microsoft-ds

Nmap scan report for 192.168.1.2
Host is up (0.00011s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Nmap done: 256 IP addresses (2 hosts up) scanned in 2.45 seconds

O primeiro resultado é o outro sistema; o segundo é o cliente de onde esta verificação foi realizada.

Agora você pode se conectar a esses endereços IP diretamente, mas se quiser usar nomes de host NetBIOS, você pode usar nmblookup(1) para verificar os nomes NetBIOS. Observe que isso não funcionará se o NetBIOS estiver desabilitado no servidor.

$ nmblookup -A 192.168.1.1
Looking up status of 192.168.1.1
        PUTER           <00> -         B <ACTIVE>
        HOMENET         <00> - <GROUP> B <ACTIVE>
        PUTER           <03> -         B <ACTIVE>
        PUTER           <20> -         B <ACTIVE>
        HOMENET         <1e> - <GROUP> B <ACTIVE>
        USERNAME        <03> -         B <ACTIVE>
        HOMENET         <1d> -         B <ACTIVE>
        MSBROWSE        <01> - <GROUP> B <ACTIVE>

Independentemente da saída, obser em <20>, que corresponde ao host com serviços abertos.

Use smbclient(1) para listar quais serviços são compartilhados nesses sistemas. Você pode usar o nome do host NetBIOS (PUTER neste exemplo) em vez do IP quando disponível. Se for solicitada uma senha, pressionar enter ainda deve exibir a lista:

$ smbclient -L \\192.168.1.1
Sharename       Type      Comment
---------       ----      -------
MY_MUSIC        Disk
SHAREDDOCS      Disk
PRINTER$        Disk
PRINTER         Printer
IPC$            IPC       Remote Inter Process Communication

Server               Comment
---------            -------
PUTER

Workgroup            Master
---------            -------
HOMENET               PUTER

Controle remoto de um computador Windows

Samba oferece uma coletânea de ferramentas para comunicação com Windows. Isso pode ser útil se o acesso a um computador Windows por meio da área de trabalho remota não for uma opção, como mostrado em alguns exemplos.

Enviar o comando shutdown com comentário:

$ net rpc shutdown -C "comment" -I IPADDRESS -U USERNAME%PASSWORD

Em vez disso, um desligamento forçado pode ser invocado alterando -C com comentário por um simples -f. Para um reinício, somente adicione -r, seguida de um -C ou -f.

Parar e reiniciar serviços:

$ net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

Para ver todos os possíveis comandos da gama net rpc:

$ net rpc

Solucionando problemas

Falha ao iniciar o servidor Samba SMB/CIFS

Possíveis soluções:

  • Verifique erros de sintaxe no arquivo smb.conf com testparm(1).
  • Defina permissões corretas para /var/cache/samba/ e reinicie smb.service:
# chmod 0755 /var/cache/samba/msg

Problemas de permissão com SELinux

SELinux não permite que o samba acesse os diretórios pessoais do usuário por padrão, para resolver isso, execute:

# setsebool -P samba_enable_home_dirs 1

Similarmente, samba_export_all_ro e samba_export_all_rw fazem com que Samba seja capaz de ler ou "ler e gravar" todos os arquivos.

Problemas de permissão com AppArmor

Se estiver usando um caminho de compartilhamento localizado fora de um diretório home ou de compartilhamentos do usuário, coloque-o na lista de permissões em /etc/apparmor.d/local/usr.sbin.smbd. Por exemplo:

/etc/apparmor.d/local/usr.sbin.smbd
"/data/" rk,
"/data/**" lrwk,

Dialeto não especificado na montagem

O cliente está usando uma versão não suportada do SMB/CIFS que é requerida pelo servidor.

Veja #Restringir protocolos para maior segurança para mais informações.

Impossível sobrescrever arquivos, erros de permissão

The factual accuracy of this article or section is disputed.

Reason: Um usuário deve definir/verificar as permissões do servidor/cliente, em vez de usar sinalizadores incorretos/possivelmente inseguros. (Discuss in Talk:Samba (Português))

Possíveis soluções:

  • Acrescente a opção de montagem nodfs à entrada no /etc/fstab.
  • Adicione msdfs root = no à seção [global] do /etc/samba/smb.conf, no servidor.

Os clientes Windows continuam pedindo senha mesmo quando os compartilhamentos do Samba são criados com permissões de convidado

Defina map to guest dentro da seção global de /etc/samba/smb.conf:

map to guest = Bad Password

Se estiver usando Samba inferior a 4.10.10, use Bad User em vez de Bad Password.

Problemas de conectividade com Windows 7 - mount error(12): cannot allocate memory

Um bug conhecido do Windows 7 que causa "mount error(12): cannot allocate memory" em um compartilhamento cifs perfeito no Linux, no fim das contas pode ser corrigido definindo algumas chaves de registro na caixa do Windows da seguinte maneira:

  • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache (set to 1)
  • HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size (set to 3)

Como alternativa, inicie o prompt de comando no modo administrador e execute o seguinte:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "LargeSystemCache" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v "Size" /t REG_DWORD /d 3 /f

Siga um destes procedimentos para que as configurações tenham efeito:

  • Reinicie o Windows
  • Reinicie o serviço de servidor via services.msc
  • A partir de um prompt de comando, execute: 'net stop lanmanserver' e 'net start lanmanserver' - O servidor irá reiniciar automaticamente depois de pará-lo.
Nota: Uma pesquisa no Google irá revelar outro ajuste recomendando aos usuários que é adicionar uma chave modificando o tamanho "IRPStackSize". Isso é incorreto para corrigir esse problema no Windows 7. Não faça isso.

Artigo original.

Problemas de conectividade com Windows 10 1709 e superiores - "Windows cannot access" 0x80004005

Este erro afeta algumas máquinas que executam o Windows 10 versão 1709 e posterior. Não está relacionado à desativação do SMB1 nesta versão, mas ao fato de a Microsoft desabilitar logons inseguros para convidados nesta versão para alguns, mas não para outros.

Para corrigir, abra o editor de Diretivas de Grupo (gpedit.msc). Navegue até Configuração do computador\modelos administrativos\rede\Estação de trabalho Lanman > Habilitar logons de convidados inseguros e habilite-o. Como alternativa, altere o seguinte valor no registro:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"AllowInsecureGuestAuth"=dword:1

Erro: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL

Se você é um usuário doméstico e usa o samba apenas para compartilhamento de arquivos de um servidor ou NAS, provavelmente não está interessado em compartilhar impressoras por meio dele. Nesse caso, você pode evitar que esse erro ocorra adicionando as seguintes linhas ao seu /etc/samba/smb.conf:

/etc/samba/smb.conf
[global]
  load printers = No
  printing = bsd
  printcap name = /dev/null
  disable spoolss = Yes

Reinicie o serviço do samba, smb.service, e então verifique os logs:

# cat /var/log/samba/smbd.log

e o erro não deverá mais estar aparecendo.

Falha ao compartilhar uma pasta

Isso significa que enquanto você está compartilhando uma pasta do Dolphin (gerenciador de arquivos) e tudo parece bem no início, depois de reiniciar o Dolphin o ícone de compartilhamento desapareceu da pasta compartilhada, e também algumas saídas como esta do terminal (Konsole):

‘net usershare’ returned error 255: net usershare: usershares are currently disabled

Para corrigir isto, ative o compartilhamento do usuário conforme descrito em #Ativar compartilhamentos de usuário.

"Nevagação" da rede falha com "Failed to retrieve share list from server"

E você está usando um firewall (iptables) porque não confia na sua rede local (escola, universidade, hotel). Isso pode ser devido ao seguinte: Quando o smbclient está navegando na rede local, ele envia uma solicitação de transmissão na porta udp 137. Os servidores na rede respondem ao seu cliente, mas como o endereço de origem desta resposta é diferente do destino endereço que o iptables viu ao enviar a solicitação para a listagem, o iptables não reconhecerá a resposta como "ESTABLISHED" ou "RELATED" e, portanto, o pacote será descartado. Uma possível solução é adicionar:

iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns

às definições de seu iptables.

Para Uncomplicated Firewall, será preciso adicionar nf_conntrack_netbios_ns ao final da seguinte linha em /etc/default/ufw

IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_irc nf_nat_irc"

e então executar o seguinte comando como root:

echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
ufw allow CIFS
ufw reload

Para tornar esta alteração persistente às reinicializações, adicione a seguinte linha ao final de /etc/ufw/sysctl.conf:

net.netfilter.nf_conntrack_helper=1

Protocolo de negociação falhou: NT_STATUS_INVALID_NETWORK_RESPONSE

O cliente provavelmente não tem acesso a compartilhamentos. Certifique-se de que o endereço IP dos clientes esteja na linha hosts allow = em /etc/samba/smb.conf.

Um outro problema pode ser o fato de que o cliente usa uma versão de protocolo inválida. Para verificar isso, tente conectar com o smbclient onde você especifica a versão máxima do protocolo manualmente:

$ smbclient -U <user name> -L //<server name> -m <protocol version: e. g. SMB2> -W <domain name>

Se o comando foi bem-sucedido, crie um arquivo de configuração:

~/.smb/smb.conf
[global]
  workgroup = <domain name>
  client max protocol = SMB2

Falha na conexão com o servidor: (Erro NT_STATUS_UNSUCCESSFUL)

Você provavelmente está passando um nome de servidor errado para smbclient. Para descobrir o nome do servidor, execute hostnamectl no servidor e veja a linha "Transient hostname"

Falha na conexão com o servidor: (Erro NT_STATUS_CONNECTION_REFUSED)

Certifique-se de que o servidor foi iniciado. Os diretórios compartilhados devem existir e ser acessíveis.

Falha com o protocolo de negociação: NT_STATUS_CONNECTION_RESET

Provavelmente o servidor está configurado para não aceitar o protocolo SMB1. Adicione a opção client max protocol = SMB2 em /etc/samba/smb.conf. Ou simplesmente passe o argumento -m SMB2 para smbclient.

Erro de senha quando as credenciais corretas são informadas (error 1326)

Samba 4.5 possui autenticação NTLMv1 desativada por padrão. É recomendável instalar as atualizações mais recentes disponíveis em clientes e negar acesso a clientes não suportados.

Se você ainda precisar de suporte para clientes muito antigos sem suporte ao NTLMV2 (por exemplo, Windows XP), é possível forçar a ativação do NTLMV1, embora isso não seja recomendável, por razões de segurança:

/etc/samba/smb.conf
[global]
  lanman auth = yes
  ntlm auth = yes

Se os clientes NTLMV2 não conseguirem autenticar quando o NTLMV1 tiver sido ativado, crie o seguinte arquivo no cliente:

/home/user/.smb/smb.conf
[global]
  sec = ntlmv2
  client ntlmv2 auth = yes

Esta mudança também afeta os compartilhamentos de samba montados com mount.cifs. Se após a atualização para o Samba 4.5 sua montagem falhar, adicione a opção sec=ntlmssp ao seu comando de montagem, por exemplo.

mount.cifs //server/share /mnt/point -o sec=ntlmssp,...

Veja a página de manual do mount.cifs(8): ntlmssp - Use o hash de senha NTLMv2 encapsulado como mensagem Raw NTLMSSP. O padrão nas versões principais do kernel anteriores à v3.8 era sec=ntlm. Na v3.8, o padrão foi alterado para sec=ntlmssp.

Mapeando com caracteres reservador do Windows

Iniciando com o kernel 3.18, o módulo cifs usa a opção "mapposix" por padrão. Ao montar um compartilhamento usando extensões unix e uma configuração padrão do Samba, arquivos e diretórios contendo um dos sete caracteres reservados do Windows : \ * < > ? estão listados, mas não podem ser acessados.

Possíveis soluções são:

  • Usar a não documentada opção de montagem nomapposix para cifs
# mount.cifs //server/share /mnt/point -o nomapposix
  • Configurar o Samba para remapear o estilo de caracteres mapposix ("SFM", Services for Mac) para os nativos corretos usando fruit
/etc/samba/smb.conf
[global]
  vfs objects = catia fruit
  fruit:encoding = native
  • Manualmente remapear os caracteres proibidos usando catia
/etc/samba/smb.conf
[global]
  vfs objects = catia
  catia:mappings = 0x22:0xf022, 0x2a:0xf02a, 0x2f:0xf02f, 0x3a:0xf03a, 0x3c:0xf03c, 0x3e:0xf03e, 0x3f:0xf03f, 0x5c:0xf05c, 0x7c:0xf07c, 0x20:0xf020

A última abordagem (usando catia ou fruit) tem a desvantagem de filtrar arquivos com caracteres não imprimíveis.

Pasta compartilhada dentro do ambiente gráfico não está disponível para convidados

Esta seção pressupõe:

  1. Compartilhamentos do usuário são configurados seguindo a seção anterior
  2. Uma pasta compartilhada foi criada como um usuário não root da interface gráfica
  3. O acesso de convidados foi definido para a pasta compartilhada durante a criação
  4. O serviço Samba foi reiniciado pelo menos uma vez desde a última modificação do arquivo /etc/samba/smb.conf

Apenas para fins de esclarecimento, nas seguintes subseções assume-se:

  • A pasta compartilhada está localizada dentro do caminho do diretório inicial do usuário (/home/yourUser/Shared)
  • O nome da pasta compartilhada é MySharedFiles
  • O acesso de convidado é somente leitura.
  • Os usuários do Windows acessarão o conteúdo da pasta compartilhada sem o prompt de login

Verifique a correta configuração do samba

Execute o seguinte comando em um terminal para testar a correção do arquivo de configuração:

$ testparm

Verifique a criação correta da pasta compartilhada

Execute os seguintes comandos a partir de um terminal:

$ cd /var/lib/samba/usershare
$ ls

Se tudo estiver bem, você notará um arquivo chamado mysharedfiles

Leia o conteúdo do arquivo usando o seguinte comando:

$ cat mysharedfiles

A saída do terminal deve exibir algo assim:

/var/lib/samba/usershare/mysharedfiles
path=/home/yourUser/Shared
comment=
usershare_acl=S-1-1-0:r
guest_ok=y
sharename=MySharedFiles

Verifique o acesso à pasta pelo convidado

Execute o seguinte comando a partir de um terminal. Se for solicitada uma senha, basta pressionar Enter:

$ smbclient -L localhost

Se tudo estiver bem, MySharedFiles deve ser exibido na coluna Sharename

Execute o seguinte comando para acessar a pasta compartilhada como convidado (login anônimo)

$ smbclient -N //localhost/MySharedFiles

Se tudo estiver bem, o prompt do cliente samba será exibido:

smb: \>

No prompt do samba, verifique se o convidado pode listar o conteúdo do diretório:

smb: \> ls

Se o erro NTFS_STATUS_ACCESS_DENIED for exibido, o problema provavelmente está nas permissões do diretório Unix. Certifique-se de que seu usuário do samba tenha acesso à pasta e a todas as pastas pai. Você pode testar isso usando sudo no usuário e tentar listar o diretório de montagem e todos os seus pais.

Mount error: Host is down

Este erro pode ser visto ao montar compartilhamentos de servidores Synology NAS. Use a opção de montagem vers=1.0 para resolvê-lo.

Nota: A versão 1 do SMB é conhecida por ter vulnerabilidades de segurança e foi usada em ataques de ransomware bem-sucedidos.

Software caused connection abort

Os gerenciadores de arquivos que utilizam gvfs-smb podem mostrar o erro Software caused connection abort ao gravar um arquivo em um compartilhamento/servidor. Isso pode ser devido ao servidor executando SMB/CIFS versão 1, que muitos roteadores usam para compartilhamento de unidade USB (por exemplo, roteadores Belkin). Para gravar nesses compartilhamentos, especifique a versão CIFS com a opção vers=1.0. Por exemplo:

/etc/fstab
//SERVER/sharename /mnt/mountpoint cifs _netdev,guest,file_mode=0777,dir_mode=0777,vers=1.0 0 0

Isso também pode acontecer após atualizar o Samba para a versão 4.11, que desativa o SMB1 como padrão, e acessar qualquer compartilhamento do Samba. Você pode reativá-lo adicionando

/etc/samba/smb.conf
[global]
client min protocol = CORE

Problemas de conexão (devido a erros de autenticação)

Certifique-se de não deixar nenhum caractere de espaço antes de seu nome de usuário no arquivo de configuração do cliente Samba da seguinte forma:

~/.samba
username= user
password=pass

O formato correto é o seguinte:

~/.samba
username=user
password=pass

Windows 1709 ou mais recente não mostra o servidor Samba na rede

Com o Windows 10 versão 1511, o suporte para SMBv1 e, portanto, a descoberta de dispositivos NetBIOS foi desabilitado por padrão. Dependendo da edição real, as versões posteriores do Windows a partir da versão 1709 ("Fall Creators Update") não permitem mais a instalação do cliente SMBv1. Isso faz com que os hosts que executam o Samba não sejam listados nas visualizações "Rede (Vizinhança)" do Explorer. Embora não haja problemas de conectividade e o Samba ainda funcione bem, os usuários podem querer que seus hosts Samba sejam listados pelo Windows automaticamente. wsdd implementa uma daemon de host do Web Service Discovery. Isso permite que hosts (Samba), como seu dispositivo NAS local, sejam encontrados por Clientes de Descoberta de Serviços da Web, como o Windows. As configurações padrão devem funcionar para a maioria das instalações, tudo o que você precisa fazer é ativar o wsdd.service.

Se estiver com a configuração padrão, anunciar-se na rede com o nome do host da máquina no grupo "WORKGROUP" deve ser tudo o que você precisa na maioria dos casos. Caso seja necessário, você pode alterar as opções de configuração passando argumentos adicionais para wsdd adicionando-os em /etc/conf.d/wsdd (consulte a página de manual para wsdd para obter detalhes).

wsdd2AUR faz a mesma coisa, mas é escrito em C em vez de Python. Por padrão, ele procurará os valores netbios name e workgroup em smb.conf.

Arquivos IOS não podem mais ser copiados para o compartilhamento Samba no Arch Linux começando com IOS 14.5

Começando com o IOS 14.5 tentando transferir de um dispositivo executando o IOS usando o aplicativo "Files" para um compartilhamento de samba no Arch Linux resultará no erro:

The operation couldn't be completed
Operation canceled

Para corrigir esse problema, adicione o seguinte à seção global do seu smb.conf e reinicie smb.service. Comentário opcional:

## addition for IOS Files transfer-to server
vfs object = fruit streams_xattr

Veja https://apple.stackexchange.com/q/424681 Apple.Stackexchange.com - "The operation couldn't be completed"/"Operation canceled" error message when saving to a Samba share via Files app.

Veja também