В настоящее время я пытаюсь вернуть к жизни старый автономный сервер Samba Share, работающий на Redhat 5! Раньше он работал с версией 3.0, из-за множества проблем я решил обновить до версии 3.6 с официальным пакетом. Теперь я правильно запускаю samba 3.6 на Radhat 5
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Samba version 3.6.23-12.el5_11
Вот мой вывод testparm:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[diro]"
Processing section "[dirt]"
Processing section "[dire]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = DUMMY
server string = Samba %v
interfaces = 127.0.0.1, eth0
bind interfaces only = Yes
client ipc signing = auto
printcap name = cups
idmap config * : backend = tdb
cups options = raw
[diro]
path = /home/diro
valid users = usero
read only = No
create mask = 0664
directory mask = 0775
[dirt]
path = /home/diro/t
valid users = usero
read only = No
create mask = 0777
directory mask = 0777
[dire]
path = /home/diro/e
valid users = usert
read only = No
create mask = 0777
directory mask = 0777
полный smb.conf:
[global]
workgroup = DUMMY
server string = Samba %v
interfaces = 127.0.0.1 eth0
bind interfaces only = true
printing = cups
printcap name = cups
load printers = yes
client ipc signing = auto
client signing = auto
log level = 3
min protocol = core
map to guest = Bad User
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[diro]
path = /home/diro
valid users = usero
read only = No
create mask = 0664
directory mask = 0775
[dirt]
path = /home/diro/t
valid users = usero
read only = No
create mask = 0777
directory mask = 0777
[dire]
path = /home/diro/e
valid users = usert
read only = No
create mask = 0777
directory mask = 0777
Я могу подключиться к одному из общих ресурсов с localhost:
>$ smbclient //DUMMYMO/diro -U usero usero
Domain=[DUMMY] OS=[Unix] Server=[Samba 3.6.23-12.el5_11]
smb: \>
Это хорошо, но мне все еще интересно, почему это не работает на машине с Windows 7:
>$ net use x: \\DUMMYMO\diro /user:usero usero
System error 58 has occurred.
The specified server cannot perform the requested operation.
Установив уровень журнала на 3, я могу видеть эти строки журнала во время попытки подключения Windows:
[2017/11/06 15:12:46.107877, 3] lib/access.c:338(allow_access)
Allowed connection from XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)
[2017/11/06 15:12:46.108026, 3] smbd/oplock.c:922(init_oplocks)
init_oplocks: initializing messages.
[2017/11/06 15:12:46.108087, 3] smbd/oplock_linux.c:246(linux_init_kernel_oplocks)
Linux kernel oplocks enabled
[2017/11/06 15:12:46.108167, 3] smbd/process.c:1609(process_smb)
Transaction 0 of length 109 (0 toread)
[2017/11/06 15:12:46.108198, 3] smbd/process.c:1414(switch_message)
switch message SMBnegprot (pid 13707) conn 0x0
[2017/11/06 15:12:46.108463, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108496, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108517, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108537, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108556, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108576, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [NotSmb]
[2017/11/06 15:12:46.108595, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [SMB 2.002]
[2017/11/06 15:12:46.108615, 3] smbd/negprot.c:598(reply_negprot)
Requested protocol [SMB 2.???]
[2017/11/06 15:12:46.108669, 0] smbd/negprot.c:706(reply_negprot)
No protocol supported !
[2017/11/06 15:12:46.110716, 1] smbd/process.c:457(receive_smb_talloc)
receive_smb_raw_talloc failed for client XXX.XXX.XXX.XXX read error = NT_STATUS_CONNECTION_RESET.
[2017/11/06 15:12:46.110790, 3] smbd/server_exit.c:181(exit_server_common)
Server exit (failed to receive smb request)
Это сетевая трассировка:
>$ sudo tcpdump -i eth0 -nn "tcp port 445"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:21:05.292627 IP XXX.XXX.XXX.XXX.54997 > YYY.YYY.YYY.YYY.445: S 946161236:946161236(0) win 8192 <mss 1380,nop,wscale 8,nop,nop,sackOK>
15:21:05.292732 IP YYY.YYY.YYY.YYY.445 > XXX.XXX.XXX.XXX.54997: S 2489729164:2489729164(0) ack 946161237 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>
15:21:05.294416 IP XXX.XXX.XXX.XXX.54997 > YYY.YYY.YYY.YYY.445: . ack 1 win 258
15:21:05.294748 IP XXX.XXX.XXX.XXX.54997 > YYY.YYY.YYY.YYY.445: P 1:110(109) ack 1 win 258
15:21:05.294772 IP YYY.YYY.YYY.YYY.445 > XXX.XXX.XXX.XXX.54997: . ack 110 win 46
15:21:05.298603 IP YYY.YYY.YYY.YYY.445 > XXX.XXX.XXX.XXX.54997: P 1:42(41) ack 110 win 46
15:21:05.300286 IP XXX.XXX.XXX.XXX.54997 > YYY.YYY.YYY.YYY.445: R 110:110(0) ack 42 win 0
Как упоминалось в журнале, клиент отправляет флаг RST сразу после ответа сервера, и я не знаю почему. Я уже пробовал много решений, таких как протокол min, подписывание сервера без успеха.
У меня кончились решения .. Есть ли у вас предложения?
Обратите внимание, что у меня нет прав администратора на моем рабочем столе, и я предполагаю, что многие параметры накладываются доменом.
Благодаря подсказке MadHatter я смог решить проблему: клиенту просто требуется SMB2 вместо SMB3. Этот трюк можно легко применить в конфигурации в разделе Global:
максимальный протокол = SMB2