🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7920

Re: adduser script

#7920
From: J.A. Gutierrez
Date: Mon, 20 Jan 2003 11:51
208 lines
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-mail
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>

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))