#!/bin/sh

#
# (c) spd_at_daphne.cps.unizar.es
# Thu Nov 18 09:05:31 CET 2004
# License: Cantoware - Si te gusta ya te puedes dar con un canto en los dientes
#
# This script change some user uid field in NIS+ database
# Needs: root privileges
# It will not change uid of user files nor disk quotas.
#


ECHO=/usr/bin/echo
DO=

usage()
{
    echo "Use: `basename $0` [-hqn] name newuid"
    echo "-q: quiet"
    echo "-n: do nothing"
}


set -- `getopt hqn $*`
for i in $*
do
	case $i in
	-q) ECHO=:; shift;;
	-n) DO=echo; shift;;
	-h)
		usage
		exit 0
		;;
	esac
done

if [ $# -ne 3 ]
then
    usage
    exit 1
fi

umask 077

set -e

newuid=$3
name=$2

expr "$newuid" : '^[1-9][0-9]*' > /dev/null 2>&1 || (
    echo \""$newuid"\" is not a valid uid
    usage
    exit 1
)

olduid=`/usr/bin/id $name | sed -e 's/^uid=//' -e 's/(.*//'`


domain=`domainname`

# passwd # name passwd uid gid gcos home shell shadow
# cred # cname auth_type auth_name public_data private_data

nismatch name=$name passwd.org_dir && \
(
	$DO nistbladm -m uid=$newuid "[name=$name]",passwd.org_dir
	$DO nistbladm -m auth_name=$newuid \
	"[cname=$name.$domain.,auth_type=LOCAL]",cred.org_dir
	$DO nistbladm -m auth_name=unix.$newuid@$domain \
	"[cname=$name.$domain.,auth_type=DES]",cred.org_dir
	$DO nischown $name.$domain. "[uid=$newuid],passwd.org_dir"
	$DO nischown $name.$domain. \
	"[cname=$name.$domain.,auth_type=DES],cred.org_dir"
) || \
echo user \"$name\" not found



