This is defaultuser.sh in view mode; [Download] [Up]
#!/bin/sh
PATH=/usr/local/gnu/bin:/usr/local/bin:/bin:/usr/ucb:/usr/bin:/usr/etc:/usr:/etc
#####################################################################
#
# Date: 13 Sept 1997
# Author: TjL <luomat+next@luomat.peak.org>
# Version: 2.0 (previously released as `fiddlepass'
#
#####################################################################
#
#
# Warning: do NOT make root the DefaultUser... it just
# isn't a good idea
#
#
#####################################################################
#
# This script is to remove and restore the password for the user
# known as the ``DefaultUser''
#
# This supercedes the script I formerly wrote called `fiddlepass'
# to do roughly the same thing, thou not nearly as well.
#
# Thanks to Luke Howard <lukeh@xedoc.com.au> and
# Christian Limpach <chris@nice.ch>
# but they are not responsible for this script....
#
# ... in fact, neither am I... Use entirely at your own risk
#
#
# USAGE: pretty simple. It takes one of two arguments:
#
# Use ``removepass'' to remove the password.
# It will be stored (encrypted) in root's dwrites.
#
# Use ``restorepass'' to restore the password
#
# How to use:
# I'd try putting something like this in /etc/rc.local:
#
# defaultuser.sh removepass
# (sleep 60 && defaultuser.sh restorepass) &
#
# That will remove the password, wait 60 seconds, and then
# restore the password.... that should be plenty of time
# to complete the boot action and have the default user
# get logged in.... you might want to make it less time
# since this account will be open during that interval...
#
#
#
####################################################################
# setting VERBOSE=yes gets some extra info during processing
VERBOSE=yes
name=`basename $0`
####################################################################
if [ "`/usr/ucb/whoami`" != "root" ]
then
echo "Must be root to run this program"
exit 1
fi
####################################################################
NIUTIL=/usr/bin/niutil
if [ ! -x $NIUTIL ]; then
echo "Oops... can't find $NIUTIL!"
exit 1
fi
####################################################################
###################################################################
# get the username of the `DefaultUser' from root's dwrite
# database
USER=`/usr/bin/dread loginwindow DefaultUser |awk '{print $NF}'`
#########################################
# if there is no DefaultUser, exit
if [ "$USER" = "" ]
then
echo "No default user found, try 'dwrite loginwindow DefaultUser username' to set a Default User"
exit 1
fi
if [ "$VERBOSE" = "yes" ]; then
# OK, tell them who the user is
echo "DefaultUser is ${USER}"
fi
###################################################################
# set the NetInfo Directory
NIDIR=/users/${USER}
if [ "$VERBOSE" = "yes" ]; then
# OK, tell them who the user is
echo "NIDIR=/users/${USER}"
fi
####################################################################
case $1 in
removepass)
# we try to get the current password from the
# NetInfo database
PASSWD=`$NIUTIL -readprop . $NIDIR passwd`
# if that exited NOT zero, something went wrong
if [ "$?" != "0" ]
then
echo "FATAL: Can't find local password for user $USER"
exit 1
fi
if [ "$VERBOSE" = "yes" ]; then
echo "Good: found a local passwd for $USER"
fi
#########################################
# store the password (encrypted) in
# root's dwrite database
/usr/bin/dwrite loginwindow DefaultUserPassword $PASSWD
#########################################
# then remove the password
$NIUTIL -destroyprop . $NIDIR passwd
;;
#
# The end of the `removepass' code
#
restorepass)
if [ "$VERBOSE" = "yes" ]; then
echo "Trying to reestablish password for $USER"
fi
PASS=`/usr/bin/dread loginwindow DefaultUserPassword |\
awk '{print $NF}'`
########################################################
if [ "$PASS" = "" ]
then
if [ "$VERBOSE" = "yes" ]; then
echo "Drat.... can't find old password for $USER... trying to grab root's"
fi
# eek, no password found... let's use
# root's password so we don't have an account
# with no password at all
PASS=`$NIUTIL -readprop . /users/root passwd`
###########################################
if [ "$PASS" = "" ]
then
if [ "$VERBOSE" = "yes" ]; then
echo "Very bad... no root password "
fi
# goodness, there's no root password
# this is bad news
echo "Please check the local domain on `hostname` since there does not seem to be a password for $USER or root... logins are disabled for $USER" | /usr/ucb/Mail -s "($name) WARNING: " root $USER
# well, since we can't find a password
# we'll use "*" to disable logins
# to we'll be secure at least
PASS="*"
#########################################
else
if [ "$VERBOSE" = "yes" ]; then
echo "well, at least we can use root's password rather than $USER's"
fi
echo "Could not find a password for $USER, so I made it the same as root's from the local domain on machine `hostname`" | /usr/ucb/Mail -s "($name) WARNING: " root $USER
fi
#########################################
fi
###################################################################
# now we recreate the password
$NIUTIL -createprop . $NIDIR passwd $PASS
if [ "$?" != "0" ]
then
echo "Something went wrong trying to restore password for $USER"
exit 1
fi
;;
#
# the end of the ``restorepass' code
#
*) echo "Use either:"
echo " $name restorepass"
echo "or"
echo " $name removepass"
;;
esac
###################################################################
exit 0
###################################################################
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.