[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SH e Passwords
From: |
Marcos Paulo |
Subject: |
SH e Passwords |
Date: |
Wed, 18 Feb 2004 15:01:34 -0300 |
Alguem sabe se o /bin/sh tem alguma restricao para comandos como o echo
"$senha" | passwd --stdin "$usuario" ?? porque não funciona se eu executar o
script, nem via cron, nem manualmente.. so se digitar os comandos..
O que acontece é que tenho um shellscript que é executado via crontab e
verifica o arquivo actions.mailadm e faz as alterações pertinentes, seja
inclusao de usario de email, seja remoçao ou seja troca de senha.
O problema: executar o script a troca de senha não funciona tanto via cron,
tanto via sh nomedoscript (ambos pelo root). agora se digito o comando ele
roda..
alguem tem alguma dica?
Segue o script abaixo..
#-------- mailadm.sh ------------#
#!/bin/sh
#define o file action list
ndir="/var/www/html/webpoint/webmail/mailadm/"
fal="$ndir""actions.mailadm"
ful="$ndir""allow.mailadm"
all="$ndir""deny.mailadm"
pid="$ndir""pid.mailadm"
#creating pid
echo "READING FILES" > $pid
#faz as listas
grep -o ".*:x:[0-9]*:231:" /etc/passwd | cut -f1-2 -d":" | sort > $ful
grep -o ".*:x:[0-9]*:[^2][^3][^1]" /etc/passwd | cut -f1-2 -d":" | sort > $all
#verifica se o arquivo existe e é maior que zero:
if [ -s $fal ]; then
while read texto
do
acao=`echo $texto | cut -f1 -d":"`
usuario=`echo $texto | cut -f2 -d":"`
senha=`echo $texto | cut -f3 -d":"`
todos=`grep "^$usuarios:x" $all`
pode=`grep "^$usuario:x" $ful`
case $acao in
"A")
#adicionar usuario
if [ "$todos" = "" ]; then
if [ "$pode" = "" ]; then
/usr/sbin/useradd -g popusers -s "/bin/false" -c "$usuario" -d
"/home/guest" "$usuario"
#echo "$senha" | /usr/bin/passwd --stdin "$usuario"
echo "$usuario"":""$senha" | chpasswd
fi
fi
;;
"S")
#troca senha
if [ "$pode" != "" ]; then
#echo "$senha" | /usr/bin/passwd --stdin "$usuario"
echo "$usuario"":""$senha" | chpasswd
fi
;;
"R")
#remover usuario
if [ "$pode" != "" ]; then
/usr/sbin/userdel $usuario
rm -f /var/spool/mail/"$usuario"
#remove do webmail
wf=/var/database/"$usuario"_pop.colegiouniversitario.com.br
if [ -d $wf ]; then
rm -rf $wf
fi
fi
;;
esac
dt=`date +%d/%m/%Y-%R`
echo "$dt - Acao: $acao Usuario: $usuario" >> /var/log/mailadm.log
done < $fal
#REMOVE THE FILE
rm -f $fal
fi
#faz as listas
grep -o ".*:x:[0-9]*:231:" /etc/passwd | cut -f1-2 -d":" | sort > $ful
grep -o ".*:x:[0-9]*:[^2][^3][^1]" /etc/passwd | cut -f1-2 -d":" | sort > $all
#REMOVE O PID
rm -f $pid
#------- fim mailadm.sh -----------#
Marcos
[As partes desta mensagem que não continham texto foram removidas]
- SH e Passwords,
Marcos Paulo <=