# Guia do Linux/Avançado/SAMBA/Ativando o suporte a senhas criptografadas
## Ativando o suporte a senhas criptografadas

O uso de senhas criptografadas é um requisito quando você deseja configurar o SAMBA para ser um servidor PDC ou um cliente de um domínio. Quando utiliza senhas criptografadas, elas trafegam em formato seguro através da rede, dificultando a captura por outras pessoas. Em versões mais recentes do Windows (a partir da OSR/2 e NT 4 service pack3) o suporte a senhas criptografadas vem habilitado como padrão para login e utilização de serviços da rede. Não é recomendável desativar o uso de senhas criptografadas, mas se mesmo assim for necessário veja [#s-s-samba-a-passwords Senhas criptografadas ou em texto puro?, Seção 18.12.15]. Quando usamos senhas criptografadas, elas são armazenadas no arquivo /etc/samba/smbpasswd ao invés do /etc/passwd, isto permite que possamos controlar as permissões de usuários separadamente das do sistema e diferenciar os logins do domínio dos logins do sistema (usuários que possuem shell). Caso tenha um servidor que já possua muitas contas de usuários acessando em texto plano, recomendo ler [#s-s-samba-senhas-crypto-migrando Migrando de senhas texto plano para criptografadas, Seção 18.8.1] para facilitar o processo de migração de contas. O utilitário smbpasswd é o programa utilizado para gerenciar este arquivo de senhas e também o status de contas de usuários/máquinas do domínio. Siga estes passos para ativar o uso de senhas criptografadas no SAMBA:
* Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas na seção [global] para adicionar o suporte a senhas criptografadas:
A linha encrypt passwords = true diz para usar senhas criptografadas e que o arquivo /etc/samba/smbpasswd contém as senhas (smb passwd file =/etc/samba/smbpasswd). Caso sua máquina seja apenas um cliente de rede (e não um PDC), você pode pular para o passo onde o SAMBA é reiniciado (no final dessa lista), não é necessária a criação do arquivo de senhas para autenticação pois os usuários serão validados no servidor.
* Execute o comando mksmbpasswd </etc/passwd >/etc/samba/smbpasswd. Ele pega toda a base de usuários do /etc/passwd e gera um arquivo /etc/samba/smbpasswd contendo as contas destes usuários. Por padrão, todas as contas são DESATIVADAS por segurança quando este novo arquivo é criado. O novo arquivo terá o seguinte formato:
Os campos são separados por ":" e cada campo possui o seguinte significado:
* O primeiro é o nome de usuário
* UID do usuário no sistema UNIX que a conta será mapeada.
* Senha Lan Manager codificada em hex 32 criado usando criptografia DES usada pelo Windows 95/98/ME.
* Senha hash criada em formato do NT codificada em hex 32. Esta senha é criada pegando a senha do usuário, convertendo-a para maiúsculas, adicionados 5 bytes de caracteres nulos e aplicando o algoritmo md4.
* Opções da conta criada no smbpasswd:
** U - Especifica que a conta é uma conta de usuário normal (veja [#s-s-samba-senhas-crypto-criando Adicionando usuários no smbpasswd, Seção 18.8.2])
** D - Significa que a conta foi desativada com a opção -d (veja [#s-s-samba-senhas-crypto-desabilitando Desabilitando uma conta no smbpasswd, Seção 18.8.4]).
** W - Especifica que a conta é uma conta de máquina criada com a opção -m (veja [#s-s-samba-dom-contasmac Contas de máquinas de domínio, Seção 18.7.5]).
** N - A conta não possui senha (veja [#s-s-samba-senhas-crypto-nopasswd Definindo acesso sem senha para o usuário, Seção 18.8.7]).
Os caracteres "XXXXXXXXXXXXXXX" no campo da senha, indica que a conta foi recém criada, e portanto está desativada. O próximo passo é ativar a conta para ser usada pelo SAMBA. ATENÇÃO: O método de criptografia usado neste arquivo não é totalmente seguro. Recomendo manter o arquivo de senhas smbpasswd em um diretório com a permissão de leitura somente pelo root.
* Para ativar a conta do usuário gleydson, usamos o comando:
Digite a senha do usuário e repita para confirmar. Assim que a senha for definida, a conta do usuário é ativada. Você também pode especificar a opção "-s" para entrar com a senha pela entrada padrão (muito útil em scripts). Apenas tenha cuidado para que esta senha não seja divulgada em seus arquivos/processos.
* Reinicie o processo do SAMBA (veja [#s-s-samba-rodando Iniciando o servidor/reiniciando/recarregando a configuração, Seção 18.1.9]).
* Verifique se o suporte a senhas criptografadas está funcionando com o comando:
Substitua localhost pelo IP do servidor e gleydson pelo usuário. Caso obtenha a mensagem session setup failed: NT_STATUS_LOGON_FAILURE significa que a senha informada está incorreta.

### Migrando de senhas texto plano para criptografadas

No SAMBA, é possível fazer um processo de migração de senhas em texto plano de usuários para criptografadas sem que eles deixem de acessar o servidor durante esta mudança. Caso este seja seu caso, insira o parâmetro
na seção [global] do seu arquivo de configuração smb.conf. A senha criptografada é definida assim que o usuário se logar usando sua senha em texto plano. Não se esqueça de desativar esta opção ou remove-la após o prazo necessário para que todas as senhas sejam trocadas.

### Adicionando usuários no smbpasswd

A adição de um usuário no smbpasswd segue duas etapas: primeiro é necessário adiciona-lo no sistema com o adduser e depois no samba com o smbpasswd. Você deve estar se perguntando qual a vantagem de se ter um arquivo separado de usuários se ainda é preciso criar o login nos dois arquivos; O SAMBA para fazer o controle de acesso aos arquivos utiliza além dos mecanismos tradicionais do NT, o controle de permissões a nível UNIX para manter os arquivos ainda mais restritos. Além disso, será necessário usuários e grupos para criação e acesso ao sistema.
* Adicione um usuário no sistema com o comando:
Este comando adiciona o usuário "joao" no grupo grupo-dominio e não define hem uma shell, diretório home nem senha para este usuário. Isto mantém o sistema mais seguro e não interfere no funcionamento do SAMBA, pois somente é necessário para fazer o mapeamento de UID/GID de usuários com as permissões do sistema UNIX. É interessante padronizar os usuários criados no domínio para um mesmo grupo para pesquisa e outras coisas.
* Crie o usuário "joao" no SAMBA:
Será solicitada a senha do usuário.

### Removendo usuários do smbpasswd

Utilize o comando smbpasswd -x usuario para remover um usuário do arquivo smbpasswd. Se desejar, você pode manter o usuário no /etc/passwd ou remove-lo com o userdel. OBS: Removendo um usuário deste arquivo fará que ele não tenha mais acesso ao SAMBA. Utilize o comando smbpasswd -a teste

### Desabilitando uma conta no smbpasswd

Como administrador, pode ser necessário que precise desativar temporariamente uma conta de usuário por alguma situação qualquer (má utilização de recursos, dúvida se a conta está sendo usada, para que ele ligue reclamando de autenticação para ter aquela desejada conversa (hehe), etc.). Remover uma conta e novamente adiciona-la então não é uma situação muito prática. Utilize então o seguinte comando para desativar uma conta de usuário:
Quando a conta de usuário é desativada, uma flag "D" é adicionada Ã s opções do usuário (junto com as opções "UX"). Veja [#s-s-samba-senhas-crypto-habilitando Habilitando uma conta no smbpasswd, Seção 18.8.5] para reativar a conta.

### Habilitando uma conta no smbpasswd

Uma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada usando:

### Alterando a senha de um usuário

O utilitário smbpasswd pode ser usado tanto para alterar a senha de usuários locais do SAMBA ou de uma conta em um servidor remoto (seja SAMBA, NT, W2K). Para alterar a senha de um usuário local, digite:
Lhe será pedida a antiga senha, a nova senha e a confirmação. Caso seja o usuário root, somente a nova senha e a confirmação. Isto é mecanismo de proteção para usuários que esquecem a senha ;-) Para alterar a senha de um usuário remoto, utilize:
Note que apenas foi adicionada a opção -r servidor comparado com a opção anterior. A diferença é que a senha antiga do usuário sempre será solicitada para troca (pois o root das 2 máquinas pode não ser o mesmo).

### Definindo acesso sem senha para o usuário

Para fazer um usuário acessar sem senha, use o comando:
Isto é completamente desencorajado e necessita que a opção null passwords da seção [global] no arquivo smb.conf esteja ajustada para yes (que NÃO é o padrão).