Samba (Português)
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
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
.
- 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
comsyslog only = yes
, ou uselogging = systemd
- Altere a localização do arquivo de log para um caminho gravável:
- Se necessário; o
workgroup
especificado na seção[global]
precisa equivaler ao grupo de trabalho do Windows (por padrãoWORKGROUP
).
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.
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:
-
samba
: para compartilhar arquivos com terceiros. -
samba-client
: para navegar por compartilhamentos em outras máquinas na rede. -
samba-dc
: para Samba/Active Directory domain controller.
--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.
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 optionAllowUsers
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
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.
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
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
.
Configuração avançada
Ativar compartilhamentos de usuário
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.
- Crie um diretório para compartilhamentos de usuário:
# mkdir /var/lib/samba/usershares
- Crie um grupo de usuários:
# groupadd -r sambashare
- Altere o proprietário do diretório para
root
e o grupo parasambashare
:# chown root:sambashare /var/lib/samba/usershares
- Altere as permissões do diretório
usershares
para que os usuários do gruposambashare
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
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.
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.
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
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
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
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.
-
smbclient requer um arquivo
/etc/samba/smb.conf
(veja #Instalação), o qual você pode criar como um arquivo vazio usando o utilitáriotouch
. - Após a instalação de cifs-utils ou smbclient, carregue o módulo do kernel
cifs
ou reinicie o sistema para prevenir falhas na montagem.
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.
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 ...
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.
- Caso
uid
egid
usados não equivalham ao usuário do servidor, as opçõesforceuid
eforcegid
poderão ser úteis. No entanto, observe que as permissões atribuídas a um arquivo quandoforceuid
ouforcegid
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=*"
.
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.
- 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
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
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
- 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".
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.
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
- Unidades de montagem em rede adquirem automaticamente dependências
After
emremote-fs-pre.target
,network.target
enetwork-online.target
, e ganham uma dependênciaBefore
emremote-fs.target
, a menos que a opção de montagemnofail
esteja definida. Para este último, uma unidadeWants
é adicionada também. -
Acrescente
noauto
emOptions
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
aAfter
. 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
- 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
ougid=group
emOptions=
, 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.
TimeoutIdleSec
para ativar a desmontagem automática. Veja systemd.automount(5) para detalhes.smbnetfs
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 reiniciesmb.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
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 to1
) -
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size
(set to3
)
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.
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.
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:
- Compartilhamentos do usuário são configurados seguindo a seção anterior
- Uma pasta compartilhada foi criada como um usuário não root da interface gráfica
- O acesso de convidados foi definido para a pasta compartilhada durante a criação
- 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.
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
- Official website
- Samba: An Introduction
- Samba 3.2.x HOWTO and Reference Guide (outdated but still most extensive documentation)
- Wikipedia
- Gentoo:Samba/Guide
- Debian:Samba/ServerSimple
- KSMBD[link inativo 2023-06-17 ⓘ] - A linux kernel server which implements SMB3 protocol in kernel space for sharing files over network.