summaryrefslogtreecommitdiff
path: root/pam_script_ses_open
diff options
context:
space:
mode:
authorDave Olson <olson@cumulusnetworks.com>2018-04-02 11:01:09 -0700
committerDave Olson <olson@cumulusnetworks.com>2018-04-02 20:40:02 -0700
commit1e5742369aedc8708d5dbe4411ffd5bf4b10537a (patch)
tree2480dc22d6bd3e99084aa85e5679e06b71a33ea0 /pam_script_ses_open
parent556625e62b692b723cc6809d2374c3da9616dc3d (diff)
downloadlibnss-mapuser-1e5742369aedc8708d5dbe4411ffd5bf4b10537a.tar.gz
libnss-mapuser-1e5742369aedc8708d5dbe4411ffd5bf4b10537a.zip
Add VSA shell:priv-lvl support for privileged radius user logins
Ticket: CM-19457 Reviewed By: roopa Testing Done: lots of variations of login, su, sudo, automated radius tests Now we always read the map files. If session is set, we try that file first, so that a user always sees their name, same as tacplus. If that's the wrong file, read through all of the map files, look for the correct match based on either name+session or auid+session, depending on getpwnam or getpwuid entry point Ignore same set of users as tacacs, including new radius_priv_user account for the privileged RADIUS user. create and delete the mapuser files from libpam-radius-auth now; we need to have the mapping file written early enough for the pam interfaces to get the correct info. Using the pam_script is too limiting, and since we are creating the database in libpam-radius-auth now, we'll delete it there as well to keep things symmetric, so delete the script and the references to the scripts A significant part of this effort was adding getgrent, getgrgid, and getgrnam support, so that the radius users are put into the netshow (unprivileged) and netedit and sudo (privileged) groups at login. A lot of restructuring went in as part of that, and cleaned up some longstanding bugs, including return values for the getpw* routines. Also cleaned up some whitespace issues. Also renamed some globals (debug, min_uid, init_common()) that might collide with other programs, so that when I build unstripped and normal visibility shared libs, they won't collide with programs calling the functions (saw this with "debug" and bgpd, for example).
Diffstat (limited to 'pam_script_ses_open')
-rwxr-xr-xpam_script_ses_open65
1 files changed, 0 insertions, 65 deletions
diff --git a/pam_script_ses_open b/pam_script_ses_open
deleted file mode 100755
index 731e250..0000000
--- a/pam_script_ses_open
+++ /dev/null
@@ -1,65 +0,0 @@
-#! /bin/bash
-# Copyright 2017 Cumulus Networks, Inc. All rights reserved
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-# This script is invoked via pam_script.so for session open, used for mapping
-# RADIUS usernames to the mapped uid, for libnss_mapuser getpwuid() entry
-# point.
-
-# auid is currently unused, but must match the uid of the mapped_user
-# in the libnss_mapuser database for this to be valid
-
-# For this to work, pam_loginuid.so must be used, so both the
-# loginuid and the sessionid are unique values > 0
-
-umask 022 # want everything world-readable.
-
-dbdir=/run/mapuser
-mkdir -p $dbdir
-
-read sess < /proc/$$/sessionid
-read auid < /proc/$$/loginuid
-
-# for debugging, if needed
-# logger -t mapuser $0 called with $PAM_USER pid=$$ session="$sess" auid="$auid"
-
-# never map root user, or when loginuid isn't set, or when
-# we aren't doing mapping (env variable not set)
-if [ "$auid" -eq 0 ]; then exit 0; fi
-
-# handle this one differently, since it means something is
-# configured wrong.
-if [ "$sess" -le 0 ] ; then
- logger -t $0 sessionid not set, no mapping possible for \
- PID $$ user $PAM_USER
- exit 0 # still allow the session
-fi
-
-# if user's home directory doesn't exist, create it and populate
-# it with the standard skeleton files.
-hdir=$(eval echo ~$PAM_USER)
-[ -d "$hdir" ] || /sbin/mkhomedir_helper $PAM_USER
-
-# don't overwrite if it already exists. Happens when sudo or su
-# is run from an existing mapped session.
-[ -s $dbdir/$sess ] || \
- date +"%FT%T.%N%nuser=$PAM_USER%npid=$$%nauid=$auid%nsession=$sess%nhome=$hdir" \
- > $dbdir/$sess
-
-# always succeed, this should not block sessions on errors
-exit 0
-