shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]