ChangePassword – Altere a senha através de uma interface Web
Prezado Colegas,
Primeiramente saudações “pinguianas” a todos.
Eu sei que já faz um bom tempo que eu não escrevo nada aqui, mas devido a uma solicitação que um de meus clientes me fez, eu precisei ir em busca de uma solução. Então, vou compartilhar com vocês, pois pode ser útil para mais alguém.
A solicitação era a seguinte: Ele queria alterar a senha dos usuários do Linux (/etc/shadow) através de uma interface web, porém ele deixou bem claro que não queria webmin/usermin.
Então, depois de muito pesquisar, cheguei até uma solução que funciona em CGI, chamada “ChangePassword”.

O seu uso é muito simples. Basta acessar o servidor através de uma página web, inserir o nome de usuário, a senha atual, a nova senha, repetir a nova senha (por confirmação) e clicar em OK. Pronto, a mágica aconteceu. A solução alterou a senha do usuário no arquivo /etc/shadow.
Vou tentar descrever de forma rápida e clara os procedimentos para a instalação:
Primeiro vamos instalar os pacotes necessários:
apt-get install -y apache2 perl libcgi-pm-perl gcc make
Agora, vamos remover a pagina de apresentação do apache:
rm -rf /var/www/html/index.html
Agora, vamos habilitar o modo cgi e reiniciar apache:
a2enmod cgid && systemctl restart apache2
Agora, vamos criar o arquivo que vai habilitar a execução de conteúdos cgi no diretório do apache:
touch /etc/apache2/conf-available/cgi.conf
Agora, edite-o com o vim/nano/mc e deixe-o assim:
<Directory "/var/www/html"> Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory>
Vamos agora, criar o link para habilitar a configuração:
ln -s /etc/apache2/conf-available/cgi.conf /etc/apache2/conf-enabled/
Precisamos restartar o apache novamente:
systemctl restart apache2
Agora vamos precisamos baixar o pacote:
wget https://downloads.aprendendolinux.com/changepassword-0.9.tar.gz -O /opt/changepassword.tar.gz
Vamos agora entrar no diretório, descompactar o arquivo e excluir o pacote e entrar do diretório onde os arquivos foram descompactados:
cd /opt && tar -zxf changepassword.tar.gz && rm changepassword.tar.gz && cd changepassword
Precisamos agora compilar a biblioteca “des”:
cd smbencrypt && tar -xzf libdes-4.04b.tar.gz && cd des && make
Agora, vamos copiar os arquivos para seus respectivos diretórios e voltar para o diretório base:
cp libdes.a .. && cd ../..
Agora, vamos preparar o código para compilação:
./configure --enable-cgidir=/var/www/html --enable-language=Portuguese --disable-smbpasswd --disable-squidpasswd --enable-logo=logo.png
Veja todas as opções:
- –enable-cgidir=cgidir – Caminho completo para o diretório cgi-bin (Padrão: /home/httpd/cgi-bin)
- –enable-language=language – Idioma (Padrão: English)
- –enable-smbpasswd=smbpasswd – Caminho completo para o arquivo smbpasswd (Padrão: /etc/smbpasswd)
- –disable-smbpasswd – Não utilizar as senhas do Samba
- –enable-squidpasswd=squidpasswd – Caminho completo para as senhas do Squid (Padrão: /etc/squid/passwd)
- –disable-squidpasswd – Não utilizar as senhas do Squid
- –enable-logo=imagefilename – Logotipo a usar (Padrão: Nenhum)
Agora, vamos instalar e compilar:
make && make install
Agora, copiar o cgi para o diretório do apache e dar permissão:
cp changepassword.cgi /var/www/html/changepassword.cgi && chmod 4755 /var/www/html/changepassword.cgi
Vamos também copiar o logo para o diretório do apache (vamos usar esse exemplo). Lembre-se que tem que ser um arquivo “png” com o nome de “logo”:
wget https://downloads.aprendendolinux.com/imagens/Baby-Tux-icon.png -O /var/www/html/logo.png
Vamos ajustar as permissões do logo:
chmod 755 /var/www/html/logo.png && chown www-data:www-data /var/www/html/logo.png
Observação importante: O dono e grupo desse arquivo tem sempre que ser root. As permissões sempre tem que ficar 4755.
A saída do comando “ls -lha –color=auto /var/www/html/changepassword.cgi” deve ser sempre vermelha.
Caso não esteja vermelha, faça esse comando:
chown root:root /var/www/html/changepassword.cgi && chmod 4755 /var/www/html/changepassword.cgi
Agora basta acessar via web:
http://ip-do-servidor/changepassword.cgi
Agora, é só divulgar o link para que os usuários possam alterar a senha.
Veja o print do sistema:

Seguem algumas informações técnicas do ambiente que foi utilizado para testes:
Sistema Operacional: Gnu/Linux Debian
Release: 9.4
CodeName: Stretch
Arquitetura: x64
Versão do Kernel: 4.9.0-6-amd64
Versões dos pacotes instalados:
apache2: 2.4.25
perl: 5.24.1
libcgi-pm-perl: 4.35
gcc: 4:6.3.0
make: 4.1
Isso é tudo!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https://pag.ae/7WRSPXdKp
- Pix: bradesco@henrique.com.br
- PicPay: @henrique_fagundes
- PagSeguro: magnatahp@gmail.com
- PayPal: magnatahp@gmail.com
- Bitcoin: 1Fzwag6pyAWKvUFcPc2Jh9GaSRFkcRQY2K
Favorecido: Luiz Henrique Marques Fagundes