pam_permit.c revision 90236
150476Speter/*-
211023Speter * Copyright 2001 Mark R V Murray
3206622Suqs * All rights reserved.
479538Sru *
511023Speter * Redistribution and use in source and binary forms, with or without
611023Speter * modification, are permitted provided that the following conditions
760258Ssheldonh * are met:
811023Speter * 1. Redistributions of source code must retain the above copyright
956467Sasmodai *    notice, this list of conditions and the following disclaimer.
1084877Syokota * 2. Redistributions in binary form must reproduce the above copyright
1184877Syokota *    notice, this list of conditions and the following disclaimer in the
1284877Syokota *    documentation and/or other materials provided with the distribution.
1384877Syokota *
1484877Syokota * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1584877Syokota * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1611023Speter * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1734842Speter * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1811023Speter * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1911023Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20131530Sru * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2134842Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2234842Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2311023Speter * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24117011Sru * SUCH DAMAGE.
25117011Sru */
26117011Sru
2734842Speter#include <sys/cdefs.h>
2811023Speter__FBSDID("$FreeBSD: head/lib/libpam/modules/pam_permit/pam_permit.c 90236 2002-02-05 07:53:00Z des $");
2934842Speter
3057676Ssheldonh#include <sys/param.h>
3157676Ssheldonh
3211023Speter#define	PAM_SM_AUTH
3311023Speter#define	PAM_SM_ACCOUNT
3434842Speter#define	PAM_SM_SESSION
3557676Ssheldonh#define	PAM_SM_PASSWORD
3657676Ssheldonh
3734842Speter#include <security/pam_appl.h>
3811023Speter#include <security/pam_modules.h>
3957676Ssheldonh#include <security/pam_mod_misc.h>
4057676Ssheldonh
4134842Speter#define NOBODY "nobody"
4234842Speter
4311023SpeterPAM_EXTERN int
44117011Srupam_sm_authenticate(pam_handle_t *pamh, int flags __unused, int argc, const char **argv)
45117011Sru{
46117011Sru	struct options options;
47117011Sru	int retval;
4811023Speter	const char *user;
4957676Ssheldonh
5057676Ssheldonh	pam_std_option(&options, NULL, argc, argv);
5134842Speter
5211023Speter	PAM_LOG("Options processed");
5334842Speter
5434842Speter	/* We always need to know who the user is */
5534842Speter	user = NULL;
5675531Sdd	retval = pam_get_user(pamh, &user, NULL);
5711023Speter	if (retval != PAM_SUCCESS)
5811023Speter		PAM_RETURN(retval);
5911023Speter
6011023Speter	PAM_LOG("Got user: %s", user);
6111023Speter
6211023Speter	if (user == NULL || *user == '\0')
6311023Speter		pam_set_item(pamh, PAM_USER, (const void *)NOBODY);
6411023Speter	user = NULL;
6536753Sjkoshy
6657676Ssheldonh	PAM_RETURN(PAM_SUCCESS);
6757676Ssheldonh}
68131530Sru
69131530SruPAM_EXTERN int
7034842Speterpam_sm_setcred(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
7134842Speter{
7234842Speter	struct options options;
7334842Speter
7411023Speter	pam_std_option(&options, NULL, argc, argv);
7511023Speter
7611023Speter	PAM_LOG("Options processed");
77117011Sru
78117011Sru	PAM_RETURN(PAM_SUCCESS);
79117011Sru}
80117011Sru
8111023SpeterPAM_EXTERN int
82131530Srupam_sm_acct_mgmt(pam_handle_t *pamh __unused, int flags __unused, int argc ,const char **argv)
83131530Sru{
8411023Speter	struct options options;
8511023Speter
8634842Speter	pam_std_option(&options, NULL, argc, argv);
8734842Speter
8834842Speter	PAM_LOG("Options processed");
8911023Speter
9011023Speter	PAM_RETURN(PAM_SUCCESS);
9157676Ssheldonh}
9257676Ssheldonh
93131530SruPAM_EXTERN int
94131530Srupam_sm_chauthtok(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
9511023Speter{
9611023Speter	struct options options;
9711023Speter
9811023Speter	pam_std_option(&options, NULL, argc, argv);
9924090Smpp
10068716Sru	PAM_LOG("Options processed");
10124090Smpp
10211023Speter	PAM_RETURN(PAM_SUCCESS);
10311023Speter}
10411023Speter
10511023SpeterPAM_EXTERN int
10611023Speterpam_sm_open_session(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
10711023Speter{
10811023Speter	struct options options;
10911023Speter
11011023Speter	pam_std_option(&options, NULL, argc, argv);
11111023Speter
11211023Speter	PAM_LOG("Options processed");
11379727Sschweikh
11411023Speter	PAM_RETURN(PAM_SUCCESS);
115117011Sru}
116117011Sru
11711023SpeterPAM_EXTERN int
11811023Speterpam_sm_close_session(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
11911023Speter{
12011023Speter	struct options options;
12111023Speter
12211023Speter	pam_std_option(&options, NULL, argc, argv);
12311023Speter
12411023Speter	PAM_LOG("Options processed");
12511023Speter
12611023Speter	PAM_RETURN(PAM_SUCCESS);
12711023Speter}
12811023Speter
12911023SpeterPAM_MODULE_ENTRY("pam_permit");
13011023Speter