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.
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.
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
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: \\sdl2\pedrodelfino
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.
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: \\sdl2\pedrodelfino
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.
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.
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
Ótimo tutorial de gerenciamento de usuário do samba com o pdbedit
Onde eu encontrei o link do User Manager da Microsoft
Download do User Manganer da Microsoft
Manual oficial do samba 3




Gerenciando usuários de um servidor samba com o pdbedit (parte 01) | E-tine…
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……
Gerenciando usuários de um servidor Samba com o pdbedit…
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. Neste artigo mostrarei algumas experiência…
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.
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!
[...] post, Gerenciando usuários de um servidor samba com o pdbedit, demostrei uma solução utilizando o User Manager do Windows, já que o pdbedit não funcionou com [...]
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!!!
[...] « Gerenciando usuários de um servidor samba com o pdbedit (parte 01) Fazendo um Tour pelo digiKam 0.10 no KDE 4 [...]