LINUX, TI E MUITO MAIS!
Cadastre-se agora e receba gratuitamente o ebook do Curso Linux Ubuntu, dicas imperdíveis para ter sucesso com Linux
Insira seu email no campo ao lado para receber AGORA o Ebook!

Gerenciando usuários de um servidor samba com o pdbedit (parte 01)

O utilitário de gerenciamento de usuário pdbedit, traz para o samba 3 muitas funcionalidades antes escondidas ou que nem existiam no samba 2, com o padrão de armazenamento de usuário no arquivo smbpasswd.

gerenciar-usuarios-samba

Neste artigo mostrarei algumas experiências no gerenciamento de usuários do samba 3 com o pdbedit, este estudo surgiu da necessidade de fazer uma migração do samba 2 com ldap para um samba 3.

Desde que eu implantei a solução, Integração de redes Linux e Windows com Samba e OpenLDAP, não havia mais trabalhado em uma implantação com o samba em PDC, somente em redes pequenas.

APRENDA A DOMINAR O LINUX

Aprenda a dominar o LINUX de uma vez por todos, pegue sua cópia

  • Ferramentas para instalar softwares adicionais
  • Shell do LINUX passo a passo, e muito mais...

Mudei muito a minha opnião sobre ldap, mas isto é assunto para outro artigo.

Este pequeno tutorial, não vai mostrar como configurar o samba, só vo tocar no assunto “smb.conf” uma unica vez, ou seja serve mesmo para quem quer saber como gerenciar os usuários do samba e para quem estava acostumado com o simples smbpasswd (que ainda continua lá em funcionamento sim). O pdbedit vai mostrar detalhes sobre seus usuários, que antes ficarava claro somente com samba usando autenticação com ldap.

Para começar…

Criando um usuário

Primeiro vamos criar um grupo

root #> groupadd TI

Agora vamos criar um usuário normal, primeiro no linux

root #> useradd -m -c "Pedro Delfino" -G TI -g users pedrodelfino

Definimos a senha

root #> passwd pedrodelfino

Lembrando que esta senha, é o acesso ao sistema no sheel no linux, ainda nâo é a senha do samba

Mapeando grupo do linux para o samba

Agora vamos usar o comando net groupmap para mapear o grupo do linux para o samba

Leia também ...   Começando com Ubuntu Linux

root #> net groupmap add ntgroup="Grupo TI" unixgroup=TI type=d

Para listar os grupos que estão mapeados usamos o comando net groupmap list

root #> net groupmap list
Grupo TI (S-1-5-21-951807190-2904679001-2272606852-1022) -> TI
Administrators (S-1-5-32-544) -> 15000
Domain Admins (S-1-5-21-951807190-2904679001-2272606852-1001) -> root
Domain Users (S-1-5-21-951807190-2904679001-2272606852-1003) -> users
Domain Guests (S-1-5-21-951807190-2904679001-2272606852-1005) -> nogroup

Mapeando estes grupos fica mais facil de gerenciar as permissões nos compartilhamentos, e pastas. Nada nos impede de pular esta parte e fazer o gerenciamento tudo através do chown, eu prefiro a segunda opção, pois no meu caso como eu já tenho todos os grupos criados, mapear todos eles para o samba vai dar muito trabalho, mas por outro lado caso isso seja feito podemos utilizar o User Maganager da Microsoft para gerenciar os os grupos.

No manual oficial do samba, existe uma capitulo explicando as ganhos deste mapeamendo de grupos.

Falando no User Manager, é um ótima alternativa para gerenciar os usuários do samba.

Adicionando um usuario ao samba

No meu caso estou utilizando o tdbsam para gerenciar os usuários, não estou utilizando smbpasswd nem ldap.

No arquivo /etc/samba/smb.conf, eu estou utilizando esta opção, para definir isto.

passdb backend = tdbsam

Executando o seguinte comando

root #>pdbedit -a pedrodelfino
new password:
retype new password:
Unix username: pedrodelfino
NT username:
Account Flags: [U ]
User SID: S-1-5-21-951807190-2904679001-2272606852-1023
Primary Group SID: S-1-5-21-951807190-2904679001-2272606852-1003
Full Name: Pedro Delfino
Home Directory: sdl2pedrodelfino
HomeDir Drive: U:
Logon Script: logon.bat
Profile Path:
Domain: IP
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Ter, 12 Fev 2008 12:11:50 BRST
Password can change: Ter, 12 Fev 2008 12:11:49 BRST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Então, executamos o comando pdbedit -a pedrodelfino para adicionar o usuário, foi solicitado uma senha, esta senha sim é a senha do samba, ou seja a senha que o usuário vai logar na estação de trabalho windows.

