Modificando senha de usuarios Linux no PHP
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 programas autenticarem 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 na mesma 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 do usuário, você deve encontrar algo assim:
User nobody
7.Adicione ao arquivo /etc/pam.d/poppassd:
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullok
account 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
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 programas autenticarem 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 na mesma 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 do usuário, você deve encontrar algo assim:
User nobody
7.Adicione ao arquivo /etc/pam.d/poppassd:
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullok
account 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
Páginas:
1
2
no meu conectiva 8 aparace o seguinte erro
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/trocasenha.php on line 46
a linha 46 tem o seguinte:
fwrite($socket,"pass $senhaold\n");
pode me dar uma ajuda ..
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/trocasenha.php on line 46
a linha 46 tem o seguinte:
fwrite($socket,"pass $senhaold\n");
pode me dar uma ajuda ..
18/04/2004 12:22am
(~20 anos atrás)
Infelizmente Conectiva não é minha area .Uso Debian e Suse.
Mais no conectiva você pode utilizar apt.
Dá um apt-cache search pam e vê os resultados . Caso achei o pacote , dê um apt-get install e nome do pacote.
Mais no conectiva você pode utilizar apt.
Dá um apt-cache search pam e vê os resultados . Caso achei o pacote , dê um apt-get install e nome do pacote.
10/02/2004 12:35pm
(~21 anos atrás)
Caro Rodrigo,
Sou usuário iniciante em Linux. Uso o Conectiva 8. Como consigo instalar as bibliotecas necessárias para a autenticação dos usuários.
Se houver como, poderia me dar uma dica?
Obrigado.
Sou usuário iniciante em Linux. Uso o Conectiva 8. Como consigo instalar as bibliotecas necessárias para a autenticação dos usuários.
Se houver como, poderia me dar uma dica?
Obrigado.
10/02/2004 12:14pm
(~21 anos atrás)
Obrigado.
Saiu na Revista do Linux recentemente um artigo sobre o Horde. Ele indicaram o poppassd para trocar a senha.
Saiu na Revista do Linux recentemente um artigo sobre o Horde. Ele indicaram o poppassd para trocar a senha.
05/02/2004 10:06am
(~21 anos atrás)
Testei e funciona perfeitamente no Debian, porém, acho interessante informar que o usuário do apache no Debian é www-data, entao o passo 6 ficaria assim:
6.Adicione ao arquivo /etc/hosts.deny:
poppassd: www-data@localhost: allow
poppassd: ALL: deny
e que não é necessária nenhuma alteração no arquivo /etc/pam.d/poppassd como explicado no passo 7. Ou seja, se vc está usando o Debian, ignore o passo 7.
Parabéns pelo artigo Rodrigo.
6.Adicione ao arquivo /etc/hosts.deny:
poppassd: www-data@localhost: allow
poppassd: ALL: deny
e que não é necessária nenhuma alteração no arquivo /etc/pam.d/poppassd como explicado no passo 7. Ou seja, se vc está usando o Debian, ignore o passo 7.
Parabéns pelo artigo Rodrigo.
05/02/2004 7:56am
(~21 anos atrás)
Concordo com vc.Utilizava esse script em conjunto com Uebimiau.
Criei esse artigo ,por que toda hora tem um pedindo isso no php-pt.
Uma boa ideia tambem é definir um tamanho minimo para senha e obrigar a mescla de letras com numeros.
Criei esse artigo ,por que toda hora tem um pedindo isso no php-pt.
Uma boa ideia tambem é definir um tamanho minimo para senha e obrigar a mescla de letras com numeros.
04/02/2004 6:03am
(~21 anos atrás)
Grande Rodrigo,
Apenas para comentar, acho que seria interessante colocar alguma validação neste script antes de enviar para o serviço.
Eu usaria um substr() para cortar a string e evitar um possivel buffer overflow no servico (nao tive tempo de olhar o codigo fonte) mas é sempre bom conferir, né?
Mas de qualquer forma valeu!
Apenas para comentar, acho que seria interessante colocar alguma validação neste script antes de enviar para o serviço.
Eu usaria um substr() para cortar a string e evitar um possivel buffer overflow no servico (nao tive tempo de olhar o codigo fonte) mas é sempre bom conferir, né?
Mas de qualquer forma valeu!
02/02/2004 7:43am
(~21 anos atrás)
Gostaria de saber
Como eu faria para criar usuários tb pela web?
Obrigado.