xref: /freebsd/lib/libpam/modules/pam_permit/pam_permit.c (revision 1642eb1a52563643a9e0b3b69b82c8f1e45541db)
11642eb1aSMark Murray /*-
21642eb1aSMark Murray  * Copyright 2001 Mark R V Murray
31642eb1aSMark Murray  * All rights reserved.
41642eb1aSMark Murray  *
51642eb1aSMark Murray  * Redistribution and use in source and binary forms, with or without
61642eb1aSMark Murray  * modification, are permitted provided that the following conditions
71642eb1aSMark Murray  * are met:
81642eb1aSMark Murray  * 1. Redistributions of source code must retain the above copyright
91642eb1aSMark Murray  *    notice, this list of conditions and the following disclaimer.
101642eb1aSMark Murray  * 2. Redistributions in binary form must reproduce the above copyright
111642eb1aSMark Murray  *    notice, this list of conditions and the following disclaimer in the
121642eb1aSMark Murray  *    documentation and/or other materials provided with the distribution.
131642eb1aSMark Murray  *
141642eb1aSMark Murray  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
151642eb1aSMark Murray  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
161642eb1aSMark Murray  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
171642eb1aSMark Murray  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
181642eb1aSMark Murray  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
191642eb1aSMark Murray  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
201642eb1aSMark Murray  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
211642eb1aSMark Murray  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
221642eb1aSMark Murray  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
231642eb1aSMark Murray  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
241642eb1aSMark Murray  * SUCH DAMAGE.
251642eb1aSMark Murray  *
261642eb1aSMark Murray  * $FreeBSD$
271642eb1aSMark Murray  */
281642eb1aSMark Murray 
291642eb1aSMark Murray #define	PAM_SM_AUTH
301642eb1aSMark Murray #define	PAM_SM_ACCOUNT
311642eb1aSMark Murray #define	PAM_SM_SESSION
321642eb1aSMark Murray #define	PAM_SM_PASSWORD
331642eb1aSMark Murray 
341642eb1aSMark Murray #include <security/pam_modules.h>
351642eb1aSMark Murray #include <security/_pam_macros.h>
361642eb1aSMark Murray #include "pam_mod_misc.h"
371642eb1aSMark Murray 
381642eb1aSMark Murray #define NOBODY "nobody"
391642eb1aSMark Murray 
401642eb1aSMark Murray PAM_EXTERN int
411642eb1aSMark Murray pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
421642eb1aSMark Murray {
431642eb1aSMark Murray 	struct options options;
441642eb1aSMark Murray 	int retval;
451642eb1aSMark Murray 	const char *user;
461642eb1aSMark Murray 
471642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
481642eb1aSMark Murray 
491642eb1aSMark Murray 	PAM_LOG("Options processed");
501642eb1aSMark Murray 
511642eb1aSMark Murray 	/* We always need to know who the user is */
521642eb1aSMark Murray 	user = NULL;
531642eb1aSMark Murray 	retval = pam_get_user(pamh, &user, NULL);
541642eb1aSMark Murray 	if (retval != PAM_SUCCESS)
551642eb1aSMark Murray 		PAM_RETURN(retval);
561642eb1aSMark Murray 
571642eb1aSMark Murray 	PAM_LOG("Got user: %s", user);
581642eb1aSMark Murray 
591642eb1aSMark Murray 	if (user == NULL || *user == '\0')
601642eb1aSMark Murray 		pam_set_item(pamh, PAM_USER, (const void *)NOBODY);
611642eb1aSMark Murray 	user = NULL;
621642eb1aSMark Murray 
631642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
641642eb1aSMark Murray }
651642eb1aSMark Murray 
661642eb1aSMark Murray PAM_EXTERN int
671642eb1aSMark Murray pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
681642eb1aSMark Murray {
691642eb1aSMark Murray 	struct options options;
701642eb1aSMark Murray 
711642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
721642eb1aSMark Murray 
731642eb1aSMark Murray 	PAM_LOG("Options processed");
741642eb1aSMark Murray 
751642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
761642eb1aSMark Murray }
771642eb1aSMark Murray 
781642eb1aSMark Murray PAM_EXTERN int
791642eb1aSMark Murray pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc ,const char **argv)
801642eb1aSMark Murray {
811642eb1aSMark Murray 	struct options options;
821642eb1aSMark Murray 
831642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
841642eb1aSMark Murray 
851642eb1aSMark Murray 	PAM_LOG("Options processed");
861642eb1aSMark Murray 
871642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
881642eb1aSMark Murray }
891642eb1aSMark Murray 
901642eb1aSMark Murray PAM_EXTERN int
911642eb1aSMark Murray pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv)
921642eb1aSMark Murray {
931642eb1aSMark Murray 	struct options options;
941642eb1aSMark Murray 
951642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
961642eb1aSMark Murray 
971642eb1aSMark Murray 	PAM_LOG("Options processed");
981642eb1aSMark Murray 
991642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
1001642eb1aSMark Murray }
1011642eb1aSMark Murray 
1021642eb1aSMark Murray PAM_EXTERN int
1031642eb1aSMark Murray pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv)
1041642eb1aSMark Murray {
1051642eb1aSMark Murray 	struct options options;
1061642eb1aSMark Murray 
1071642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
1081642eb1aSMark Murray 
1091642eb1aSMark Murray 	PAM_LOG("Options processed");
1101642eb1aSMark Murray 
1111642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
1121642eb1aSMark Murray }
1131642eb1aSMark Murray 
1141642eb1aSMark Murray PAM_EXTERN int
1151642eb1aSMark Murray pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv)
1161642eb1aSMark Murray {
1171642eb1aSMark Murray 	struct options options;
1181642eb1aSMark Murray 
1191642eb1aSMark Murray 	pam_std_option(&options, NULL, argc, argv);
1201642eb1aSMark Murray 
1211642eb1aSMark Murray 	PAM_LOG("Options processed");
1221642eb1aSMark Murray 
1231642eb1aSMark Murray 	PAM_RETURN(PAM_SUCCESS);
1241642eb1aSMark Murray }
1251642eb1aSMark Murray 
1261642eb1aSMark Murray PAM_MODULE_ENTRY("pam_permit");
127