Graças à dica de MadHatter, pude resolver o problema: O cliente requer apenas o SMB2 em vez do SMB3. Esse truque pode ser facilmente aplicado na configuração na seção Global:
max protocol = SMB2
Atualmente, estou tentando fazer um servidor Standalone Samba Share antigo rodar no Redhat 5 de volta à vida! Ele estava executando a versão 3.0 anteriormente, devido a um monte de problema, decidi atualizar para a versão 3.6 com o pacote oficial. Agora, estou executando corretamente o samba 3.6 no Radhat 5
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Samba version 3.6.23-12.el5_11
Aqui está minha saída 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
o completo 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
Consigo me conectar a um dos compartilhamentos do localhost:
>$ smbclient //DUMMYMO/diro -U usero usero
Domain=[DUMMY] OS=[Unix] Server=[Samba 3.6.23-12.el5_11]
smb: \>
O que é bom, mas ainda estou me perguntando por que ele não funciona em uma máquina com Windows 7:
>$ net use x: \DUMMYMO\diro /user:usero usero
System error 58 has occurred.
The specified server cannot perform the requested operation.
Ao colocar o nível de log em 3, consigo ver essas linhas de log durante a tentativa de conexão do 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)
Este é o rastreamento de rede:
>$ 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
Como o log mencionado, o cliente envia um sinalizador RST diretamente após a resposta do servidor e não sei por quê. Eu já tentei muitas soluções como protocolo min, assinatura de servidor sem sucesso.
Eu fiquei sem soluções .. Você tem alguma sugestão?
Note que não tenho acesso de administrador na minha área de trabalho e acho que muitos parâmetros são impostos pelo domínio.
Tags samba