smb.conf

Samba VirtualBox NT_STATUS_WRONG_PASSWORD

O Samba pode te fazer perder horas. Recentemente o VirtualBox começou a dar problemas com as pastas compartilhadas – Shared Folders – e alguns arquivos não abriam ou outros abriam corrompidos.

Fui atrás e o pessoal do VirtualBox explica que o serviço de incluir uma pasta de fora da máquina virtual (Guest) é básico e simples e que o correto e mais indicado seria usar NFS ou o Samba.

Pois bem, fui atrás de configurar o Samba. Como as pastas compartilhadas eram sensíveis resolvi colocar autenticação por usuário.

É o famoso:

[pasta]
        path = /home/carlos
        comment = Minha pasta
        writable = yes
        valid users = carlos

Porém nada do WinXP logar no samba no Linux. Habilitei o log nível 3  – dica: use tail * -f na pasta de logs para acompanhar o processo de login – e achei os famigerados NT_STATUS_WRONG_PASSWORD. Para resolver qualquer problema de acesso ao Samba você acha na internet aos montes pessoas adicionando o conhecidíssimo Bad User e outras formas habilitando o acesso guest e nobody soluções que liberam o Samba para o mundo. Lembre-se que eu preciso de acesso restrito as pastas.

Solução

O problema do WinXP acessando o Samba é que o WinXP usa por padrão authenticação LM & NTLM e o Samba depois do 3.6 não aceita esta forma de autenticação – o Windows XP é velho.

Para resolver isto ou você muda o WinXP para NTLMv2 ( veja como aqui ) ou adiciona a seguinte linha no smb.conf

ntlm auth = yes

 e pronto!

Meu smb

Para consulta segue a seção [Global] do meu smb.conf

[global]
 workgroup = workgroup
 server string = SambaNotebook
 netbios name = Arch
 security = user
#map to guest = bad user
 dns proxy = no
 wins support = yes
 username level = 2
 log level = 3
 log file = /var/log/samba/samba.log.%m
 max log size = 50
 debug timestamp = yes
 username map = /etc/samba/smbusers
 passdb backend = smbpasswd
 smb passwd file = /etc/smbpasswd
 ntlm auth = yes
 
; encrypt passwords = yes
; guest ok = no
; guest account = nobody

 

Edit – Nem tudo foi lindo

Pois bem. Depois de um tempo não funcionou mais. Então eu tirava esta linha, reiniciava o Samba, colocava novamente, reiniciava novamente, tentava e dava certo. Até que percebi que na verdade os pacotes da rede não estavam chegando do Windows virtualizado ao Linux.

Fui novamente atrás e achei estas informações (site em inglês) sugerindo que usemos uma segunda interface de rede no Virtualbox e no Windows que só permita ao Host acessar o Guest por esta interface nova.

Também não funcionou perfeitamente.

Liguei o Windows 7 também do VirtualBox e testei. Funciona perfeitamente sem problema algum o compartilhamento. Mudei meu ambiente de trabalho do Windows XP para o Windows 7 perdendo obviamente em memória disponível. Mas desativei tudo quanto é embelezamento do Windows 7 e até que ficou mais rápido que o Windows XP em alguns aspectos.

Sugestão: Esqueça o Windows XP e o Samba juntos.

ReEdit – Voltei ao Windows XP

Algumas coisas não funcionaram no Windows 7 e precisei voltar ao WinXp. Utilizei a solução descrita no site acima e há uma nota interessante: Quando você cria uma interface host-only no Virtualbox ela só estará ativa quando se ligar o Virtualbox. Como o Samba inicia no boot a interface ainda não existe então ele só fará Bind nas interfaces existentes. Para resolver isto ou você reinicia o serviço Samba ou faz um serviço para criar a interface host-only antes do Samba iniciar.

A linha de comando para criar a interface host-only é:

exec vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

Feito isso. O mapeamento de pastas remotas em drivers no Windows XP voltou a funcionar.