
Ambiente:
Servidor Linux X86 com Debian 9.3
kernel: Debian 4.9.65-3+deb9u1
smbclient: Versão 4.5.12-Debian
cifs-utils: 2:6.7-1
Situação:
Backupserver ( backuppc
) precisa fazer backup de um cliente Windows 10 Home.
Nenhum domínio
Alternativa:
Cygwin/Rsync usado para outros clientes Win7 rejeitados devido ao trabalho manual envolvido.
Pré-requisitos já conhecidos:
Entrada DNS para Win10Client: concluída, testada e funcionando
Entrada DHCP para Win10Client: concluída, testada e funcionando
SMB1 não é seguro, portanto não siga o "caminho mais fácil".
O smbclient suporta o protocolo SMB2/3, então eu não deveria ter que configurar o hack do registro smb1 para ativar o SMB1, por exemplo
Como verificar qual versão SMB está habilitada no Windows Server 2008 R2
Problemas:Não consigo montar o compartilhamento administrativo ou qualquer outro compartilhamento, nem os vejo comsmbtree -b -N
O que eu tentei:
Tentei usar o compartilhamento não administrativo (não
$
no final)Renomeei o compartilhamento administrativo de
C$
paramC$
oumC
.Adicionado um compartilhamento de teste em documentos.
Adicionado um compartilhamento de teste em
C:\test
Nenhum deles é visível via smbtree
.
Conectando-se diretamente aos compartilhamentos (ou obtenha uma lista de compartilhamentos):
testado:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
Como faço para que isso funcione com o protocolo SMB2 ou SMB3?
Responder1
A resposta ao tutorial inclui várias partes, pois a situação pode ser um pouco diferente dependendo do que você precisa.
Incluí tudo o que encontrei (ou acredito ter encontrado) por meio de várias pesquisas que me ajudaram a resolver meu problema direto.
O Debian 9 Stretch Kernel padrão não suporta SMB3
Acontece que meu kernel parece não suportar SMB3 diretamente
Baseado emhttps://lists.debian.org/debian-kernel/2017/04/msg00266.html
pergunta:
Am 22.04.2017 um 17:21 schrieb Ben Hutchings:
On Sat, 2017-04-22 at 16:19 +0100, Ben Hutchings wrote:
On Sat, 2017-04-22 at 14:47 +0200, [email protected] wrote:
Hi!
It´s not possible to mount a enrypted CIFS Share yet. is it possible
to add the following Kernel changes to Debian 8?
No, we don't backport big features like that.
Of course, if this feature is in Linux 4.9 (I don't know) then you have
the option to install the new kernel version from jessie-backports
(https://backports.debian.org/).
Ben.
Pela minha pesquisa, também não está nos backports extensos (cifs-utils para suportar a mudança do kernel de 4.11?)
https://packages.debian.org/stretch-backports/allpackages
No entanto, não tenho certeza sobre a parte do backport, pois existem kernels mais recentes, mas no meu caso não atualizarei para o kernel do backport para esse recurso, então parei aqui.
smbtree precisa de mais parâmetros para funcionar com SMB3
Não ficou imediatamente claro para mim como fazer o smbtree funcionar com o SMB3 e, com o problema que descobri acima, abandonei completamente a ideia do SMB3.
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient não usa SMB2 ou SMB3 por padrão.
A versão padrão do protocolo smb para smbclient é
PME1
Isso não é compatível por padrão no Windows 10.
Se precisar disso para o seu caso de uso, você deverá adicionar a chave de registro correspondente:
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 (Digite DWORD32, valor 1 para ativado, 0 para desativado)
Comandos do Powershell:
Detectar:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Habilitar:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Desativar:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Isto foi tirado dehttps://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and
Talvez seja necessário alterar o nível de criptografia de compartilhamento de arquivos no Windows 10 para que o SMB1 funcione também:
como não testei isso diretamente, não sei se é realmente necessário:
veja por exemplo como fazer isso aqui:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
Citação:
Para alterar o nível de criptografia de compartilhamento de arquivos na Central de Rede e Compartilhamento
Abra o Painel de Controle e clique/toque no ícone Central de Rede e Compartilhamento.
Clique/toque no link Alterar configurações de compartilhamento avançadas no lado esquerdo. (veja a captura de tela abaixo)
Expanda o perfil de rede Todas as redes.
Em Conexões de compartilhamento de arquivos, selecione "Ativar compartilhamento de arquivos para dispositivos que usam criptografia de 40 ou 56 bits"
Comandos de trabalho
Agora, para fazer as coisas funcionarem de verdade
Compartilhamento não administrativo:
alterando o comando smbclient
smbclient -U WIN10Username -L //Client/
para
smbclient -m SMB2 -U WIN10Username -L //Client/
permite visualizar os compartilhamentos desse cliente.
Como mountparam para console realmente acessá-lo:
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
ou como entrada /etc/fstab (sem montagem automática na inicialização!)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
Compartilhamento Administrativo
Para o compartilhamento administrativo, você precisa fazer uma alteração adicional no registro (se não estiver em um domínio):
Comando Powershell:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
retirado daqui:
Não é possível montar o compartilhamento do Windows no Ubuntu
basicamente o que ele faz é desabilitar o UAC para acesso e manutenção de compartilhamento remoto, então tome cuidado com isso.
Isso pode ajudar a entender melhor as implicações, então tenha certeza se você realmente deseja fazer isso:
#note the \$ is actually needed!, i did read about Qouting the whole String "//CLIENTIP/C$" but i did not test that
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/C\$ MOUNTPOINT
Problemas de backuppc:
Você desejará outra conta específica para backuppc que precise ter permissões de leitura para o compartilhamento.
As opções padrão do backuppcs smbclient não incluem -m SMB2
O comando que backuppc usa é:
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
mude isso para incluir -m SMB2
Depois disso ainda obtive NT_STATUS_ACCESS_DENIED:
session setup failed: NT_STATUS_ACCESS_DENIED
session setup failed: NT_STATUS_ACCESS_DENIED
tarExtract: Done: 0 errors, 0 filesExist, 0 sizeExist, 0 sizeExistComp, 0 filesTotal, 0 sizeTotal
fazendo isso manualmente com a senha adicionada após o -U
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
funciona
remover o -N me mostra a senha com a qual ele funciona também.
Como não queria armazená-lo em um arquivo de configuração do backuppc, na versão final usarei o método de credencial.
Depois de tentar descobrir qual era a diferença entre o comando backuppc e o comando smbclient manualmente, descobri que isso -N
resulta em um comportamento diferente durante a conexão.
solução funcional sem -N (com nome de usuário, senha ou arquivo de credencial, não importava. O compartilhamento não administrativo ou administrativo também não mudou nada)
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
Domínio=[CLIENTNAME] SO=[] Servidor=[] ... cortar
Versão não funcional com -N
:
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -N -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -N -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Logon failure
...
cut
...
SPNEGO login failed: Access denied
session setup failed: NT_STATUS_ACCESS_DENIED
Solução de trabalho do cliente Backuppc Win10
Dadas todas as informações acima, posso fazer backup do compartilhamento administrativo do Win10 com as seguintes opções de backuppc:
SmbClientFullCmd:
Codificado:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -U $userName WIN10Password -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
I was unable to use the Password in SmbSharePasswd, but as this wasn't the desired output i did not dig deeper if i made an possible error here.
Arquivo de crédito:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -A /PATH/samb_creditfile -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
Remember you need permissions for the backuppc user on that file.