Package: nis
Version: 3.17.1-3+b1
Severity: important
Tags: patch

Dear Maintainer,

   * What led up to the situation?
     System has several lxd containers that run ypbind. When the system was
     restarted (or even ran dist-upgrade just prior to restart), pybind failed
     to start. I have determined this is because start-stop-daemon is confused
     by processes named ypbind visible in the containers even though they are
     not "local" and not accessible by the host system. I have also determined
     that simply passing "--pidfile /var/run/ypbind.pid" to start-stop-daemon
     -- as is already done for the stop case -- fixes the issue.
   * What exactly did you do (or not do) that was effective (or
     ineffective)? Manually running "ypbind" works, as does the above fix.


-- Package-specific info:

NIS domain: +ghs.com 

-- System Information:
Debian Release: 10.9
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-16-amd64 (SMP w/24 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages nis depends on:
ii  debconf [debconf-2.0]  1.5.71
ii  hostname               3.21
ii  libc6                  2.28-10
ii  libgdbm6               1.18.1-4
ii  libsystemd0            241-7~deb10u7
ii  lsb-base               10.2019051400
ii  make                   4.2.1-1.2
ii  netbase                5.6
ii  rpcbind [portmap]      1.2.5-0.3+deb10u1

nis recommends no packages.

Versions of packages nis suggests:
pn  nscd  <none>

-- Configuration Files:
/etc/init.d/nis changed:
NISSERVER=false
NISMASTER=
YPPWDDIR=/etc
YPCHANGEOK=chsh
YPSERVARGS=""
YPBINDARGS=""
YPPASSWDDARGS=""
YPXFRDARGS=""
YPPWDDIRARGS=""
[ -f /etc/default/nis ] && . /etc/default/nis
. /lib/lsb/init-functions
NET="/usr/sbin"
test -f ${NET}/ypbind -a -f /etc/defaultdomain || exit 0
bind_wait()
{
        [ "`ypwhich 2>/dev/null`" = "" ] && sleep 1
        if [ "`ypwhich 2>/dev/null`" = "" ]
        then
                bound=""
                log_action_begin_msg "binding to YP server"
                for i in 1 2 3 4 5 6 7 8 9 10
                do
                        sleep 1
                        log_action_cont_msg "."
                        if [ "`ypwhich 2>/dev/null`" != "" ]
                        then
                                echo -n " done] "
                                bound="yes"
                                break
                        fi
                done
                # This should potentially be an error
                if [ "$bound" ] ; then
                        log_action_end_msg 0
                else
                        log_action_end_msg 1 "backgrounded"
                fi
        fi
}
want_ypbind()
{
        # NIS servers always get ypbind since yppush wants it.
        case "$NISSERVER" in
                master|slave|[Yy]*)
                        return 0
                        ;;
        esac
        # Do we want to run as a NIS client anyway?
        case "$NISCLIENT" in
                false|[nN]*)
                        return 1
                        ;;
        esac
        # Executable present ?
        if ! [ -x ${NET}/ypbind ]
        then
                return 1
        fi
        # Started manually?
        if [ "$manual" != "" ]
        then
                return 0
        fi
        #
        #       For now, we do not use the /etc/network/if-{up,down}.d
        #       stuff yet. Not sure if it is useful for NIS or how
        #       it should work, exactly.
        #
        return 0
        #
        #       If the network is not up yet, do not start ypbind.
        #       We assume that /etc/network/ifup.d will start ypbind.
        #       It doesn't matter if it already did.
        #
        network=`route -n | sed -ne '/^224/d' -e '/^127/d' -e '/^[0-9]/p'`
        if [ "$network" = "" ]
        then
                return 1
        fi
        return 0
}
do_start ()
{
        oname=`domainname`
        nname=`cat /etc/defaultdomain`
        if [ "$oname" != "$nname" ]; then
                log_action_msg "Setting NIS domainname to: $nname"
                domainname "$nname"
        fi
        log_daemon_msg "Starting NIS services"
        if [ "$NISSERVER" != "false" ]
        then
                log_progress_msg "ypserv"
                start-stop-daemon --start --quiet \
                        --pidfile /var/run/ypserv.pid --exec ${NET}/ypserv \
                        -- ${YPSERVARGS}
        fi
        if [ "$NISSERVER" = master ]
        then
                E=""
                if [ "$YPCHANGEOK" != "" ]
                then
                        OIFS="$IFS"; IFS="$IFS,"
                        for i in $YPCHANGEOK
                        do
                                case "$i" in
                                        chsh|chfn)
                                                E="$E -e $i"
                                                ;;
                                esac
                        done
                        IFS="$OIFS"
                fi
                log_progress_msg "yppasswdd"
                if [ "$YPPWDDIR" != "" ]; then
                        YPPWDDIRARGS="-D ${YPPWDDIR}"
                fi
                start-stop-daemon --start --quiet \
                        --exec ${NET}/rpc.yppasswdd -- $YPPWDDIRARGS $E 
$YPPASSWDDARGS
                log_progress_msg "ypxfrd"
                start-stop-daemon --start --quiet \
                        --exec ${NET}/rpc.ypxfrd -- $YPXFRDARGS
        fi
        if egrep -q '^(ypserver|domain)' /etc/yp.conf
        then
                broadcast=""
        else
                broadcast="-broadcast"
        fi
        if want_ypbind
        then
                log_progress_msg "ypbind"
                start-stop-daemon -b --start --quiet \
                        --pidfile /var/run/ypbind.pid \
                        --exec ${NET}/ypbind -- $broadcast ${YPBINDARGS}
                bind_wait
        fi
        if [ "$NISSERVER" = "slave" -a "$NISMASTER" != "" ]
        then
                log_progress_msg "ypinit"
                /usr/lib/yp/ypinit -s $NISMASTER
        fi
        log_end_msg 0
}
do_stop () {
        log_daemon_msg "Stopping NIS services"
        log_progress_msg "ypbind"
        start-stop-daemon --stop --quiet --oknodo \
                --pidfile /var/run/ypbind.pid
        log_progress_msg "ypserv"
        start-stop-daemon --stop --quiet --oknodo \
                --pidfile /var/run/ypserv.pid
        log_progress_msg "yppasswdd"
        start-stop-daemon --stop --quiet --oknodo \
                --pidfile /var/run/yppasswdd.pid
        log_progress_msg "ypxfrd"
        start-stop-daemon --stop --quiet --oknodo \
                --name rpc.ypxfrd
        log_end_msg 0
}
case "$0" in
        */S[0-9][0-9]*|*/K[0-9][0-9]*)
                manual=
                ;;
        *)
                manual=1
                ;;
esac
case "$1" in
  start)
        do_start
        ;;
  stop)
        do_stop
        ;;
  reload|force-reload)
        start-stop-daemon --stop --quiet --oknodo --signal 1 \
                --pidfile /var/run/ypserv.pid --exec ${NET}/ypserv
        ;;
  restart)
        do_stop
        sleep 2
        do_start
        ;;
  *)
        echo "Usage: /etc/init.d/nis {start|stop|reload|force-reload|restart}"
        exit 1
esac
exit 0


-- debconf information excluded

Reply via email to