pam_self.c revision 87396
138032Speter/*- 2261370Sgshapiro * Copyright (c) 2001 Mark R V Murray 364562Sgshapiro * All rights reserved. 438032Speter * Copyright (c) 2001 Networks Associates Technologies, Inc. 538032Speter * All rights reserved. 638032Speter * 738032Speter * Portions of this software were developed for the FreeBSD Project by 838032Speter * ThinkSec AS and NAI Labs, the Security Research Division of Network 938032Speter * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 1038032Speter * ("CBOSS"), as part of the DARPA CHATS research program. 1138032Speter * 1238032Speter * Redistribution and use in source and binary forms, with or without 1338032Speter * modification, are permitted provided that the following conditions 1464562Sgshapiro * are met: 1564562Sgshapiro * 1. Redistributions of source code must retain the above copyright 16266711Sgshapiro * notice, this list of conditions and the following disclaimer. 1764562Sgshapiro * 2. Redistributions in binary form must reproduce the above copyright 18168515Sgshapiro * notice, this list of conditions and the following disclaimer in the 1990792Sgshapiro * documentation and/or other materials provided with the distribution. 2090792Sgshapiro * 3. The name of the author may not be used to endorse or promote 2164562Sgshapiro * products derived from this software without specific prior written 2290792Sgshapiro * permission. 23132943Sgshapiro * 24132943Sgshapiro * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 25132943Sgshapiro * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26132943Sgshapiro * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27132943Sgshapiro * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 28132943Sgshapiro * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29132943Sgshapiro * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30132943Sgshapiro * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31132943Sgshapiro * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32132943Sgshapiro * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33132943Sgshapiro * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34132943Sgshapiro * SUCH DAMAGE. 35132943Sgshapiro */ 36132943Sgshapiro 37132943Sgshapiro#include <sys/cdefs.h> 38132943Sgshapiro__FBSDID("$FreeBSD: head/lib/libpam/modules/pam_self/pam_self.c 87396 2001-12-05 15:55:14Z des $"); 39132943Sgshapiro 40132943Sgshapiro#define _BSD_SOURCE 41132943Sgshapiro 42132943Sgshapiro#include <unistd.h> 43132943Sgshapiro#include <syslog.h> 44132943Sgshapiro 45132943Sgshapiro#define PAM_SM_AUTH 46132943Sgshapiro#define PAM_SM_ACCOUNT 4738032Speter#define PAM_SM_SESSION 4838032Speter#define PAM_SM_PASSWORD 4990792Sgshapiro 5038032Speter#include <security/pam_modules.h> 5138032Speter#include <pam_mod_misc.h> 5238032Speter 5390792SgshapiroPAM_EXTERN int 5438032Speterpam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) 5538032Speter{ 5638032Speter struct options options; 5738032Speter const char *luser, *ruser; 5838032Speter int r; 5938032Speter 6090792Sgshapiro pam_std_option(&options, NULL, argc, argv); 6138032Speter 6290792Sgshapiro PAM_LOG("Options processed"); 6338032Speter 6438032Speter r = pam_get_item(pamh, PAM_USER, (const void **)&luser); 6538032Speter if (r != PAM_SUCCESS) 6638032Speter PAM_RETURN(r); 6738032Speter if (luser == NULL) 6838032Speter PAM_RETURN(PAM_USER_UNKNOWN); 6938032Speter 7038032Speter r = pam_get_item(pamh, PAM_RUSER, (const void **)&ruser); 7138032Speter if (r != PAM_SUCCESS) 7238032Speter PAM_RETURN(r); 7338032Speter 7438032Speter if (strcmp(luser, ruser) == 0) 7538032Speter PAM_RETURN(PAM_SUCCESS); 7638032Speter 7738032Speter PAM_VERBOSE_ERROR("Refused; source and target users differ"); 7864562Sgshapiro 7990792Sgshapiro PAM_RETURN(PAM_AUTH_ERR); 8038032Speter} 8138032Speter 8238032SpeterPAM_EXTERN int 8338032Speterpam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv) 8438032Speter{ 8538032Speter struct options options; 8638032Speter 8738032Speter pam_std_option(&options, NULL, argc, argv); 8838032Speter 8938032Speter PAM_LOG("Options processed"); 9038032Speter 9138032Speter PAM_RETURN(PAM_SUCCESS); 9238032Speter} 9338032Speter 9438032SpeterPAM_EXTERN int 95110560Sgshapiropam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc ,const char **argv) 9690792Sgshapiro{ 97141858Sgshapiro struct options options; 98141858Sgshapiro 99110560Sgshapiro pam_std_option(&options, NULL, argc, argv); 100110560Sgshapiro 101110560Sgshapiro PAM_LOG("Options processed"); 102110560Sgshapiro 103110560Sgshapiro PAM_RETURN(PAM_IGNORE); 104110560Sgshapiro} 105110560Sgshapiro 106110560SgshapiroPAM_EXTERN int 107110560Sgshapiropam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv) 108110560Sgshapiro{ 109110560Sgshapiro struct options options; 110110560Sgshapiro 111110560Sgshapiro pam_std_option(&options, NULL, argc, argv); 112110560Sgshapiro 113110560Sgshapiro PAM_LOG("Options processed"); 114110560Sgshapiro 115110560Sgshapiro PAM_RETURN(PAM_IGNORE); 116110560Sgshapiro} 117110560Sgshapiro 118110560SgshapiroPAM_EXTERN int 119110560Sgshapiropam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) 120110560Sgshapiro{ 121110560Sgshapiro struct options options; 122110560Sgshapiro 123110560Sgshapiro pam_std_option(&options, NULL, argc, argv); 124110560Sgshapiro 125110560Sgshapiro PAM_LOG("Options processed"); 126110560Sgshapiro 12738032Speter PAM_RETURN(PAM_IGNORE); 12838032Speter} 12938032Speter 13038032SpeterPAM_EXTERN int 13138032Speterpam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv) 13238032Speter{ 13338032Speter struct options options; 13438032Speter 13538032Speter pam_std_option(&options, NULL, argc, argv); 13638032Speter 13790792Sgshapiro PAM_LOG("Options processed"); 13838032Speter 13938032Speter PAM_RETURN(PAM_IGNORE); 14038032Speter} 14138032Speter 14238032SpeterPAM_MODULE_ENTRY("pam_self"); 14338032Speter