[svn-upgrade] Integrating new upstream version, shadow (20001012)

This commit is contained in:
nekral-guest
2007-10-07 11:44:38 +00:00
parent d6e9891ad7
commit 4e3fe42600
159 changed files with 6400 additions and 12724 deletions

View File

@@ -25,14 +25,11 @@ DEFS = -DLOCALEDIR=\"$(localedir)\" -I. -I$(srcdir) -I.. @DEFS@
# and installation would be much simpler (just two directories,
# $prefix/bin and $prefix/sbin, no install-data hacks...)
bin_PROGRAMS = login \
su
ubin_PROGRAMS = faillog lastlog \
chage chfn chsh expiry gpasswd newgrp passwd
bin_PROGRAMS = login su
ubin_PROGRAMS = faillog lastlog chage chfn chsh expiry gpasswd newgrp passwd
usbin_PROGRAMS = chpasswd dpasswd groupadd groupdel groupmod \
logoutd mkpasswd newusers \
useradd userdel usermod grpck pwck vipw \
grpconv grpunconv pwconv pwunconv
logoutd mkpasswd newusers useradd userdel usermod grpck \
pwck vipw grpconv grpunconv pwconv pwunconv
EXTRA_DIST = shadowconfig.sh
@@ -82,9 +79,17 @@ shlibs = ../lib/libshadow.la
LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@ @LIBMD@
INCLUDES = -I${top_srcdir}/lib -I$(top_srcdir)/libmisc
chfn_LDADD = ${LDADD} @LIBPAM@
chsh_LDADD = ${LDADD} @LIBPAM@
login_LDADD = ${LDADD} @LIBPAM@
passwd_LDADD = ${LDADD} @LIBCRACK@ @LIBPAM@
su_LDADD = ${LDADD} @LIBPAM@
chfn_LDADD = $(LDADD) @LIBPAM@
chsh_LDADD = $(LDADD) @LIBPAM@
login_LDADD = $(LDADD) @LIBPAM@
passwd_LDADD = $(LDADD) @LIBCRACK@ @LIBPAM@
su_LDADD = $(LDADD) @LIBPAM@
chage_LDADD = $(LDADD) @LIBPAM@
chpasswd_LDADD = $(LDADD) @LIBPAM@
groupadd_LDADD = $(LDADD) @LIBPAM@
groupdel_LDADD = $(LDADD) @LIBPAM@
groupmod_LDADD = $(LDADD) @LIBPAM@
newusers_LDADD = $(LDADD) @LIBPAM@
useradd_LDADD = $(LDADD) @LIBPAM@
userdel_LDADD = $(LDADD) @LIBPAM@
usermod_LDADD = $(LDADD) @LIBPAM@

View File

