#!/bin/bash # version 2.01 LOGIN= GROUP= COMMENT= CONFFILE="/etc/clusterserver.conf" if [ ! -f ${CONFFILE} ]; then echo "Cant find ${CONFFILE} !" exit 1 fi . ${CONFFILE} AmIRoot() { if [ `id -u` -ne 0 ]; then echo "You are not root" echo "Exiting" exit -1 fi } addUserToGroup() { echo "Adding $1 in $2 group" GRP=`grep "$2:x:" /etc/group` if [ -z "${GRP}" ]; then echo "$2 group not found!" echo "Exiting" exit -1 fi IS_USERS=$(echo $GRP | grep ",") USERS_GRP=$(echo $GRP | cut -d ":" -f 4) GRP_NEW="" if [ -z $USERS_GRP ]; then # If there is no users then GRP_NEW=$(echo ${GRP}$1) # Add the user without coma else # There is more than 1 user if [ ! -z $(echo $USERS_GRP | grep -w $1) ]; then # If the user is already in this group echo "User $1 is already a member of $2 group" else GRP_NEW=$(echo $GRP,$1) #Add the user with a coma fi fi if [ ! -z $GRP_NEW ]; then cp -f /etc/group /etc/group.$DATE sed -e 's/'$GRP'/'$GRP_NEW'/g' /etc/group.$DATE > /etc/group fi } PWD=1 echo "-----------------------------------------------------------" echo "Add New user in NIS environnement on " ${NFSERVER} echo "user with an uid > 500 are NIS user" echo "-----------------------------------------------------------" while [ -z "$LOGIN" ] ; do echo -n " Login : " read LOGIN tmp done GROUP= while [ -z "$GROUP" ] ; do GROUP=users echo -n " Group(s) [$GROUP] (You are member of mpi, pbs, pvm by default) : " read GROUP [ -z "$GROUP" ] && { GROUP=users break ; } TEST_GROUP=`cat /etc/group | awk '{print $1}' | grep -w "$GROUP"` if [ -z "$TEST_GROUP" ]; then groupadd $GROUP fi done addUserToGroup $LOGIN mpi addUserToGroup $LOGIN pvm addUserToGroup $LOGIN pbs while [ -z "$COMMENT" ] ; do echo -n " Comment (ex: James Bond): " read COMMENT done echo ---------------------------------------------------------- echo "Login: $LOGIN" echo "Group: $GROUP" echo "Comment: $COMMENT" HOMEUSER=$HOMENIS/$LOGIN useradd -c "$COMMENT" -g "$GROUP" $LOGIN -d "$HOMEUSER" while [ $PWD -eq 1 ] ; do echo "passwd $LOGIN:" passwd $LOGIN PWD=$? done # update nis table ( cd /var/yp ; make ) echo " - Creating ssh key for user $LOGIN" su $LOGIN -c "mkdir ~/.ssh" su $LOGIN -c "ssh-keygen -t dsa -f ~/.ssh/id_dsa -N \"\" " echo " - authorize user to ssh himself" cat $HOMEUSER/.ssh/id_dsa.pub > $HOMEUSER/.ssh/authorized_keys echo " - Setting .rhosts file" echo "${HOSTNAME} $LOGIN" > $HOMEUSER/.rhosts for i in `cat $NODESFILE` do echo "$i $LOGIN" >> $HOMEUSER/.rhosts done cat > $HOMEUSER/.xinitrc <<EOF xhost + /usr/X11R6/bin/xsetbg /etc/X11/clic-1024.jpg if [ -f /usr/X11R6/bin/wmaker ]; then exec wmaker else exec twm fi EOF echo " - Creating ${REP_SAVE}/$LOGIN" mkdir -p ${REP_SAVE}/$LOGIN chown -R $LOGIN.$GROUP ${REP_SAVE}/$LOGIN echo " - Setting permission on file" chown -R $LOGIN.$GROUP $HOMEUSER/ chmod 644 $HOMEUSER/.rhosts #End