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