pam_permit.c revision 90230
179476Smarkm/*-
279476Smarkm * Copyright 2001 Mark R V Murray
379476Smarkm * All rights reserved.
479476Smarkm *
579476Smarkm * Redistribution and use in source and binary forms, with or without
679476Smarkm * modification, are permitted provided that the following conditions
779476Smarkm * are met:
879476Smarkm * 1. Redistributions of source code must retain the above copyright
979476Smarkm *    notice, this list of conditions and the following disclaimer.
1079476Smarkm * 2. Redistributions in binary form must reproduce the above copyright
1179476Smarkm *    notice, this list of conditions and the following disclaimer in the
1279476Smarkm *    documentation and/or other materials provided with the distribution.
1379476Smarkm *
1479476Smarkm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1579476Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1679476Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1779476Smarkm * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1879476Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1979476Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2079476Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2179476Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2279476Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2379476Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2479476Smarkm * SUCH DAMAGE.
2579476Smarkm */
2679476Smarkm
2784218Sdillon#include <sys/cdefs.h>
2884218Sdillon__FBSDID("$FreeBSD: head/lib/libpam/modules/pam_permit/pam_permit.c 90230 2002-02-05 06:20:27Z des $");
2984218Sdillon
3090230Sdes#include <sys/types.h>
3190230Sdes
3279476Smarkm#define	PAM_SM_AUTH
3379476Smarkm#define	PAM_SM_ACCOUNT
3479476Smarkm#define	PAM_SM_SESSION
3579476Smarkm#define	PAM_SM_PASSWORD
3679476Smarkm
3790229Sdes#include <security/pam_appl.h>
3879476Smarkm#include <security/pam_modules.h>
3990229Sdes#include <security/pam_mod_misc.h>
4079476Smarkm
4179476Smarkm#define NOBODY "nobody"
4279476Smarkm
4379476SmarkmPAM_EXTERN int
4489760Smarkmpam_sm_authenticate(pam_handle_t *pamh, int flags __unused, int argc, const char **argv)
4579476Smarkm{
4679476Smarkm	struct options options;
4779476Smarkm	int retval;
4879476Smarkm	const char *user;
4979476Smarkm
5079476Smarkm	pam_std_option(&options, NULL, argc, argv);
5179476Smarkm
5279476Smarkm	PAM_LOG("Options processed");
5379476Smarkm
5479476Smarkm	/* We always need to know who the user is */
5579476Smarkm	user = NULL;
5679476Smarkm	retval = pam_get_user(pamh, &user, NULL);
5779476Smarkm	if (retval != PAM_SUCCESS)
5879476Smarkm		PAM_RETURN(retval);
5979476Smarkm
6079476Smarkm	PAM_LOG("Got user: %s", user);
6179476Smarkm
6279476Smarkm	if (user == NULL || *user == '\0')
6379476Smarkm		pam_set_item(pamh, PAM_USER, (const void *)NOBODY);
6479476Smarkm	user = NULL;
6579476Smarkm
6679476Smarkm	PAM_RETURN(PAM_SUCCESS);
6779476Smarkm}
6879476Smarkm
6979476SmarkmPAM_EXTERN int
7089760Smarkmpam_sm_setcred(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
7179476Smarkm{
7279476Smarkm	struct options options;
7379476Smarkm
7479476Smarkm	pam_std_option(&options, NULL, argc, argv);
7579476Smarkm
7679476Smarkm	PAM_LOG("Options processed");
7779476Smarkm
7879476Smarkm	PAM_RETURN(PAM_SUCCESS);
7979476Smarkm}
8079476Smarkm
8179476SmarkmPAM_EXTERN int
8289760Smarkmpam_sm_acct_mgmt(pam_handle_t *pamh __unused, int flags __unused, int argc ,const char **argv)
8379476Smarkm{
8479476Smarkm	struct options options;
8579476Smarkm
8679476Smarkm	pam_std_option(&options, NULL, argc, argv);
8779476Smarkm
8879476Smarkm	PAM_LOG("Options processed");
8979476Smarkm
9079476Smarkm	PAM_RETURN(PAM_SUCCESS);
9179476Smarkm}
9279476Smarkm
9379476SmarkmPAM_EXTERN int
9489760Smarkmpam_sm_chauthtok(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
9579476Smarkm{
9679476Smarkm	struct options options;
9779476Smarkm
9879476Smarkm	pam_std_option(&options, NULL, argc, argv);
9979476Smarkm
10079476Smarkm	PAM_LOG("Options processed");
10179476Smarkm
10279476Smarkm	PAM_RETURN(PAM_SUCCESS);
10379476Smarkm}
10479476Smarkm
10579476SmarkmPAM_EXTERN int
10689760Smarkmpam_sm_open_session(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
10779476Smarkm{
10879476Smarkm	struct options options;
10979476Smarkm
11079476Smarkm	pam_std_option(&options, NULL, argc, argv);
11179476Smarkm
11279476Smarkm	PAM_LOG("Options processed");
11379476Smarkm
11479476Smarkm	PAM_RETURN(PAM_SUCCESS);
11579476Smarkm}
11679476Smarkm
11779476SmarkmPAM_EXTERN int
11889760Smarkmpam_sm_close_session(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
11979476Smarkm{
12079476Smarkm	struct options options;
12179476Smarkm
12279476Smarkm	pam_std_option(&options, NULL, argc, argv);
12379476Smarkm
12479476Smarkm	PAM_LOG("Options processed");
12579476Smarkm
12679476Smarkm	PAM_RETURN(PAM_SUCCESS);
12779476Smarkm}
12879476Smarkm
12979476SmarkmPAM_MODULE_ENTRY("pam_permit");
130