12d39161b8
This is a ported/modified version of yppasswd from the NYS yppasswd-0.5 package. This package has code in it from both Olaf Kirch and Theo de Raadt. There are GPL references and BSD-style copyright all over the place... hopefully I won't get flamed into oblivion for commiting this. This program has been modified from the original in the following ways: - Changed the ALLOW_CHFN and ALLOW_CHSH compile-time options into run-time options. - Demolished the password update functions and replaced them with routines to handle FreeBSD-style passwordd databases. It is expected that a seperate master.passwd file will be maintained for use with the NIS maps. yppasswd will have to be told where it is: % yppasswdd -m /var/yp/master.passwd A /var/yp/passwd file will be generated from /var/yp/master.passwd by /var/yp/Makefile. When yppasswdd has finished modifying the master.passwd file, it will invoke /usr/libexec/yppwupdate, which is a script that will run /var/yp/Makefile to generate new maps and push them. Note that there are copies if pw_util.c and pw_copy.c here. This is deliberate: they are *not* identical to the originals. Very similar, yes, but not identical. *sigh*
58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
/*
|
|
* yppasswdd
|
|
* Copyright 1994 Olaf Kirch, <okir@monad.swb.de>
|
|
*
|
|
* This program is covered by the GNU General Public License, version 2.
|
|
* It is provided in the hope that it is useful. However, the author
|
|
* disclaims ALL WARRANTIES, expressed or implied. See the GPL for details.
|
|
*
|
|
* This file was generated automatically by rpcgen from yppasswd.x, and
|
|
* editied manually.
|
|
*/
|
|
|
|
#ifndef _YPPASSWD_H_
|
|
#define _YPPASSWD_H_
|
|
|
|
#define YPPASSWDPROG ((u_long)100009)
|
|
#define YPPASSWDVERS ((u_long)1)
|
|
#define YPPASSWDPROC_UPDATE ((u_long)1)
|
|
|
|
/*
|
|
* The password struct passed by the update call. I renamed it to
|
|
* xpasswd to avoid a type clash with the one defined in <pwd.h>.
|
|
*/
|
|
typedef struct xpasswd {
|
|
char *pw_name;
|
|
char *pw_passwd;
|
|
int pw_uid;
|
|
int pw_gid;
|
|
char *pw_gecos;
|
|
char *pw_dir;
|
|
char *pw_shell;
|
|
} xpasswd;
|
|
|
|
/* The updated password information, plus the old password.
|
|
*/
|
|
typedef struct yppasswd {
|
|
char *oldpass;
|
|
xpasswd newpw;
|
|
} yppasswd;
|
|
|
|
/* XDR encoding/decoding routines */
|
|
bool_t xdr_xpasswd (XDR *xdrs, xpasswd *objp);
|
|
bool_t xdr_yppasswd(XDR *xdrs, yppasswd *objp);
|
|
|
|
/* The server procedure invoked by the main loop. */
|
|
void yppasswdprog_1(struct svc_req *rqstp, SVCXPRT *transp);
|
|
|
|
/* Password update handler. */
|
|
int * yppasswdproc_pwupdate_1(yppasswd *yppw, struct svc_req *rqstp);
|
|
|
|
/* This command is forked to rebuild the NIS maps after a successful
|
|
* update. MAP_UPDATE is used as argv[0].
|
|
*/
|
|
#define MAP_UPDATE "yppwupdate"
|
|
#define MAP_UPDATE_PATH YPLIBDIR "/yppwupdate"
|
|
|
|
#endif _YPPASSWD_H_
|