29 Commits

Author SHA1 Message Date
des
8926dc8e12 This commit disables chain caching.
Chain caching is a feature of Linux-PAM, where pam_authenticate() and
pam_open_session() "freeze" the chain so that their companion
primitive (pam_setcred() and pam_close_session() respectively) will
call the exact same modules, skipping those that failed in the
previous call.

There are several reasons not to do this, the most prominent of which
is that it makes it impossible to call pam_setcred() without first
calling pam_authenticate() - which is perfectly valid according to
DCE/RFC 86.0 and XSSO, and is necessary to make 'login -f' work.

Instead of chain caching, implement something similar to the way
Solaris' libpam behaves: pam_setcred treats "sufficient" modules as if
they were "required", i.e. does not break the chain when they succeed.

PAM modules whose pam_sm_setcred() should not be called unless their
pam_sm_authenticate() succeeded can simply set a state variable using
pam_set_data() in pam_sm_authenticate(), and use pam_get_data() to
check it in pam_sm_setcred().

Sponsored by:	DARPA, NAI Labs
2002-01-24 15:30:03 +00:00
markm
de3354b0e3 WARNS=4 fixes.
OK'ed by:	des
2002-01-20 17:54:33 +00:00
des
50d70990d7 Although the previous went some way towards fixing the pam.conf / pam.d
problem, it still didn't DTRT for services that did not have a service-
specific policy if /etc/pam.d existed but did not contain an "other"
policy.  This fixes the problems some people have experienced with sudo.
And I almost didn't have to use goto.

The current configuration sequence is:

  1) Look for /etc/pam.d/foo

  2) If PAM_READ_BOTH_CONFS is defined, or step 1) failed, look for
     foo in /etc/pam.conf

  3) Look for /etc/pam.d/other (to fill in the gaps)

  4) If PAM_READ_BOTH_CONFS is defined, or step 3) failed, look for
     other in /etc/pam.conf

I believe this is the intended behaviour of the original code.  The least
surprising behaviour seems to be when PAM_READ_BOTH_CONFS is not defined -
/etc/pam.d/foo will be preferred over /etc/pam.conf, but the latter will
serve as a backup if the former does not exist.

Sponsored by:	DARPA, NAI Labs
2001-12-07 00:37:10 +00:00
des
1d2532bb5b Fix a bug that made PAM fail if /etc/pam.d/ existed but was empty.
Sponsored by:	DARPA, NAI Labs
2001-12-05 17:05:15 +00:00
des
2ae5619117 Clean up namespace pollution by prepending underscores to argument names in
function prototypes (or, in a few cases, removing argument names altogether).

Sponsored by:	DARPA, NAI Labs
2001-12-05 16:31:34 +00:00
des
eb6473ad8e This file isn't used; it's an older version of include/security/pam_misc.h.
Sponsored by:	DARPA, NAI Labs
2001-12-05 16:14:43 +00:00
markm
80b90bdc96 Fix namespace pollution by protecting names used as arguments.
Reported by:	bde
2001-12-01 19:32:18 +00:00
des
267da2315e Due to incorrect include ordering, <dlfcn.h> did not get included, so
RTLD_NOW got incorrectly defined to 1 (which is RTLD_LAZY in FreeBSD).
In addition, the comment about FreeBSD requiring SHLIB_SYM_PREFIX to
be "_" is incorrect.

Submitted by:	tobez (except for the bit about the incorrect comment)
2001-11-27 15:36:21 +00:00
des
c5700fd96e It's idiotic to return PAM_PERM_DENIED when the item argument is NULL;
PAM_BUF_ERR is much closer to the truth.
2001-11-27 15:35:44 +00:00
peter
dcb4453375 Fix libpam's linker set stuff to use the new API (unbreak world), and get
rid of gensetdefs from here as well.
2001-06-14 01:13:30 +00:00
markm
08c505f158 Fix bug introduced by myself that often resulted in a session having
SIGINTR (^C) and SIGSTP (^Z) masked.

Reported by:	bde, sobomax
Submitted by:	sobomax
2001-06-07 08:45:23 +00:00
markm
de2da57776 In the same manner as getpass(3), block SIGINTR and SIGSTP while we are
actually reading the line.
2001-06-04 20:59:49 +00:00
markm
2357540bf0 Return an empty string rather than an error at EOF. 2001-06-04 20:08:55 +00:00
markm
8d833bf6a1 Bring back from the er, dead some useful PAM modules. 2001-05-29 18:32:17 +00:00
markm
9b4ed06108 Fix problem with static linking:
> Script started on Sat May 12 22:18:47 2001
> ttyp1:bde@gamplex:/usr/src/libexec/rshd> rsh localhost ls
> rcmd: localhost: Undefined error: 0

Reported by:	bde
2001-05-16 11:05:03 +00:00
markm
dac4a1cd87 Add utility PAMs for finer userland control 2001-05-11 10:12:55 +00:00
markm
45125b1170 Resolve conflicts. 2001-05-03 10:48:56 +00:00
markm
d3e269dc4e This commit was generated by cvs2svn to compensate for changes in r76238,
which included commits to RCS files with non-trunk default branches.
2001-05-03 09:36:08 +00:00
markm
ca4190e984 Vendor import Linux PAM 0.75 2001-05-03 09:36:08 +00:00
jdp
3b1a00d745 Revive the pam_deny and pam_permit modules from Linux-PAM. They are
simple enough to be trusted.

Add account management functionality to the pam_unix module.

These changes should make it possible to use PAM in some ports.

Submitted by:	Max Khon <fjoe@iclub.nsu.ru>
1999-05-08 01:59:27 +00:00
jdp
cf32a03bc9 Make it possible to use PAM in statically-linked applications. 1999-01-20 21:55:30 +00:00
jdp
fcce754470 Remove files that we don't use and are unlikely to use. You can
still get them with "cvs upd -r pam_unpruned" if you want to look at
them.
1998-11-25 19:46:10 +00:00
jdp
454b4e0cc2 Eliminate a setreuid() call that doesn't make sense for FreeBSD.
We don't use this module, but still I don't want to leave this call
in the code.
1998-11-18 01:24:34 +00:00
jdp
893eba16b8 Fix #includes for FreeBSD. 1998-11-18 01:22:46 +00:00
jdp
011f45cfa3 Don't call openlog() and closelog(). Assume that the application
takes care of that.
1998-11-18 01:21:46 +00:00
jdp
51176ff914 s/Linux-PAM/PAM/g 1998-11-18 01:20:54 +00:00
jdp
f06b122f95 Initial import of virgin Linux-PAM 0.65, slightly stripped down. 1998-11-18 01:16:21 +00:00
jdp
b6626435c6 This commit was generated by cvs2svn to compensate for changes in r41220,
which included commits to RCS files with non-trunk default branches.
1998-11-18 01:16:21 +00:00
jdp
ed5b694a85 Initial revision 1998-11-18 01:16:19 +00:00