Leia também ...   Backup no Linux - 8 ferramentas incríveis para não ter dor de cabeça

Para verificar os dados de um usuário no samba temos o comando

root #> pdbedit -Lv pedrodelfino

Unix username: pedrodelfino
NT username:
Account Flags: [U ]
User SID: S-1-5-21-951807190-2904679001-2272606852-1023
Primary Group SID: S-1-5-21-951807190-2904679001-2272606852-1003
Full Name: Pedro Delfino
Home Directory: sdl2pedrodelfino
HomeDir Drive: U:
Logon Script: logon.bat
Profile Path:
Domain: IP
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Ter, 12 Fev 2008 12:11:50 BRST
Password can change: Ter, 12 Fev 2008 12:11:49 BRST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Aqui temos todas as informações deste usuário

Também podemos listar todos os usuários do samba

root #> pdbedit -L

ou

root #> pdbedit -Lw

Modificar a senha o usuario do samba no primeiro login no windows

Uma necessidade que sempre tive e nunca consegui implementar. Fazendo a migração do samba 2 para o samba 3, importei todos os usuários que estavam em um ldap, então preciso mudar a senha de todos os usuários (que no meu caso são mais de 300) para uma senha padrão e depois setar a opção para o usuário mudar a senha no proximo login.

Segundo o manual do samba 3 na página 276, para forçar o usuário a trocar a senha no proximo login, temos que utilizar o seguinte comando

root# pdbedit --pwd-must-change-time="2010-01-01"
--time-format="%Y-%m-%d" nome_do_usuario

Mas isto não funcionou no meu servidor.

E nem este outro comando, que também esta no manual
root# pdbedit --pwd-must-change-time=0 nome_do_usuario

Isto deveria modificar no cadastro do usuário a opção

root #> pdbedit -Lv pedrodelfino
...
Password last set: Mon, 05 Dec 2005 23:37:11 MST
Password can change: Wed, 07 Dec 2005 23:37:11 MST
Password must change: 0
...

Infelizmente não funcionou.

Leia também ...   Como usar o Windows 7 em rede com servidor Samba

Resolvi este problema utilizando o User Manager no windows, fiz o download, loguei em um estação windows como root, e acessei User Manager no meu dominio normalmente, editei o usuário e marquei a opção:

User change Must password at next Logon

Isto sim funcionou, o cadastro ficou assim

root #> pdbedit -Lv pedrodelfino
...
Password last set: 0
Password can change: 0
Password must change: 0
...

Logando com o usuário na estação windows.

captura_da_tela-1.png

captura_da_tela-2.png

captura_da_tela-3.png

captura_da_tela-4.png

Este assunto ainda é minha fonte de pesquisa, pois caso comando para forçar o usuário a modificar a senha no primeiro login tivesse funcionado no samba 3 seria ótimo, para gerar um script e fazer isso com todos os usuários.

Por hoje é só, nesta primeira parte do artigo, espero ter conseguido passar as minhas experiências no gerenciamento de usuário do samba utilizando o pdbedit. Na segunda parte do artigo, eu vo falar dos meus testes na modificação das políticas padrão do dominio do PDC samba.

Não esqueça de executar.

root #> man pdbedit

Pois ajuda e muito.

Referência do forum do Debian
Manual oficial do samba 3

Sobre pedrodelfino

