diff options
Diffstat (limited to 'src/os-plugins/plugins/eduroam/files/usr/share')
3 files changed, 117 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth new file mode 100755 index 00000000..6f3e7ec6 --- /dev/null +++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_auth @@ -0,0 +1,60 @@ +#!/bin/bash +# pam_script_auth + +# file to write authentification method to +file=/var/run/eduroam_auth_method + +# check given argument +case "$1" in + + "radius" ) + # auth method, write it to file + echo "[$PAM_TYPE] Verifying credentials (through $1)..." + #echo "$1" > $file.$PAM_USER + ;; + + "create_user" ) + # create user + # check if user exists + if [ "x$(cat /etc/passwd | grep ^$PAM_USER | wc -l)" == "x1" ] + then + # user exists + echo "[$PAM_TYPE] User $PAM_USER exists already." + else + # user does not exists, create it. + echo "[$PAM_TYPE] User $PAM_USER does not exist." + echo "[$PAM_TYPE] Creating user $PAM_USER ..." + + uid_file=/var/run/eduroam_lastuid + # check for /var/run/eduroam_lastuid + [ ! -f $uid_file ] && echo "234299000" > $uid_file + + # set user information + uid=$(($(cat $uid_file)+1)) + gid=1001 + homedir=/home/$PAM_USER + uinfo="Eduroam Guest" + ushell=/bin/bash + + # create home directory + mkdir $homedir + chown $uid:$gid $homedir + + # create /etc/passwd entry + echo "$PAM_USER:x:$uid:$gid:$uinfo:$homedir:$ushell" >> /etc/passwd + + # create /etc/shadow entry + # set today's date for last pw change + pwlastchange=$(($(date +%s) / 60 / 60 / 24)) + echo "$PAM_USER:x:$pwlastchange:0:99999:7:::" >> /etc/shadow + + # user creation done, adjust uid_file + echo "$uid" > $uid_file + fi + ;; + + * ) + echo "[$PAM_TYPE] $0 unrecognized parameter: $1 (ignoring)." + ;; + +esac diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close new file mode 100755 index 00000000..0568fd64 --- /dev/null +++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_close @@ -0,0 +1,37 @@ +#!/bin/bash +# pam_script_ses_close +# ran by root after user closes session + +echo "[$PAM_TYPE] Closing session for $PAM_USER..." +# minimal uid: users with uid under this wont get deleted. +MIN_UID=234299000 + +# remove local user & home dir +# only execute for uid > MIN_UID +#if [ $(id -u $PAM_USER) -gt $MIN_UID -a "x$(cat /var/run/eduroam_auth_method.$PAM_USER)" == "xradius" ] +if [ $(id -u $PAM_USER) -gt $MIN_UID ] +then + #[ -f /var/run/eduroam_auth_method.$PAM_USER ] && rm /var/run/eduroam_auth_method.$PAM_USER + + # decrement session + session_counter=/tmp/$PAM_USER.sessioncount + session_count=$(cat $session_counter) + echo "$(($session_count-1))" > $session_counter + + # home dir ugly purge ... (log to debug...) + log=/var/log/eduroam + [ -f $log ] && rm $log + if [ -d /home/$PAM_USER ] + then + umount -fl /home/$PAM_USER/.gvfs &>> $log + chown -R root:root /home/$PAM_USER &>> $log + chmod -R a+rwx /home/$PAM_USER &>> $log + rm -rf /home/$PAM_USER &>> $log + fi + find /tmp -user $PAM_USER -delete + sed -i "/^$PAM_USER/d" /etc/passwd + sed -i "/^$PAM_USER/d" /etc/shadow + echo "[$PAM_TYPE] Local user deleted." +fi + +echo "[$PAM_TYPE] Hope you enjoyed your stay $PAM_USER." diff --git a/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open new file mode 100755 index 00000000..4ca474b9 --- /dev/null +++ b/src/os-plugins/plugins/eduroam/files/usr/share/libpam-script/pam_script_ses_open @@ -0,0 +1,20 @@ +#!/bin/bash +# pam_script session open script. +# This script is executed by root when a new session is opened. +echo "[$PAM_TYPE] Creating new session for $PAM_USER." + +min_uid=234299000 +[ $(id -u $PAM_USER) -gt $min_uid ] || exit 0 + +session_counter=/tmp/$PAM_USER.sessioncount +num_user_proc=$(ps aux|grep $PAM_USER -c|grep -v grep) + +if [ $num_user_proc -eq 0 ] +then + # no running session, write 1 since we are creating a new session. + echo "1" > $session_counter +else + # running session, increment + current_count=$(cat $session_counter) + echo "$(($current_count+1))" > $session_counter +fi |