Usando o POPPASSD
O poppassd possibilita que qualquer usu?rio de uma m?quina Gnu/Linux possa alterar a senha corrente do
usu?rio selecionado atrav?s de um script PHP, abaixo voc? verifica com configurar este aplicativo etamb?m pega o source code do script PHP para executar o mesmo:
O poppassd criado Pawel Krawczyk(http://echelon.pl/pubs/poppassd.html), baseado no poppassd de John
Norstad, Roy Smith e Daniel L. Leavitt, cria um servi?o no linux que possibilita a troca de senhas no/etc/shadow ou /etc/passwd.
Como todo servi?o do Linux ,o poppassd ? associado a uma porta especifica.
Utilizando um script em php, podemos comunicar com essa porta e alterar a senha do usu?rio.
Link para download do poppassd : http://echelon.pl/pubs/poppassd-1.8.4.tar.gz
A instala??o do poppassd via c?digo fonte ? f?cil, vamos aos passos:
1. Instale as bibliotecas Linux-PAM(PAM-DEVEL) para C. O PAM fornece uma forma de programasautenticarem usu?rios em uma forma independente, baseada em “m?dulos de autentica??o”.
2. Crie uma pasta qualquer e descompacte o conte?do do arquivo poppassd-1.8.4.tar.gz.
Por exemplo :mkdir /usr/src/ poppassd
cd /usr/src/poppassd
tar zxvf poppassd-1.8.4.tar.gz
3. Como root execute:
make
make install
4. Adicione ao arquivo /etc/inetd.conf a seguinte linha:
poppassd stream tcp nowait root /usr/sbin/tcpd poppassd
5.Adicione ao arquivo /etc/services:
poppassd 106/tcp
O servi?o do poppassd neste caso est? utilizando a porta 106.
6.Adicione ao arquivo /etc/hosts.deny:
poppassd: nobody@localhost: allow
poppassd: ALL: deny
Estou liberando o acesso ao servi?o para o usu?rio nobody na maquina local(estou executando o script namesma maquina do servi?o do poppassd) e negando o acesso a outras maquinas e outros usu?rios, nobody
refere-se ao usu?rio que apache utiliza. Em algumas distrui??es o usu?rio do apache ? outro. No Suse
Linux o usu?rio ? wwwrun e no debian ele tem outro nome. Na duvida, busque no http.conf o nome dousu?rio, voc? deve encontrar algo assim:
User nobody
7.Adicione ao arquivo /etc/pam.d/poppassd:
#%PAM-1.0
Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/
1 de 3 08/09/2010 17:16
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullokaccount required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so retry=3
password required /lib/security/pam_pwdb.so use_authtok nullok
8. Adicione ao arquivo /etc/syslog.conf :
local4.err /var/log/poppassd
9. Reinicie os servi?os do inetd.
Quem utiliza o mandrake pode instalar via rpm :
http://rpmfind.net/linux/RPM/mandrake/9.2/contrib/i586/poppassd-ceti-1.8.4-1mdk.i586.html
Para gosta do debian ou outra distribui??o baseada (por exemplo Kurumin) instalar o pacote via apt:
apt-get install poppassd ou dpkg -i nomedopacotepoppassd.deb
Download do pacote debian :
http://packages.debian.org/stable/mail/poppassd
< ?php
// Autor(a): Heloisa Karina Costa
// Fonte : http://bazar.conectiva.com.br/listas/linuxisp-br/arquivo/2001/10/msg00370.html// Conex?o para trocar senha de usu?rio sistema
// $servidor = ip do servidor de poppassd e autentica??o
// $porta = porta espec?fica do servi?o// $login = login do usu?rio
// $senhaold = senha atual
// $senhanew = nova senha
$socket = fsockopen($servidor,$porta);
if (!$socket) {
echo “Conex?o Recusada!”;}
$out = fgets($socket,4096);
if (strpos(”$out”,”500″)>-1) {echo “Conex?o Recusada!”;
}
fwrite($socket,”user $login\n”);$out = fgets($socket,4096);
if (strpos($out,”500″)>-1) {
echo “Usu?rio Inv?lido!”;}
fwrite($socket,”pass $senhaold\n”);
$out = fgets($socket,4096);
if (strpos($out,”500″)>-1) {
echo “Senha inv?lida!”;
}
fwrite($socket,”newpass $senhanew\n”);
Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/
2 de 3 08/09/2010 17:16
fwrite($socket,”newpass $senhanew\n”);
$out = fgets($socket,4096);
if (strpos($out,”200″) >-1) {echo “Senha Alterada com Sucesso!”;
}
fwrite($socket,”quit\n”);?>
Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/
3 de 3 08/09/2010 17:16