Trabalha a mais de 14 anos com administração de sistemas LINUX, dedicado em ensinar novos profissionais a atuar com servidores. Saiba mais aqui. "Caso queira participar de uma aula online comigo utilize o formulário Acima"

  • Para forçar os usuários a trocar de senha depois de algum tempo você utilizar os seguintes comandos (se quiser visitar meu blog ;):

    Para que a senha do usuário expire a cada 30 dias e ele seja obrigado a muda-la:
    $ pdbedit -P “maximum password age” -C 2592000

    Para que o usuário só possa mudar a senha após 25 dias depois da última troca:
    $ pdbedit -P “minimum password age” -C 2160000

    O tamanho mínimo dda senha será de 8 caracteres:
    $ pdbedit -P “min password length” -C 8

    Mantém um histórico de senhas usadas pelo usuário para que ele não possa reutiliza-las. Neste caso ele não poderá utilizar as últimas duas senhas. Em conjunto com o “minimum password age” esta opção torna a política de senhas muito mais seguras:
    $ pdbedit -P “password history” -C 2

    A senha de root não expira:
    $ pdbedit -c “[X ]” -u root

    Eu encontrei alguns problemas como, por exemplo, no caso dos avisos para mudar senhas. Mas vou atualizar meu samba e analisar as configurações mais uma vez para ver se consigo resolver.

  • admin

    Ola antonio

    Seguinte, eu já havia utilizado estes comando… o grande problema esta exatamento onde voce comentou no final… aquele aviso que a senha vai expirar nao some, mesmo o usuario ja tendo modificados a senha uma vez

    qual é o problema, que vejo com isso? Vai gerar muito suporte, o cara vai mudar a senha e vai logar novamente e sera informado que tera que mudar a senha outra vez, entao ela vai tentar a mesma senha, e nao será possivel.

    estou pesquisando tambem, acho que vou compilar o samba … estou usando o samba do pacote do debian 4, talves tenha um problema. nao é possivel que o comando

    pdbedit –pwd-must-change-time=”2010-01-01″ \
    –time-format=”%Y-%m-%d” nome_do_usuario

    que esta no manual nao funcione…

    deve ser algum bug

  • Bom, eu utilizo o samba 3.0.28 em um slackware 12.0 e tenho este problema com o aviso das senhas, não sei se o problema que você tem com o “pwd-must-change-time” também acontece comigo, vou dar uma olhada.

    Já pesquisei sobre este assunto e ainda não encontrei uma solução, estou esperando alguma atualização resolver este problema. É realmente algo muito inconveniente, mas com o devido treinamento consegui fazer os usuários compreenderem como devem proceder (de vez em quando alguém faz besteira, mas esta bem raro hoje).

    Mas continuo na luta! 😉

    Até mais!

  • Delfino, dica:
    Para que a primeira opcao citada na pagina de manual do samba funcione com passwd-must-change, tive de alterar o backend de senhas para tdbsam. Assim, converti o smbpasswd (pdbedit -i smbpasswd -e tdbsam) para tdbsam, e reiniciei o samba. Fiz isso em cima de um Debian Etch. Logo em seguida usei: pdbedit –pwd-must-change-time=”2010-01-01″ –time-format=”%Y-%m-%d” nome_do_usuario e funcionou. O Artigo esta ótimo!!! Abracos a todos!!!

  • Romulo

    quando adiciono no global do smb.conf passdb backend = tdbsam, o dominio fica inoperante. O que pode ser ? Grato.

  • Joca (Altemir Braz Dantas Junior)

    Com o pdbedit eu consegui veja no link

    http://www.vivaolinux.com.br/dica/Solicitar-a-alteracao-de-senha-no-primeiro-login-Samba

    e o script para alterar senhas todos os usuarios do samba

    #!/bin/bash

    for USUARIO in $(pdbedit -L | grep -v \’$:\’| grep -v \’root:\’ | cut -d: -f1)
    do
    pdbedit –pwd-must-change-time=0 $USUARIO
    pdbedit –pwd-can-change-time=0 $USUARIO

    done

  • Diogo Pereira

    om dia.

    Recentemente tive que refazer minha instalação do Debian.

    Utilizei meu arquivo .conf do samba pois ja estava configurado.

    não sei se é por isso, creio que não, mas o serviço para de funcionar derrepente e volta em alguns minutos.
    O problema é que o unico log que vi foi o abaixo:

    Oct 28 09:37:04 brasf smbd[54191]: [2014/10/28 09:37:04.947407, 0] passdb/lookup_sid.c:1684(get_primary_group_sid)
    Oct 28 09:37:04 brasf smbd[54191]: Failed to find a Unix account for testeget_user_info_21: User teste has Primary Group SID (NULL SID),
    Oct 28 09:37:04 brasf smbd[54191]: which conflicts with the domain sid S-1-5-21-812230114-2709283624-2016611268. Failing operation.

    Esses dias meu samba ficou fora muito tempo e voltou, alguem pode me ajudar ?

Aula Online: Aprenda a Dominar o Linux De Uma Vez Por Todas

x