Article View: es.comp.os.linux.programacion
Article #7920Re: adduser script
From: J.A. Gutierrez
Date: Mon, 20 Jan 2003 11:51
Date: Mon, 20 Jan 2003 11:51
208 lines
6173 bytes
6173 bytes
---------------------------------------------------------------------------
#!/bin/ksh
# ksh for $RANDOM; otherwise you can use sh
#!/bin/sh
#
# SPDsoft, Wed Mar 13 11:19:05 CET 2002
# Fri Jun 7 12:07:38 CEST 2002 (PATH)
# Wed Jul 3 12:14:08 DST 2002 (setquota)
#
# In order to create a new user
# * Create a $passwd_in file with standard /etc/passwd format
# for the new user[s]
#
# * Execute this script from the directory where $passwd resides
# So:
# A new shadow entry is created
# The files repository is updated
# Quotas are set
# $HOME is created
#
PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin
PATH=$PATH:/usr/etc:/usr/local/bin:/usr/local/etc:/usr/local/sbin
export PATH
#ECHO=/bin/echo
ECHO=echo
DO=
passwd_in=./passwd
# FQDN
hostname=`grep \`hostname\` /etc/hosts | awk '{print $2}'`
QSOFT=10000
QHARD=20000
XXA=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXB=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#RANDOM=`date | md5 | tr -d '[a-z]' | awk '{print substr($0,1,5);}'`
RANDOM=`dd if=/dev/random bs=2 count=1 2>/dev/null | od -d -A n | tr -d ' '`
setupass()
{
upass="foobar"
echo "FIXME: write your own random password generator"
}
set -- `getopt rhqnsS:H: $*`
for i in $*
do
case $i in
-S) QSOFT=$2; shift; shift;;
-H) QHARD=$2; shift; shift;;
-q) ECHO=:; shift;;
-n) DO=echo; shift;;
-s)
XXA=setme
XXB=setme
shift;;
-h)
echo "Use: `basename $0` [-hqnr] [-SH]"
echo "-q: quiet"
echo "-n: do nothing"
echo "-S: soft quota (10000)"
echo "-H: hard quota (20000)"
echo "-s: init smbpasswd not null"
echo "passwd=$passwd , shadow=$shadow"
exit 0
;;
esac
done
umask 077
set -e
soft=$QSOFT
hard=$QHARD
$ECHO "\\n#####" Updating password
OIFS="$IFS"
IFS=:
while read uname pass uid gid gcos home shell
do
echo "# " $uname
setupass
cpass=`crp $upass`
echo "# " "$cpass" $upass
egrep -e "^$uname:" /etc/passwd && \
( echo "$uname: duplicated uname"; exit 1)
egrep -e "^[^:]*:[^:]*:$uid:" /etc/passwd && \
( echo "$uid: duplicated uid"; exit 1)
egrep -e "^[^:]*:[^:]*:$gid:" /etc/group >/dev/null || \
( echo "$gid: gid not in /etc/group"; exit 1)
ls -ld $home >/dev/null 2>&1 && \
( echo "$home: exists"; exit 1)
[ -d `dirname $home` ] || \
( echo "$home: parent (`dirname $home`) not found"; exit 1)
[ -x $shell ] || \
( echo "$shell: shell not found"; exit 1)
egrep -s -q -e "^$shell$" /etc/shells || \
echo "warning: $shell not in /etc/shells"
gname=`egrep -e "^[^:]*:[^:]*:$gid:" /etc/group | awk -F':' '{print $1}'`
gname=`echo $gname | sed -e 's,_,\\/,'`
expr "$home" ':' "\/home\/$gname\/$uname" >/dev/null ||\
echo "warning: $home is right? (not \"/home/$gname/$uname\")"
umask 022
$DO adduser -u $uid -g $gid -d $home -s $shell -c "$gcos" -p "$cpass" \
$uname
$DO chmod 755 $home
DF=`df \`dirname $home\` | tail -1`
dev=`echo "$DF" | awk -F' ' '{print $1}'`
fs=`echo "$DF" | awk -F' ' '{print $6}'`
$ECHO "\\n#####" setting quotas in $fs to $QSOFT $QHARD for $uname
if expr "$dev" ':' '[^\/]*:.*' >/dev/null
then
# home resides in remote NFS server
NFS_SERVER=`echo "$dev" | awk -F':' '{print $1}'`
fs=`echo "$dev" | awk -F':' '{print $2}'`
RNFS="ssh"
RNFS_ARGS="$NFS_SERVER"
$ECHO "#####" $rfs at $NFS_SERVER
else
RNFS="sh"
RNFS_ARGS="-c"
fi
#$DO $RNFS $RNFS_ARGS "/usr/local/etc/edq $dev $QSOFT $QHARD $uname"
$DO $RNFS $RNFS_ARGS "setquota $uname $QSOFT $QHARD 0 0 $dev"
if [ -f /usr/private/smbpasswd ]
then
$ECHO "#####" updating smbpasswd
if [ "$XXA" = "setme" ]
then
XX=`smbcrp "$upass"`
else
XX="$XXA:$XXB"
fi
if [ "$DO" != "echo" ]
then
echo "$uname:$uid:$XX:[U ]:LCT-363F96AD:" >> \
/usr/private/smbpasswd
else
echo "$uname:$uid:$XX:[U ]:LCT-363F96AD:\n"
fi
fi
#####
#
# create report
#
cat << ++
######################################################################
Hola
La cuenta
${uname}@${hostname}
ha sido creada para
${gcos}
El password inicial, que el usuario debera cambiar en su
primera sesion, es el siguiente:
${upass}
######################################################################
++
done < $passwd_in
IFS="$OIFS"
if egrep "^passwd:.*nis" /etc/nsswitch.conf
then
$DO cd /var/yp
$DO make
fi
exit
---------------------------------------------------------------------------
--
PGP and other useless info at \
http://www.cps.unizar.es/~spd/ \
finger://daphne.cps.unizar.es/spd \ Timeo Danaos et dona ferentes
ftp://ivo.cps.unizar.es/pub/ \ (Virgilio)
Technical Details
Message-ID:
<b0gnrf$78f$2@news.unizar.es>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!snoopy.risq.qc.ca!newsfeed.news2me.com!newsfeed-west.nntpserver.com!hub1.meganetnews.com!nntpserver.com!telocity-west!DIRECTV!news-out.spamkiller.net!propagator2-maxim!news-in.spamkiller.net!newsf01.ono.com!news.rediris.es!news.unizar.es!not-for-mailReferences:
<2conf-lb2.ln1@paldaria.dsland.org> <slrnb2j20e.39.catactttc@paleo.chiti.org> <v5gof-oa1.ln1@paldaria.dsland.org> <slrnb2jc9b.39.catactttc@paleo.chiti.org> <ee3pf-pp2.ln1@paldaria.dsland.org> <o39pf-6o4.ln1@paldaria.dsland.org> <b0ed1u$f60$1@nsnmrro2-gest.nuria.telefonica-data.net> <453sf-4h1.ln1@paldaria.dsland.org>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f86c8,a0ddc9dad727a552
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-01-20 03:15:36 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!snoopy.risq.qc.ca!newsfeed.news2me.com!newsfeed-west.nntpserver.com!hub1.meganetnews.com!nntpserver.com!telocity-west!DIRECTV!news-out.spamkiller.net!propagator2-maxim!news-in.spamkiller.net!newsf01.ono.com!news.rediris.es!news.unizar.es!not-for-mail
From: "J.A. Gutierrez" <spd@daphne.cps.unizar.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: adduser script
Date: 20 Jan 2003 11:51:11 GMT
Organization: Rank
Lines: 208
Message-ID: <b0gnrf$78f$2@news.unizar.es>
References: <2conf-lb2.ln1@paldaria.dsland.org> <slrnb2j20e.39.catactttc@paleo.chiti.org> <v5gof-oa1.ln1@paldaria.dsland.org> <slrnb2jc9b.39.catactttc@paleo.chiti.org> <ee3pf-pp2.ln1@paldaria.dsland.org> <o39pf-6o4.ln1@paldaria.dsland.org> <b0ed1u$f60$1@nsnmrro2-gest.nuria.telefonica-data.net> <453sf-4h1.ln1@paldaria.dsland.org>
NNTP-Posting-Host: daphne.cps.unizar.es
X-Trace: news.unizar.es 1043063471 7439 155.210.152.20 (20 Jan 2003 11:51:11 GMT)
X-Complaints-To: usenet@news.unizar.es
NNTP-Posting-Date: 20 Jan 2003 11:51:11 GMT
User-Agent: tin/1.4.5-20010409 ("One More Nightmare") (UNIX) (IRIX/6.2 (IP22))