Samba (Português)

Related articles
Active Directory Integration
Samba/Active Directory domain controller
NFS
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:
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
.
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
.
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 para
sambashare
:
# chown root:sambashare /var/lib/samba/usershares
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-indexer
AUR
, 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
smbclient
requer um arquivo
/etc/samba/smb.conf
(veja
#Instalação
), o qual você pode criar como um arquivo vazio usando o utilitário
touch
.
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.
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 é user
s
(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.
pyneighborhood
AUR
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:
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.
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).
wsdd2
AUR
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.