#!/bin/sh # # ypbind: Starts the ypbind daemon # # Version: @(#) /etc/init.d/ypbind.init 1.3 # # chkconfig: - 27 73 # description: This is a daemon which runs on NIS/YP clients and binds them \ # to a NIS domain. It must be running for systems based on glibc \ # to work as NIS clients, but it should not be enabled on systems \ # which are not using NIS. # processname: ypbind # config: /etc/yp.conf # # See https://fedoraproject.org/wiki/Packaging:SysVInitScript for # the guidelines document. OTHER_YPBIND_OPTS="" # Source function library. [ -f /etc/rc.d/init.d/functions ] || exit 0 . /etc/rc.d/init.d/functions # getting the YP domain name [ -e /etc/sysconfig/network ] && . /etc/sysconfig/network # Check for and source configuration file otherwise set defaults [ -f /etc/sysconfig/ypbind ] && . /etc/sysconfig/ypbind # NISTIMEOUT should be a multiple of 15 since # ypwhich has a hardcoded 15sec timeout [ -z "$NISTIMEOUT" ] && NISTIMEOUT=45 # Check that networking is configured. [ "${NETWORKING}" = "no" ] && exit 0 exec="/usr/sbin/ypbind" prog="ypbind" lockfile=/var/lock/subsys/$prog selinux_on() { [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled || return #echo $"Turning on allow_ypbind SELinux boolean" setsebool allow_ypbind=1 } selinux_off() { [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled || return allow_ypbind=0 . /etc/selinux/config if [ -e /etc/selinux/${SELINUXTYPE}/modules/active/booleans.local ]; then . /etc/selinux/${SELINUXTYPE}/modules/active/booleans.local fi if [ $allow_ypbind == 0 ]; then #echo $"Turning off allow_ypbind SELinux boolean" setsebool allow_ypbind=$allow_ypbind fi } start() { [ $UID -eq 0 ] || exit 4 [ -x $exec ] || exit 5 DOMAINNAME=`domainname` if [ "$DOMAINNAME" = "(none)" -o "$DOMAINNAME" = "" ]; then echo -n $"Setting NIS domain: " if [ -n "$NISDOMAIN" ]; then action $"domain is '$NISDOMAIN' " domainname $NISDOMAIN else # See if the domain is set in config file NISDOMAIN=`grep "domain" /etc/yp.conf | grep -v ^# | \ awk '{print $2}' | head -1` if [ -n "$NISDOMAIN" ]; then action $"domain is '$NISDOMAIN' " \ domainname $NISDOMAIN else action $"domain not found" /bin/false logger -t ypbind $"domain not found" return 1 fi fi fi echo -n $"Starting NIS service: " selinux_on daemon $exec $OTHER_YPBIND_OPTS retval=$? echo if [ $retval -ne 0 ]; then #selinux_off logger -t ypbind "failed to start!" return $retval fi echo -n $"Binding NIS service: " # the following fixes problems with the init scripts continuing # even when we are really not bound yet to a server, and then things # that need NIS fail. timeout=10 firsttime=1 SECONDS=0 while [ $SECONDS -lt $timeout ]; do if /usr/sbin/rpcinfo -p | LC_ALL=C fgrep -q ypbind then if [ $firsttime -eq 1 ]; then # reset timeout timeout=$NISTIMEOUT firsttime=0 fi /usr/bin/ypwhich > /dev/null 2>&1 retval=$? if [ $retval -eq 0 ]; then break; fi fi sleep 2 echo -n "." done if [ $retval -eq 0 ]; then logger -t ypbind \ "NIS domain: `domainname`, NIS server: `ypwhich 2> /dev/null`" touch $lockfile success else logger -t ypbind \ "NIS server for domain `domainname` is not responding." failure #selinux_off retval=100 fi echo return $retval } stop() { [ $UID -eq 0 ] || exit 4 [ -x $exec ] || exit 5 echo -n $"Shutting down NIS service: " killproc $prog retval=$? echo if [ $retval -eq 0 ]; then rm -f $lockfile # if we used brute force (like kill -9) we don't want those around if [ x$(domainname) != x ]; then rm -f /var/yp/binding/$(domainname)* fi fi #selinux_off return $retval } restart() { stop start } reload() { echo -n $"Reloading NIS service: " killproc $prog -HUP retval=$? echo return $retval } force_reload() { restart } rh_status() { # run checks to determine if the service is running or use generic status status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } usage() { echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" } # See how we were called. case "$1" in start) rh_status_q && exit 0 $1 retval=$? if [ $retval -eq 100 ]; then stop; exit 1; fi exit $retval ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; usage) $1 ;; *) usage exit 2 esac exit $?