Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Senhas do NT )

Migrar senhas de um Domínio Windows NT para o Samba

Luciano Linhares Martins (lmartins@matrix.com.br)

Considerações Iniciais

O Windows NT utiliza um sistema de senhas com um método de criptografia diferentes dos sistemas Unix, alem disso as senhas ficam armazenadas em um arquivo binário chamado "sam" que normalmente fica no diretório system32\config - esse arquivo fica inacessível para cópia e manuseio quando o sistema esta rodando. Já nos sistemas Unix, geralmente o arquivo de senhas fica no diretório /etc com o nome de passwd e quando se utiliza o shadow, /etc/shadow, ambos em modo texto, o que facilita a seu manuseio e exportação para outros formatos.

Devido a esse sistema diferente de criptografia e armazenagem de senha, a passagem de contas do Windows NT para os sistema Unix não e tão simples e fácil, precisando utilizar alguns utilitários.

Primeiro passo

Conecte-se ao ftp do Samba e baixe o utilitário chamado pwdump.exe, no seguinte endereço:

ftp://ftp.samba.org/pub/samba/pwdump/pwdump.exe

Em seguida, logue no Windows NT com a conta Administrator (eu tentei fazer o teste com contas com o grupo do Administrador/Domain Admin e não funcionou, dizia para logar com o usurário Administrator).

Em seguida, abra um Command Prompt no diretório que você colocou o pwdump.

Rode o comando pwdump da seguinte maneira:

pwdump > smbpasswd

Com isso, você vai gerar um arquivo (smbpasswd) com os logins e senhas do Windows NT no formato do password cryptografado do Samba.

Segundo passo

Transfira o arquivo smbpasswd para o seu servidor Unix.

Copie o arquivo smbpasswd para o diretório /etc e defina as permissões para 600:

cp smbpasswd /etc

chmod 600 /etc/smbpasswd

O samba requer que os seus Usuários tenham o mesmo ID no smbpasswd e no password do Unix, para poder autentica-los, exportar diretórios ETC.

A partir do smbpasswd você pode exportar os logins de usuários, ID, etc, porem sem senhas, para um arquivo no formato do passwd do Unix facilmente. Se você quiser exportar as senhas vai ter que quebra-las com algum password cracker e em seguida inseri-las no passwd. Para rodar o samba e ele autenticar os usuários, não é preciso ter a senha no passwd do Unix, apenas o login, ID e home se você quiser exporta-los. Vão ser utilizadas as senhas do smbpasswd.

Eu criei um script, baseado no mksmbpasswd para converter as senhas do formato smbpasswd para passwd. Deve satisfazer as suas necessidades, é um script bem simples e pode ser alterado de acordo com a sua necessidade.

Você pode baixa-lo em:

ftp://ftp.labgrad.ufsc.br/pub/linux/samba/tools/mkpasswd.sh

Em seguida execute o seguinte comando:

cat /etc/smbpasswd | ./mkpasswd.sh > passwd-smb

Se o seu arquivo smbpasswd e o script mkpasswd.sh estiverem em outro local, configure de acordo com a sua necessidade.

Apos isso, você vai gerar um arquivo chamado passwd-smb com os logins, id's, home, etc no formato do passwd do seu sistema.

Normalmente, os ID's do smbpasswd vão começar a partir de 1000 e você não vai ter problemas para junta-lo com o seu passwd do Unix sem nenhum conflito. Eu recomendo que você confira antes de juntar as bases. Procure por logins com o mesmo ID, mesmo username e username com espaços.

Se você utiliza shadow, eu recomendo desabilitar esse recurso antes de juntar os arquivos, porque esse sistema de junção de senhas não funciona com o shadow.

Você desabilita o shadow através do comando:

pwunconv

Em seguida para passar o arquivo passwd-smb para o passwd do sistema faca o seguinte:

Entre no diretório onde esta o arquivo passwd-smb que você gerou.

cat passwd-smb >> /etc/passwd

Se você utiliza o shadow, pode reativa-lo através do comando:

pwconv

Caso você tenha algum conflito ou erro no passwd quando for rodar o shadow ele vai ficar em loop consumindo os recursos de processamento do seu micro.

Pronto, a parte inicial de criar o smbpasswd com as senhas do NT e passar as informações dos usuarios para o seu passwd do Unix terminou.

Agora vem a segunda parte a configuração do samba.

Configuração do Samba

Existem diversos tutoriais On-line explicando a configuração do Samba, eu vou tentar explicar aqui de forma simples uma configuração básica para seu sistema, comentando as linhas do arquivo de configuração do samba (smb.conf)

Abaixo vão as opções globais do smb.conf:

workgroup = SAMBA

Define o seu grupo de Trabalho/Domínio, no caso "SAMBA"

netbios name = Servidor

Define o nome que o seu computador vai ter na rede netbios, caso você queria determinar um nome diferente do nome atual da maquina.

server string = Servidor Samba Server

Define qual frase vai aparecer no comentário da rede.

encrypt passwords = Yes

Define se o samba vai usar passwords encryptados ou não. Nesse caso, deve estar habilitada essa opção pois vamos utilizar o arquivo de senhas cryptografadas que foram exportadas do Windows NT.

smb passwd file = /etc/smbpasswd

Aponta o arquivo onde vão estar as senhas cryptografadas.

log file = /usr/local/samba/var/log.%m

Define o diretório e o nome dos arquivos de log que vão ser gerados. No exemplo acima, o log nome do arquivo de log gerado vai ser "samba.micro_que_acessou". Se o micro chamado "win95" acessou, o log vai ser samba.win95

max log size = 50

Define o tamanho máximo do log do samba em kilobytes. Quando for atingido esse valor, ele renomeia o log atual adicional a extensão .old

load printers = No

Define se você deseja carregar as impressoras ou não, caso você tenha alguma impressora conecta do sistema e queira compartilha-la.

domain logons = Yes

Com essa opção habilitada o samba vai servir de autenticador de domínios para a sua rede de Windows 95/98.

os level = 33

Essa opção define o nível do Samba na Rede. Caso o Samba seja o controlador da rede, esse numero deve ser um valor relativamente alto. Em redes com WindowsNT como Master, é aconselhável deixar um valor baixo para não entrar em conflito com o WindowsNT. O valor máximo é 255.

preferred master = True

Define se o nmdb vai ser o Brownser Master preferido do grupo de trabalho. Quando for inicializado ele vai forcar a sua eleição a Master.

domain master = True

Essa opção deve estar habilitada para o samba ser o controlador do domínio da sua rede.

Opcionais

unix password sync = True

Caso você deseje uma sincronia dos passwords da rede do samba com a dos passwords do seu sistema deve habilitar essa opção que esta relacionada com o a o opção "passwd program" e "passwd chat"

passwd program = /sbin/passwd %u

Define qual programa para alterar a senha você vai utilizar e os parametros. Essa opção é executada como root.

passwd chat = "*Enter OLD password*" %o\n "*Enter NEW password*" %n\n

"*Reenter NEW password*" %n\n "*Password changed*"

Define a sequência de como vai ser a conversação entre o client e o servidor para a mudança da senha.

Com essas opções a parte da configuração global do seu samba ficaria assim:

[global]

workgroup = SAMBA

netbios name = Servidor

server string = Servidor Samba Server

encrypt passwords = Yes

smb passwd file = /etc/smbpasswd

unix password sync = True

passwd program = /sbin/passwd %u

passwd chat = "*Enter OLD password*" %o\n "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"

log file = /usr/local/samba/var/log.%m

max log size = 50

load printers = No

domain logons = Yes

os level = 33

preferred master = True

domain master = True


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.