DSfW: After Migration KDC and XADSD do not start
This document (7011899) is provided subject to the disclaimer at the end of this document.
Environment
Novell Open Enterprise Server 11 SP1 (OES 11SP1) Linux
Novell Open Enterprise Server 2 SP3 (OES 2SP3) Linux
Domain Services for Windows
DSFW
DSFW
January 2013 Maintenance Patch
Situation
After OES2SP3 migration to OES11SP1 XADSD and KDC do not start
xadsd and xad-krb5kdc are not running after migration from oes2sp3 to oes11sp1
Resolution
The start up files are copied from the OES2SP3 server over to the OES11 SP1 server.
In the /etc/init.d/xad-krb5kdc go to line 212 or search for xadsd_check_running and rem the line out (#).
#xadsd_check_running
In the /etc/init.d/xadsd go to line 34 or search for NCALRPCDIR=$REGISTRY=NcalRpcDir and rem the line out.
Then add a new line below #NCALRPCDIR=$REGISTRY=NcalRpcDir and put NCALRPCDIR=/var/opt/novell/xad/rpc
#NCALRPCDIR=$REGISTRY=NcalRpcDir
NCALRPCDIR=/var/opt/novell/xad/rpc
Cause
The servers were not at the same patch level. Both source and target servers should be at the same patch level when doing a migration.
Additional Information
Sample xadsd startup file
#! /bin/sh
# Copyright (c) 2001-2006 Novell, Inc.
#
# Author: Novell, Inc.
#
# /etc/init.d/xadsd
#
### BEGIN INIT INFO
# Provides: xadsd
# Required-Start: $network $syslog ndsd rpcd
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Domain Services Daemon
# Description: Domain Services for Windows
### END INIT INFO
_LIB=`/opt/novell/xad/share/dcinit/printConfigKey.pl "_Lib"`
EXEC_PREFIX=/opt/novell/n
BINDIR=$EXEC_PREFIX/bin
SBINDIR=$EXEC_PREFIX/sbin
LIBEXECDIR=$EXEC_PREFIX/libexec
SYSCONFDIR=/etc/opt/novell/xad
LOCALSTATEDIR=/var/opt/novell/xad
LIBDIR=$EXEC_PREFIX/$_LIB
DATADIR=$EXEC_PREFIX/share
NDS_EXEC_PREFIX=/opt/novell/eDirectory
NDS_BINDIR=$NDS_EXEC_PREFIX/bin
NDS_SBINDIR=$NDS_EXEC_PREFIX/sbin
NDS_LIBDIR=$NDS_EXEC_PREFIX/$_LIB
NDS_LOCALSTATEDIR=/var$NDS_EXEC_PREFIX
#NCALRPCDIR=$REGISTRY=NcalRpcDir
NCALRPCDIR=/var/opt/novell/xad/rpc
export RPC_NCALRPC_DIR=$NCALRPCDIR
DCINIT_CONFIG=$SYSCONFDIR/xad.ini
export DCINIT_CONFIG
PATH=$DATADIR/dcinit:$SBINDIR:$LIBEXECDIR:$BINDIR:/sbin:$PATH
export PATH
LD_LIBRARY_PATH=/opt/novell/xad/$_LIB:/opt/novell/xad/$_LIB/nds-modules:/opt/novell/eDirectory/$_LIB:/opt/novell/eDirectory/$_LIB/nds-modules:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
SASL_PATH=$LIBDIR/sasl2
export SASL_PATH
LDAPCONF=$SYSCONFDIR/openldap/ldap.conf
export LDAPCONF
KRB5CCNAME=KCM:SYSTEM
export KRB5CCNAME
RPC_SERVER_DISC_TIME=600
export RPC_SERVER_DISC_TIME
NDS_CONF=$SYSCONFDIR/nds.conf
NAMED_CONF=$SYSCONFDIR/named.conf
LDAPI_SOCKET=$LOCALSTATEDIR/run/ldapi
test -f $SYSCONFDIR/xad.ini || exit 0
# Souce xadsd server port if one is configured.
XADSD_CONF=/etc/sysconfig/novell/xadsd
test -f $XADSD_CONF && . $XADSD_CONF
test -n "$XADSD_RPC_SERVER_PORT" && XADSD_SERVER_PORT_ARGS="-p $XADSD_RPC_SERVER_PORT"
ndsd_check_running()
{
PIDNDSD=`cat $NDS_LOCALSTATEDIR/data/ndsd.pid 2>/dev/null`
if [ ! -z "$PIDNDSD" ] ; then
y=0
printf " Waiting for LDAP server to be ready ...\n"
while [ $y -lt 60 ]
do
/usr/bin/ldapsearch -LLL -b "" -s base -Y EXTERNAL dn >/dev/null 2>&1
if [ "$?" == 0 ]
then
return
fi
printf "."
sleep 1
y=$((y+1))
done
printf " LDAP server is not Responding.\n"
exit 1
else
printf " LDAP server must be started before Domain Services for Windows.\n"
exit 1
fi
}
xadsd_check_running()
{
$LIBEXECDIR/xadsd -S >/dev/null 2>&1
if [ $? -eq 1 ]; then
true
else
false
fi
}
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
STARTPROC_ARGS="-q -u root"
ndsd_check_running
echo -n "Starting Domain Services Daemon"
startproc $STARTPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid -s -t 3 $LIBEXECDIR/xadsd $XADSD_SERVER_PORT_ARGS
if [ $? -eq 0 ]; then
xadsd_check_running
fi
rc_status -v -r
# root and ntp need access to the domain socket
chown ntp $RPC_NCALRPC_DIR/xadsd
#Remove the old link
rm -f /var/lib/ntp/$LOCALSTATEDIR/rpc/xadsd
#Link the domain socket to /var/lib/ntp chroot jail
ln -f $RPC_NCALRPC_DIR/xadsd /var/lib/ntp/$LOCALSTATEDIR/rpc/xadsd
# refresh winbindd to recognize xad services
killall -SIGHUP nmbd 2>/dev/null
killall -SIGHUP winbindd 2>/dev/null
killall -SIGHUP smbd 2>/dev/null
;;
stop)
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
KILLPROC_ARGS=-TERM
echo -n "Shutting down Domain Services Daemon"
killproc $KILLPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid $LIBEXECDIR/xadsd
rc_status -v -r
# Delete epheremal endpoints
rm -f $RPC_NCALRPC_DIR/xadsd
rm -f $RPC_NCALRPC_DIR/PIPE/np/samr
rm -f $RPC_NCALRPC_DIR/PIPE/np/lsarpc
rm -f $RPC_NCALRPC_DIR/PIPE/np/netlogon
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reloading Domain Services Daemon"
# Otherwise:
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
echo -n "Reloading Domain Services Daemon"
# Otherwise if it does not support reload:
rc_failed 3
rc_status -v -r
;;
status)
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
CHECKPROC_ARGS=
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
echo -n "Checking for Domain Services Daemon"
checkproc $CHECKPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid $LIBEXECDIR/xadsd
rc=$?
if [ ${rc} -eq 0 ]; then
xadsd_check_running
rc=$?
fi
( exit ${rc} )
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
#! /bin/sh
# Copyright (c) 2001-2006 Novell, Inc.
#
# Author: Novell, Inc.
#
# /etc/init.d/xadsd
#
### BEGIN INIT INFO
# Provides: xadsd
# Required-Start: $network $syslog ndsd rpcd
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Domain Services Daemon
# Description: Domain Services for Windows
### END INIT INFO
_LIB=`/opt/novell/xad/share/dcinit/printConfigKey.pl "_Lib"`
EXEC_PREFIX=/opt/novell/xad
BINDIR=$EXEC_PREFIX/bin
SBINDIR=$EXEC_PREFIX/sbin
LIBEXECDIR=$EXEC_PREFIX/libexec
SYSCONFDIR=/etc/opt/novell/xad
LOCALSTATEDIR=/var/opt/novell/xad
LIBDIR=$EXEC_PREFIX/$_LIB
DATADIR=$EXEC_PREFIX/share
NDS_EXEC_PREFIX=/opt/novell/eDirectory
NDS_BINDIR=$NDS_EXEC_PREFIX/bin
NDS_SBINDIR=$NDS_EXEC_PREFIX/sbin
NDS_LIBDIR=$NDS_EXEC_PREFIX/$_LIB
NDS_LOCALSTATEDIR=/var$NDS_EXEC_PREFIX
NCALRPCDIR=$REGISTRY=NcalRpcDir
export RPC_NCALRPC_DIR=$NCALRPCDIR
DCINIT_CONFIG=$SYSCONFDIR/xad.ini
export DCINIT_CONFIG
PATH=$DATADIR/dcinit:$SBINDIR:$LIBEXECDIR:$BINDIR:/sbin:$PATH
export PATH
LD_LIBRARY_PATH=/opt/novell/xad/$_LIB:/opt/novell/xad/$_LIB/nds-modules:/opt/novell/eDirectory/$_LIB:/opt/novell/eDirectory/$_LIB/nds-modules:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
SASL_PATH=$LIBDIR/sasl2
export SASL_PATH
LDAPCONF=$SYSCONFDIR/openldap/ldap.conf
export LDAPCONF
KRB5CCNAME=KCM:SYSTEM
export KRB5CCNAME
RPC_SERVER_DISC_TIME=600
export RPC_SERVER_DISC_TIME
NDS_CONF=$SYSCONFDIR/nds.conf
NAMED_CONF=$SYSCONFDIR/named.conf
LDAPI_SOCKET=$LOCALSTATEDIR/run/ldapi
test -f $SYSCONFDIR/xad.ini || exit 0
# Souce xadsd server port if one is configured.
XADSD_CONF=/etc/sysconfig/novell/xadsd
test -f $XADSD_CONF && . $XADSD_CONF
test -n "$XADSD_RPC_SERVER_PORT" && XADSD_SERVER_PORT_ARGS="-p $XADSD_RPC_SERVER_PORT"
ndsd_check_running()
{
PIDNDSD=`cat $NDS_LOCALSTATEDIR/data/ndsd.pid 2>/dev/null`
if [ ! -z "$PIDNDSD" ] ; then
y=0
printf " Waiting for LDAP server to be ready ...\n"
while [ $y -lt 60 ]
do
/usr/bin/ldapsearch -LLL -b "" -s base -Y EXTERNAL dn >/dev/null 2>&1
if [ "$?" == 0 ]
then
return
fi
printf "."
sleep 1
y=$((y+1))
done
printf " LDAP server is not Responding.\n"
exit 1
else
printf " LDAP server must be started before Domain Services for Windows.\n"
exit 1
fi
}
xadsd_check_running()
{
$LIBEXECDIR/xadsd -S >/dev/null 2>&1
if [ $? -eq 1 ]; then
true
else
false
fi
}
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
STARTPROC_ARGS="-q -u root"
ndsd_check_running
echo -n "Starting Domain Services Daemon"
startproc $STARTPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid -s -t 3 $LIBEXECDIR/xadsd $XADSD_SERVER_PORT_ARGS
if [ $? -eq 0 ]; then
xadsd_check_running
fi
rc_status -v -r
# root and ntp need access to the domain socket
chown ntp $RPC_NCALRPC_DIR/xadsd
#Remove the old link
rm -f /var/lib/ntp/$LOCALSTATEDIR/rpc/xadsd
#Link the domain socket to /var/lib/ntp chroot jail
ln -f $RPC_NCALRPC_DIR/xadsd /var/lib/ntp/$LOCALSTATEDIR/rpc/xadsd
# refresh winbindd to recognize xad services
killall -SIGHUP nmbd 2>/dev/null
killall -SIGHUP winbindd 2>/dev/null
killall -SIGHUP smbd 2>/dev/null
;;
stop)
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
KILLPROC_ARGS=-TERM
echo -n "Shutting down Domain Services Daemon"
killproc $KILLPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid $LIBEXECDIR/xadsd
rc_status -v -r
# Delete epheremal endpoints
rm -f $RPC_NCALRPC_DIR/xadsd
rm -f $RPC_NCALRPC_DIR/PIPE/np/samr
rm -f $RPC_NCALRPC_DIR/PIPE/np/lsarpc
rm -f $RPC_NCALRPC_DIR/PIPE/np/netlogon
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reloading Domain Services Daemon"
# Otherwise:
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
echo -n "Reloading Domain Services Daemon"
# Otherwise if it does not support reload:
rc_failed 3
rc_status -v -r
;;
status)
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
CHECKPROC_ARGS=
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
echo -n "Checking for Domain Services Daemon"
checkproc $CHECKPROC_ARGS -p $LOCALSTATEDIR/run/xadsd.pid $LIBEXECDIR/xadsd
rc=$?
if [ ${rc} -eq 0 ]; then
xadsd_check_running
rc=$?
fi
( exit ${rc} )
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
Sample xad-krb5kdc
#! /bin/sh
# Copyright (c) 2001-2006 Novell, Inc.
#
# Author: Novell, Inc.
#
# /etc/init.d/xad-krb5kdc
#
### BEGIN INIT INFO
# Provides: krb5kdc
# Required-Start: $network $syslog ndsd
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Kerberos KDC Daemon
# Description: Kerberos KDC Server
### END INIT INFO
_LIB=`/opt/novell/xad/share/dcinit/printConfigKey.pl "_Lib"`
EXEC_PREFIX=/opt/novell/xad
BINDIR=$EXEC_PREFIX/bin
SBINDIR=$EXEC_PREFIX/sbin
LIBEXECDIR=$EXEC_PREFIX/libexec
SYSCONFDIR=/etc/opt/novell/xad
LOCALSTATEDIR=/var/opt/novell/xad
LIBDIR=$EXEC_PREFIX/$_LIB
DATADIR=$EXEC_PREFIX/share
NDS_EXEC_PREFIX=/opt/novell/eDirectory
NDS_BINDIR=$NDS_EXEC_PREFIX/bin
NDS_SBINDIR=$NDS_EXEC_PREFIX/sbin
NDS_LIBDIR=$NDS_EXEC_PREFIX/$_LIB
NDS_LOCALSTATEDIR=/var$NDS_EXEC_PREFIX
KRB5_CONFIG=$SYSCONFDIR/krb5.conf
export KRB5_CONFIG
DCINIT_CONFIG=$SYSCONFDIR/xad.ini
export DCINIT_CONFIG
PATH=$DATADIR/dcinit:$SBINDIR:$LIBEXECDIR:$BINDIR:/sbin:$PATH
export PATH
LD_LIBRARY_PATH=/opt/novell/xad/$_LIB:/opt/novell/xad/$_LIB/nds-modules:/opt/novell/eDirectory/$_LIB:/opt/novell/eDirectory/$_LIB/nds-modules:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
SASL_PATH=$LIBDIR/sasl2
export SASL_PATH
LDAPCONF=$SYSCONFDIR/openldap/ldap.conf
export LDAPCONF
KRB5CCNAME=KCM:SYSTEM
export KRB5CCNAME
NDS_CONF=$SYSCONFDIR/nds.conf
NAMED_CONF=$SYSCONFDIR/named.conf
LDAPI_SOCKET=$LOCALSTATEDIR/run/ldapi
test -f $SYSCONFDIR/xad.ini || exit 0
ndsd_check_running()
{
PIDNDSD=`cat $NDS_LOCALSTATEDIR/data/ndsd.pid 2>/dev/null`
if [ ! -z "$PIDNDSD" ] ; then
y=0
printf " Waiting for LDAP server to be ready ...\n"
while [ $y -lt 60 ]
do
/usr/bin/ldapsearch -LLL -b "" -s base -Y EXTERNAL dn >/dev/null 2>&1
if [ "$?" == 0 ]
then
return
fi
printf "."
sleep 1
y=$((y+1))
done
printf " LDAP server is not Responding.\n"
exit 1
else
printf " LDAP server must be started before Domain Services for Windows.\n"
exit 1
fi
}
xadsd_check_running()
{
$LIBEXECDIR/xadsd -S >/dev/null 2>&1
if [ $? -eq 1 ]; then
true
else
false
fi
}
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
STARTPROC_ARGS="-q -u root"
ndsd_check_running
echo -n "Starting Kerberos KDC"
startproc $STARTPROC_ARGS -p $LOCALSTATEDIR/run/krb5kdc.pid -s $SBINDIR/krb5kdc
rc_status -v -r
;;
stop)
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
KILLPROC_ARGS=-TERM
echo -n "Shutting down Kerberos KDC"
#killproc $KILLPROC_ARGS -p $LOCALSTATEDIR/run/krb5kdc.pid $SBINDIR/krb5kdc
killproc $KILLPROC_ARGS $SBINDIR/krb5kdc
rc_status -v -r
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reloading Kerberos KDC Service"
# Otherwise:
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
echo -n "Reloading Kerberos KDC Service"
# Otherwise if it does not support reload:
rc_failed 3
rc_status -v -r
;;
status)
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
CHECKPROC_ARGS=
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
echo -n "Checking for Kerberos KDC Service"
# NOTE: checkproc returns LSB compliant status values.
checkproc $CHECKPROC_ARGS $SBINDIR/krb5kdc
rc=$?
if [ ${rc} -eq 0 ]; then
#xadsd_check_running
rc=$?
fi
( exit ${rc} )
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
#! /bin/sh
# Copyright (c) 2001-2006 Novell, Inc.
#
# Author: Novell, Inc.
#
# /etc/init.d/xad-krb5kdc
#
### BEGIN INIT INFO
# Provides: krb5kdc
# Required-Start: $network $syslog ndsd
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Kerberos KDC Daemon
# Description: Kerberos KDC Server
### END INIT INFO
_LIB=`/opt/novell/xad/share/dcinit/printConfigKey.pl "_Lib"`
EXEC_PREFIX=/opt/novell/xad
BINDIR=$EXEC_PREFIX/bin
SBINDIR=$EXEC_PREFIX/sbin
LIBEXECDIR=$EXEC_PREFIX/libexec
SYSCONFDIR=/etc/opt/novell/xad
LOCALSTATEDIR=/var/opt/novell/xad
LIBDIR=$EXEC_PREFIX/$_LIB
DATADIR=$EXEC_PREFIX/share
NDS_EXEC_PREFIX=/opt/novell/eDirectory
NDS_BINDIR=$NDS_EXEC_PREFIX/bin
NDS_SBINDIR=$NDS_EXEC_PREFIX/sbin
NDS_LIBDIR=$NDS_EXEC_PREFIX/$_LIB
NDS_LOCALSTATEDIR=/var$NDS_EXEC_PREFIX
KRB5_CONFIG=$SYSCONFDIR/krb5.conf
export KRB5_CONFIG
DCINIT_CONFIG=$SYSCONFDIR/xad.ini
export DCINIT_CONFIG
PATH=$DATADIR/dcinit:$SBINDIR:$LIBEXECDIR:$BINDIR:/sbin:$PATH
export PATH
LD_LIBRARY_PATH=/opt/novell/xad/$_LIB:/opt/novell/xad/$_LIB/nds-modules:/opt/novell/eDirectory/$_LIB:/opt/novell/eDirectory/$_LIB/nds-modules:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
SASL_PATH=$LIBDIR/sasl2
export SASL_PATH
LDAPCONF=$SYSCONFDIR/openldap/ldap.conf
export LDAPCONF
KRB5CCNAME=KCM:SYSTEM
export KRB5CCNAME
NDS_CONF=$SYSCONFDIR/nds.conf
NAMED_CONF=$SYSCONFDIR/named.conf
LDAPI_SOCKET=$LOCALSTATEDIR/run/ldapi
test -f $SYSCONFDIR/xad.ini || exit 0
ndsd_check_running()
{
PIDNDSD=`cat $NDS_LOCALSTATEDIR/data/ndsd.pid 2>/dev/null`
if [ ! -z "$PIDNDSD" ] ; then
y=0
printf " Waiting for LDAP server to be ready ...\n"
while [ $y -lt 300 ]
do
/usr/bin/ldapsearch -LLL -b "" -s base -Y EXTERNAL dn >/dev/null 2>&1
if [ "$?" == 0 ]
then
return
fi
printf "."
sleep 1
y=$((y+1))
done
printf " LDAP server is not Responding.\n"
exit 1
else
printf " LDAP server must be started before Domain Services for Windows.\n"
exit 1
fi
}
xadsd_check_running()
{
$LIBEXECDIR/xadsd -S >/dev/null 2>&1
if [ $? -eq 1 ]; then
true
else
false
fi
}
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
STARTPROC_ARGS="-q -u root"
ndsd_check_running
echo -n "Starting Kerberos KDC"
startproc $STARTPROC_ARGS -p $LOCALSTATEDIR/run/krb5kdc.pid -s $SBINDIR/krb5kdc
rc=$?
if [ $rc -ne 0 ]
then
( exit ${rc} )
fi
rc_status -v -r
;;
stop)
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
KILLPROC_ARGS=-TERM
echo -n "Shutting down Kerberos KDC"
#killproc $KILLPROC_ARGS -p $LOCALSTATEDIR/run/krb5kdc.pid $SBINDIR/krb5kdc
killproc $KILLPROC_ARGS $SBINDIR/krb5kdc
rc_status -v -r
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reloading Kerberos KDC Service"
# Otherwise:
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
echo -n "Reloading Kerberos KDC Service"
# Otherwise if it does not support reload:
rc_failed 3
rc_status -v -r
;;
status)
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
CHECKPROC_ARGS=
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
echo -n "Checking for Kerberos KDC Service"
# NOTE: checkproc returns LSB compliant status values.
#checkproc $CHECKPROC_ARGS -p $LOCALSTATEDIR/run/krb5kdc.pid $SBINDIR/krb5kdc
checkproc $CHECKPROC_ARGS $SBINDIR/krb5kdc
rc=$?
( exit ${rc} )
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
Disclaimer
This Support Knowledgebase provides a valuable tool for NetIQ/Novell/SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.
- Document ID:7011899
- Creation Date:07-MAR-13
- Modified Date:07-MAR-13
- NovellOpen Enterprise Server
- SUSESUSE Linux Enterprise Server
- NetIQeDirectory
Did this document solve your problem? Provide Feedback
