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//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes
O comando make && make install não funciona.
cd smbencrypt && tar -xzf libdes-4.04b.tar.gz && cd des && make
make: Nada a ser feito para ‘all’.
Amigo, primeiramente obrigado pro comentar.
Olha, faz tanto tempo que desenvolvi isso que sinceramente não me lembro.
Deve ter soluções parecidas rodando em docker. Dê uma pesquisada.
Abraços!
Tem como editar o arquivo cgi?