[comp.sys.sun] More yuks with yppasswdd in SUNOS4.1

simon@spunky@corona.att.com (06/28/90)

When running yppasswdd with the -m flag to force a remake in /var/yp I
noticed that my YP (NIS for the British Telcom folks) passwd map was not
properly being updated from the intermediate file which yppasswd modifies.
I tracked it down by making a dummy version of the make program. As it
turns out rpc.yppasswdd does indeed invoke make with current working
directory /var/yp. Unfortunately it completely appended the arguments
provided after the -m flag to its own, and calls make with the resulting
arglist i.e.

On server: (in /etc/rc.local)

if [ -f /usr/etc/rpc.yppasswdd -a -d /var/yp/`domainname` ]; then
       rpc.yppasswdd /etc/passwd -m DIR=/var/yp
       echo -n ' yppasswdd'
fi

will result in calls to make in /var/yp with the following arguments

argv    0         1          2        3      4  
       make rpc.yppasswdd /etc/passwd -m DIR=/var/yp

needless to say this doesn't work. A user who thought they changed their
password with yppasswd will only be able to use their new password once
someone manually does a make in /var/yp - not optimal. I'll bug Sun about
this. Hopefully others will too.

Marc Simon simon@corona.ATT.COM

casper@fwi.uva.nl (Casper H.S. Dik) (06/29/90)

In article <9425@brazos.Rice.edu> simon@spunky@corona.att.com writes:
>X-Sun-Spots-Digest: Volume 9, Issue 244, message 3
>
>When running yppasswdd with the -m flag to force a remake in /var/yp I
>noticed that my YP (NIS for the British Telcom folks) passwd map was not
>properly being updated from the intermediate file which yppasswd modifies.
>I tracked it down by making a dummy version of the make program. As it
>turns out rpc.yppasswdd does indeed invoke make with current working
>directory /var/yp. Unfortunately it completely appended the arguments
>provided after the -m flag to its own, and calls make with the resulting
>arglist i.e.

I used also used a dummy version of make to get to the bottom.

This is the work around I now use:
-----/var/yp/make---
#!/bin/sh

# throw away excess arguments rcp.yppasswd passwdfile -m
shift ; shift ; shift
# set the umask (passwd.dir,passwd.pag ended up rw-rw-rw-!)
umask 022
#echo "$@" >> /tmp/kladje
/bin/make "$@"
------end of /var/yp/make ---

On server: (in /etc/rc.local)

if [ -f /usr/etc/rpc.yppasswdd -a -d /var/yp/`domainname` ]; then
       PATH=/var/yp:$PATH rpc.yppasswdd /etc/passwd -m DIR=/var/yp
       echo -n ' yppasswdd'
fi

Hope this is of some use.

Casper H.S. Dik				VCP/HIP: +31205922022
University of Amsterdam     |		casper@fwi.uva.nl
The Netherlands             |		casper%fwi.uva.nl@hp4nl.nluug.nl