Apresento uma das soluções possíveis para que o próprio usuário Windows faça a alteração da sua senha junto ao servidor Samba PDC.
Configurando o ambiente:
A utilização de Samba como servidor de domínios (PDC) é bastante utilizada e na minha opinião é uma solução muito interessante de se adotar. Gostaria de apresentar nesta dica UMA das formas de permitir um usuário alterar sua própria senha no servidor, levando em consideração a segurança do ambiente. Ressalto que esta não é a única forma e nem a definitiva, mas que no meu caso em particular (não entrarei em detalhes) foi a opção mais viável.
Considerando que os usuários já tenham sido cadastrados no
Linux e no Samba, faça a seguinte alteração no
/etc/passwd:
Antes:
tux:x:1099:1099:,,,:/home/tux:/bin/bash
Depois:
tux:x:1099:1099:,,,:/home/tux:/opt/altera_minha_senha.sh
Conforme você já deve saber, cada linha do /etc/passwd corresponde a um usuário, logo você deverá fazer esta alteração nos usuários que utilizam compartilhamento através do Samba.
Agora vamos criar o script responsável pela alteração das senhas:
#!/bin/bash
#=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# script: altera_minha_senha.sh
# objetivo: alterar a senha do proprio usuario no Linux e samba
# autor: dorival junior (dorivaljunior@gmail.com)
# data: 19/02/2010
#=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
USUARIO=$( whoami )
LOG="/opt/log.alteracao_senha"
DATA=$( date )
clear
echo ""
echo "=======| ALTERACAO DE SENHA DO SAMBA |======"
echo ""
echo "Informacoes importantes:"
echo " - as senhas nao sao exibidas quando digitadas"
echo " - ao digitar a senha ATUAL errada, o sistema nao reclama. Neste caso,"
echo " nao havera alteracao de senha."
echo ""
echo "Informe a sua senha ATUAL:"
# faz com que o prompt nao exiba oque foi digitado
stty -echo
read OLD_PASSWORD
echo "Informe a sua NOVA senha:"
read NEW_PASSWORD
# faz o prompt voltar ao normal
stty echo
# os comandos abaixo fazem a alteracao da senha e jogam o resultado para um arquivo de LOG.
# Isto é interessante para acompanhar e comparar ações dos usuários referente a alteração de senha.
echo "|========= $DATA - usuario $USUARIO requisitou alteracao de senha" >> $LOG
echo "alterando a senha de $USUARIO no linux..."
( echo $OLD_PASSWORD ; echo $NEW_PASSWORD ; echo $NEW_PASSWORD ) | passwd 2>> $LOG
echo "alterando a senha de $USUARIO no samba..."
( echo $OLD_PASSWORD ; echo $NEW_PASSWORD ; echo $NEW_PASSWORD ) | smbpasswd -s 2>> $LOG
echo "|========= fim do relatorio" >> $LOG
echo ""
echo "Pressione uma tecla para continuar..."
read
Para evitar que usuários curiosos mexam no script, atribua as seguintes permissões:
# chmod 711 /opt/ (permitirá que qualquer um execute arquivos de dentro do opt, mas que não possam visualizá-los)
# chmod 744 /opt/altera_minha_senha.sh (permite a leitura e execução do script. Porém a leitura não será possível devido a permissão no nível acima, mas mesmo assim deve ser setada desta forma)
Pronto! Basta que o usuário acesse o servidor via SSH e o script de alteração de senha é executado.
Sugiro que seja disponibilizada a ferramenta "putty" para que os usuários Windows façam o acesso ssh e alterem sua senha. Esta ferramenta é pequena e não requer instalação.
Considerações finais:
Não fiz o tratamento de erros quanto à senha, mas isso pode ser adicionado e melhorado.
Até a próxima.
Olá Virgulla, não concordo totalmente com sua posição.
1° A utilização do putty não é complexa, basta baixar o programa (não precisa instalar), preencher o IP e selecionar SSH e pronto !!! (como eu disse, esta não é a única, porém a solução viável no meu caso). O resto será feito pelo próprio script que tomou lugar do interpretador de comandos. Além do mais, se o usuário for acessar sua conta via acesso remoto (FTP), o usuário e senha também já estarão prontos e são afetados pela forma de alteração proposta.
2° Quanto a segurança, não é possível o usuário forçar alguma coisa uma vez que o script é o interpretador de comando. Se ele tentar sair do script, o sistema cai. Peço que instale a solução e faça o teste, pois eu o fiz e comprovo.
3° Nenhum sistema é perfeito, mas este está nos níveis aceitáveis, porém se você puder comprovar através de experiência prática que esta solução permite sim comprometer a segurança como você diz, vamos montar um artigo em conjunto aqui mesmo no VOL, seria muito interessante !!
até mais, obrigado pela análise!!!