@@ -1,4 +1,4 @@
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -43,9 +43,10 @@ AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -73,7 +74,6 @@ INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
@@ -86,7 +86,6 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
NM = @NM@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
@@ -125,11 +124,9 @@ DEFS = -DLOCALEDIR=\"$(localedir)\" -I. -I$(srcdir) -I.. @DEFS@
# and installation would be much simpler (just two directories,
# $prefix/bin and $prefix/sbin, no install-data hacks...)
bin_PROGRAMS = login su
ubin_PROGRAMS = faillog lastlog chage chfn chsh expiry gpasswd newgrp passwd
usbin_PROGRAMS = chpasswd dpasswd groupadd groupdel groupmod logoutd mkpasswd newusers useradd userdel usermod grpck pwck vipw grpconv grpunconv pwconv pwunconv
bin_PROGRAMS = login su
ubin_PROGRAMS = faillog lastlog chage chfn chsh expiry gpasswd newgrp passwd
usbin_PROGRAMS = chpasswd dpasswd groupadd groupdel groupmod logoutd mkpasswd newusers useradd userdel usermod grpck pwck vipw grpconv grpunconv pwconv pwunconv
EXTRA_DIST = shadowconfig.sh
@@ -168,11 +165,20 @@ shlibs = ../lib/libshadow.la
LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@ @LIBMD@
INCLUDES = -I${top_srcdir}/lib -I$(top_srcdir)/libmisc
chfn_LDADD = ${LDADD} @LIBPAM@
chsh_LDADD = ${LDADD} @LIBPAM@
login_LDADD = ${LDADD} @LIBPAM@
passwd_LDADD = ${LDADD} @LIBCRACK@ @LIBPAM@
su_LDADD = ${LDADD} @LIBPAM@
chfn_LDADD = $(LDADD) @LIBPAM@
chsh_LDADD = $(LDADD) @LIBPAM@
login_LDADD = $(LDADD) @LIBPAM@
passwd_LDADD = $(LDADD) @LIBCRACK@ @LIBPAM@
su_LDADD = $(LDADD) @LIBPAM@
chage_LDADD = $(LDADD) @LIBPAM@
chpasswd_LDADD = $(LDADD) @LIBPAM@
groupadd_LDADD = $(LDADD) @LIBPAM@
groupdel_LDADD = $(LDADD) @LIBPAM@
groupmod_LDADD = $(LDADD) @LIBPAM@
newusers_LDADD = $(LDADD) @LIBPAM@
useradd_LDADD = $(LDADD) @LIBPAM@
userdel_LDADD = $(LDADD) @LIBPAM@
usermod_LDADD = $(LDADD) @LIBPAM@
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
@@ -224,7 +230,6 @@ lastlog_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
lastlog_LDFLAGS =
chage_SOURCES = chage.c
chage_OBJECTS = chage.o
chage_LDADD = $(LDADD)
chage_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
chage_LDFLAGS =
@@ -263,7 +268,6 @@ passwd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
passwd_LDFLAGS =
chpasswd_SOURCES = chpasswd.c
chpasswd_OBJECTS = chpasswd.o
chpasswd_LDADD = $(LDADD)
chpasswd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
chpasswd_LDFLAGS =
@@ -275,19 +279,16 @@ dpasswd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
dpasswd_LDFLAGS =
groupadd_SOURCES = groupadd.c
groupadd_OBJECTS = groupadd.o
groupadd_LDADD = $(LDADD)
groupadd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
groupadd_LDFLAGS =
groupdel_SOURCES = groupdel.c
groupdel_OBJECTS = groupdel.o
groupdel_LDADD = $(LDADD)
groupdel_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
groupdel_LDFLAGS =
groupmod_SOURCES = groupmod.c
groupmod_OBJECTS = groupmod.o
groupmod_LDADD = $(LDADD)
groupmod_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
groupmod_LDFLAGS =
@@ -305,25 +306,21 @@ mkpasswd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
mkpasswd_LDFLAGS =
newusers_SOURCES = newusers.c
newusers_OBJECTS = newusers.o
newusers_LDADD = $(LDADD)
newusers_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
newusers_LDFLAGS =
useradd_SOURCES = useradd.c
useradd_OBJECTS = useradd.o
useradd_LDADD = $(LDADD)
useradd_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
useradd_LDFLAGS =
userdel_SOURCES = userdel.c
userdel_OBJECTS = userdel.o
userdel_LDADD = $(LDADD)
userdel_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
userdel_LDFLAGS =
usermod_SOURCES = usermod.c
usermod_OBJECTS = usermod.o
usermod_LDADD = $(LDADD)
usermod_DEPENDENCIES = ../lib/libshadow.la ../libmisc/libmisc.a \
../lib/libshadow.a
usermod_LDFLAGS =
@@ -381,7 +378,7 @@ DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
TAR = gtar
GZIP_ENV = --best
SOURCES = login.c su.c groups.c id.c sulogin.c faillog.c lastlog.c chage.c chfn.c chsh.c expiry.c gpasswd.c newgrp.c passwd.c chpasswd.c dpasswd.c groupadd.c groupdel.c groupmod.c logoutd.c mkpasswd.c newusers.c useradd.c userdel.c usermod.c grpck.c pwck.c vipw.c grpconv.c grpunconv.c pwconv.c pwunconv.c
OBJECTS = login.o su.o groups.o id.o sulogin.o faillog.o lastlog.o chage.o chfn.o chsh.o expiry.o gpasswd.o newgrp.o passwd.o chpasswd.o dpasswd.o groupadd.o groupdel.o groupmod.o logoutd.o mkpasswd.o newusers.o useradd.o userdel.o usermod.o grpck.o pwck.o vipw.o grpconv.o grpunconv.o pwconv.o pwunconv.o
@@ -411,8 +408,8 @@ install-binPROGRAMS: $(bin_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -445,8 +442,8 @@ install-ubinPROGRAMS: $(ubin_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(ubindir)
@list='$(ubin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(ubindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(ubindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(ubindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(ubindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -470,8 +467,8 @@ install-usbinPROGRAMS: $(usbin_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(usbindir)
@list='$(usbin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(usbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(usbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(usbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(usbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -684,105 +681,13 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
chage.o: chage.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwio.h \
../lib/shadowio.h
chfn.o: chfn.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwio.h \
../lib/getdef.h ../lib/pwauth.h
chpasswd.o: chpasswd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwio.h \
../lib/shadowio.h
chsh.o: chsh.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwio.h \
../lib/getdef.h ../lib/pwauth.h
dpasswd.o: dpasswd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/dialup.h
expiry.o: expiry.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
faillog.o: faillog.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/faillog.h
gpasswd.o: gpasswd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/groupio.h \
../lib/sgroupio.h
groupadd.o: groupadd.c ../config.h ../lib/rcsid.h ../lib/defines.h \
../lib/gshadow_.h ../lib/prototypes.h ../libmisc/chkname.h \
../lib/getdef.h ../lib/groupio.h ../lib/sgroupio.h
groupdel.o: groupdel.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/groupio.h \
../lib/sgroupio.h
groupmod.o: groupmod.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../libmisc/chkname.h \
../lib/groupio.h ../lib/sgroupio.h
groups.o: groups.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
grpck.o: grpck.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../libmisc/chkname.h \
../lib/commonio.h ../lib/groupio.h ../lib/sgroupio.h
grpconv.o: grpconv.c ../config.h ../lib/prototypes.h ../lib/defines.h \
../lib/gshadow_.h ../lib/groupio.h ../lib/sgroupio.h \
../lib/rcsid.h
grpunconv.o: grpunconv.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/groupio.h \
../lib/sgroupio.h
id.o: id.c ../config.h ../lib/rcsid.h ../lib/defines.h ../lib/gshadow_.h
lastlog.o: lastlog.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
login.o: login.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/faillog.h \
../libmisc/failure.h ../lib/pwauth.h ../lib/getdef.h \
../lib/dialchk.h
logoutd.o: logoutd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
mkpasswd.o: mkpasswd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
newgrp.o: newgrp.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h
newusers.o: newusers.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h \
../lib/pwio.h ../lib/groupio.h ../lib/shadowio.h
passwd.o: passwd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwauth.h \
../lib/shadowio.h ../lib/pwio.h ../lib/getdef.h
pwck.o: pwck.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../libmisc/chkname.h \
../lib/commonio.h ../lib/pwio.h ../lib/shadowio.h
pwconv.o: pwconv.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwio.h \
../lib/shadowio.h ../lib/getdef.h
pwunconv.o: pwunconv.c ../config.h ../lib/rcsid.h ../lib/defines.h \
../lib/gshadow_.h ../lib/prototypes.h ../lib/pwio.h \
../lib/shadowio.h
sulogin.o: sulogin.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h \
../lib/pwauth.h
su.o: su.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/pwauth.h \
../lib/getdef.h
useradd.o: useradd.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../libmisc/chkname.h \
../lib/pwauth.h ../lib/faillog.h ../lib/groupio.h \
../lib/sgroupio.h ../lib/pwio.h ../lib/shadowio.h \
../lib/getdef.h
userdel.o: userdel.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h \
../lib/pwauth.h ../lib/groupio.h ../lib/pwio.h \
../lib/shadowio.h ../lib/sgroupio.h
usermod.o: usermod.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../libmisc/chkname.h \
../lib/faillog.h ../lib/pwauth.h ../lib/getdef.h \
../lib/groupio.h ../lib/sgroupio.h ../lib/pwio.h \
../lib/shadowio.h
vipw.o: vipw.c ../config.h ../lib/rcsid.h ../lib/defines.h \
../lib/gshadow_.h ../lib/prototypes.h ../lib/pwio.h \
../lib/shadowio.h ../lib/groupio.h ../lib/sgroupio.h
info-am:
info: info-am
@@ -811,7 +716,7 @@ uninstall: uninstall-am
all-am: Makefile $(PROGRAMS) $(HEADERS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(ubindir) \
$(DESTDIR)$(usbindir)

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: chage.c,v 1.18 2000/09/02 18:40:43 marekm Exp $")
RCSID(PKG_VER "$Id: chage.c,v 1.19 2000/10/09 18:39:50 kloczek Exp $")
#include <sys/types.h>
#include <stdio.h>
@@ -43,6 +43,12 @@ RCSID(PKG_VER "$Id: chage.c,v 1.18 2000/09/02 18:40:43 marekm Exp $")
#include <pwd.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
/*
* chage depends on some form of aging being present. It makes no sense
* to have a program that has no input.
@@ -345,6 +351,13 @@ list_fields(void)
#endif
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* chage - change a user's password aging information
*
@@ -390,6 +403,11 @@ main(int argc, char **argv)
const struct passwd *pw;
struct passwd pwent;
char name[BUFSIZ];
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
sanitize_env();
setlocale(LC_ALL, "");
@@ -405,6 +423,38 @@ main(int argc, char **argv)
Prog = Basename(argv[0]);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("chage", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG("chage");
#ifdef NDBM
#ifdef SHADOWPWD
@@ -790,6 +840,25 @@ main(int argc, char **argv)
}
cleanup(2);
SYSLOG((LOG_INFO, AGE_CHANGED, name));
#ifdef USE_PAM
if (!lflg) {
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
closelog();
exit(0);
/*NOTREACHED*/

View File

@@ -43,7 +43,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: chpasswd.c,v 1.10 2000/08/26 18:27:18 marekm Exp $")
RCSID(PKG_VER "$Id: chpasswd.c,v 1.12 2000/10/09 19:02:20 kloczek Exp $")
#include <stdio.h>
#include "prototypes.h"
@@ -55,6 +55,12 @@ RCSID(PKG_VER "$Id: chpasswd.c,v 1.10 2000/08/26 18:27:18 marekm Exp $")
#include "shadowio.h"
#endif
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
static char *Prog;
static int eflg = 0;
#ifdef SHADOWPWD
@@ -77,6 +83,13 @@ usage(void)
exit(1);
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
int
main(int argc, char **argv)
{
@@ -97,6 +110,11 @@ main(int argc, char **argv)
int line = 0;
long now = time ((long *) 0) / (24L*3600L);
int ok;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
Prog = Basename(argv[0]);
@@ -104,6 +122,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
/* XXX - use getopt() */
if (!(argc == 1 || (argc == 2 && !strcmp(argv[1], "-e"))))
usage();
@@ -284,5 +334,22 @@ main(int argc, char **argv)
}
pw_unlock();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
return (0);
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: groupadd.c,v 1.16 2000/09/02 18:40:43 marekm Exp $")
RCSID(PKG_VER "$Id: groupadd.c,v 1.18 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/types.h>
#include <stdio.h>
@@ -49,6 +49,12 @@ RCSID(PKG_VER "$Id: groupadd.c,v 1.16 2000/09/02 18:40:43 marekm Exp $")
#ifdef SHADOWGRP
#include "sgroupio.h"
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
static int is_shadow_grp;
#endif
@@ -470,6 +476,13 @@ fail_exit(int code)
exit (code);
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - groupadd command
*/
@@ -477,6 +490,11 @@ fail_exit(int code)
int
main(int argc, char **argv)
{
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
@@ -488,6 +506,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG(Prog);
#ifdef SHADOWGRP
@@ -532,6 +582,23 @@ main(int argc, char **argv)
grp_update();
close_files();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(E_SUCCESS);
/*NOTREACHED*/
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: groupdel.c,v 1.12 2000/09/02 18:40:43 marekm Exp $")
RCSID(PKG_VER "$Id: groupdel.c,v 1.14 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/types.h>
#include <stdio.h>
@@ -39,6 +39,12 @@ RCSID(PKG_VER "$Id: groupdel.c,v 1.12 2000/09/02 18:40:43 marekm Exp $")
#include <fcntl.h>
#include <pwd.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
#include "prototypes.h"
#include "defines.h"
@@ -249,6 +255,13 @@ group_busy(gid_t gid)
exit(E_GROUP_BUSY);
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - groupdel command
*
@@ -263,6 +276,11 @@ int
main(int argc, char **argv)
{
struct group *grp;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
@@ -274,6 +292,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
if (argc != 2)
usage ();
@@ -346,6 +396,23 @@ main(int argc, char **argv)
grp_update ();
close_files ();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(errors == 0 ? E_SUCCESS : E_GRP_UPDATE);
/*NOTREACHED*/
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: groupmod.c,v 1.14 2000/09/02 18:40:44 marekm Exp $")
RCSID(PKG_VER "$Id: groupmod.c,v 1.16 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/types.h>
#include <stdio.h>
@@ -38,6 +38,12 @@ RCSID(PKG_VER "$Id: groupmod.c,v 1.14 2000/09/02 18:40:44 marekm Exp $")
#include <ctype.h>
#include <fcntl.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
#include "prototypes.h"
#include "chkname.h"
#include "defines.h"
@@ -446,6 +452,13 @@ open_files(void)
#endif /* SHADOWGRP */
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - groupmod command
*
@@ -463,6 +476,11 @@ int
main(int argc, char **argv)
{
struct group *grp;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
@@ -474,6 +492,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG(Prog);
#ifdef SHADOWGRP
@@ -543,6 +593,23 @@ main(int argc, char **argv)
grp_update ();
close_files ();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(E_SUCCESS);
/*NOTREACHED*/
}

View File

@@ -36,7 +36,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: newusers.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
RCSID(PKG_VER "$Id: newusers.c,v 1.13 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/types.h>
#include <sys/stat.h>
@@ -47,6 +47,12 @@ RCSID(PKG_VER "$Id: newusers.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include <grp.h>
#include <fcntl.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
static char *Prog;
#include "getdef.h"
@@ -321,6 +327,13 @@ add_passwd(struct passwd *pwd, const char *passwd)
#endif
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
int
main(int argc, char **argv)
{
@@ -334,13 +347,50 @@ main(int argc, char **argv)
int line = 0;
uid_t uid;
gid_t gid;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
Prog = Basename(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
if (argc > 1 && argv[1][0] == '-')
usage ();
@@ -563,6 +613,23 @@ main(int argc, char **argv)
#endif
(void) pw_unlock ();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit (0);
/*NOTREACHED*/
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: useradd.c,v 1.18 2000/09/02 18:40:44 marekm Exp $")
RCSID(PKG_VER "$Id: useradd.c,v 1.21 2000/10/09 20:03:12 kloczek Exp $")
#include "prototypes.h"
#include "defines.h"
@@ -45,6 +45,12 @@ RCSID(PKG_VER "$Id: useradd.c,v 1.18 2000/09/02 18:40:44 marekm Exp $")
#include <fcntl.h>
#include <time.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
#include "pwauth.h"
#if HAVE_LASTLOG_H
#include <lastlog.h>
@@ -1642,6 +1648,13 @@ create_home(void)
}
}
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - useradd command
*/
@@ -1649,6 +1662,11 @@ create_home(void)
int
main(int argc, char **argv)
{
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
*/
@@ -1659,6 +1677,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG(Prog);
#ifdef SHADOWPWD
@@ -1709,6 +1759,19 @@ main(int argc, char **argv)
exit(E_NAME_IN_USE);
}
/*
* Don't blindly overwrite a group when a user is added...
* If you already have a group username, and want to add the user
* to that group, use useradd -g username username.
* --bero
*/
if (! (nflg || gflg)) {
if (getgrnam(user_name)) {
fprintf(stderr, _("%s: group %s exists - if you want to add this user to that group, use -g.\n"), Prog, user_name);
exit(E_NAME_IN_USE);
}
}
/*
* Do the hard stuff - open the files, create the user entries,
* create the home directory, then close and update the files.
@@ -1741,6 +1804,23 @@ main(int argc, char **argv)
close_files ();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(E_SUCCESS);
/*NOTREACHED*/
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: userdel.c,v 1.17 2000/09/02 18:40:44 marekm Exp $")
RCSID(PKG_VER "$Id: userdel.c,v 1.19 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/stat.h>
#include <stdio.h>
@@ -41,6 +41,12 @@ RCSID(PKG_VER "$Id: userdel.c,v 1.17 2000/09/02 18:40:44 marekm Exp $")
#include <fcntl.h>
#include <utmp.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
#include "prototypes.h"
#include "defines.h"
#include "getdef.h"
@@ -669,6 +675,13 @@ remove_mailbox(void)
}
#endif
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - userdel command
*/
@@ -679,6 +692,11 @@ main(int argc, char **argv)
struct passwd *pwd;
int arg;
int errors = 0;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
@@ -690,6 +708,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG(Prog);
#ifdef SHADOWPWD
@@ -841,6 +891,23 @@ main(int argc, char **argv)
close_files ();
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(errors ? E_HOMEDIR : E_SUCCESS);
/*NOTREACHED*/
}

View File

@@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID(PKG_VER "$Id: usermod.c,v 1.19 2000/09/02 18:40:44 marekm Exp $")
RCSID(PKG_VER "$Id: usermod.c,v 1.21 2000/10/09 19:02:20 kloczek Exp $")
#include <sys/types.h>
#include <sys/stat.h>
@@ -42,6 +42,12 @@ RCSID(PKG_VER "$Id: usermod.c,v 1.19 2000/09/02 18:40:44 marekm Exp $")
#include <fcntl.h>
#include <time.h>
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
#include "prototypes.h"
#include "defines.h"
#include "chkname.h"
@@ -1618,6 +1624,13 @@ move_mailbox(void)
}
#endif
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
#endif /* USE_PAM */
/*
* main - usermod command
*/
@@ -1626,6 +1639,11 @@ int
main(int argc, char **argv)
{
int grp_err = 0;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
int retval;
#endif
/*
* Get my name so that I can use it to report errors.
@@ -1636,6 +1654,38 @@ main(int argc, char **argv)
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#ifdef USE_PAM
retval = PAM_SUCCESS;
pampw = getpwuid(getuid());
if (pampw == NULL) {
retval = PAM_USER_UNKNOWN;
}
if (retval == PAM_SUCCESS) {
retval = pam_start("shadow", pampw->pw_name, &conv, &pamh);
}
if (retval == PAM_SUCCESS) {
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval == PAM_SUCCESS) {
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
exit (1);
}
#endif /* USE_PAM */
OPENLOG(Prog);
#ifdef SHADOWPWD
@@ -1700,6 +1750,23 @@ main(int argc, char **argv)
if (grp_err)
exit(E_GRP_UPDATE);
#ifdef USE_PAM
if (retval == PAM_SUCCESS) {
retval = pam_chauthtok(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
}
}
if (retval != PAM_SUCCESS) {
fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog);
exit (1);
}
if (retval == PAM_SUCCESS)
pam_end(pamh, PAM_SUCCESS);
#endif /* USE_PAM */
exit(E_SUCCESS);
/*NOTREACHED*/
}