У меня есть сервер Debian под управлением smbd (Debian 9.3, samba 4.5.12) и клиент Ubuntu 17.10, с помощью которого я монтирую общие ресурсы samba с помощью команды gio mount
(ранее gvfs-mount
): gio mount smb://server/storage
Поскольку и сервер, и клиент обновлены, я ожидаю, что они будут договариваться о монтировании с SMB3 или SMB2 по крайней мере, но если я запускаю smbstatus
на сервере, монтирование использует NT1 (что AFAIK - SMB1):
Samba version 4.5.12-Debian
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
12164 darren darren 192.168.10.86 (ipv4:192.168.10.86:34052) NT1 - -
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
storage 12164 192.168.10.86 Thu Dec 21 22:49:30 2017 GMT - -
No locked files
Если я добавлю в протокол smb.conf client min protocol = SMB3
, я могу подтвердить, что изменение вступает в силу с помощью testparm -v | grep protocol
:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[home]"
Processing section "[storage]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
client ipc max protocol = default
client ipc min protocol = default
client max protocol = default
client min protocol = SMB3
server max protocol = SMB3
server min protocol = LANMAN1
Но вывод smbstatus
такой же, и монтирование все еще использует NT1 (смонтировано и перемонтировано). Как заставить команду gio mount
использовать более поздний протокол, и почему он не работает по умолчанию?
Вот мой smb.conf:
[printers]
guest ok=yes
comment=Attached printers
browseable=no
printable=yes
path=/var/spool/samba
use client driver=yes
[global]
log file=/var/log/samba/log.all
guest account=nobody
load printers=yes
obey pam restrictions=yes
socket options=TCP_NODELAY IPTOS_LOWDELAY
interfaces=br0
map to guest=Bad User
show add printer wizard=no
encrypt passwords=true
passdb backend=tdbsam
unix extensions=no
dns proxy=no
wide links=yes
printing=cups
server string=%h Miniserver
invalid users=root
workgroup = sharefamily
printcap name=cups
#syslog=0
security=user
preferred master=yes
max log size=1000
disable spoolss=Yes
bind interfaces only=yes
client min protocol = SMB3
[home]
hide dotfiles=yes
browseable=yes
writable=yes
admin users=darren
path=/home
write list=darren
hide files=/lost+found/
guest ok=no
create mask=0764
directory mask=0775
comment=Home Directories
hide special files=yes
public=no
[storage]
browseable=yes
inherit owner=yes
inherit permissions=yes
admin users=darren
write list=darren
path=/home/storage
hide files=/lost+found/
guest ok=no
comment=Common storage
read only=yes
hide special files=yes
public=no
Обновить
Другой клиент, который я протестировал (приложение для iPhone), успешно согласовывает SMB2, так что это ограничение gvfs. Я нашел этот связанный вопрос, который предполагает, что он ограничен SMB1, чтобы иметь возможность просматривать сети по узлам. Попробуем предложенный обходной путь и обновим соответственно.