summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt/data/opt/openslx/scripts/pam_script_auth.d/99-run_virt_credentials
blob: 941f0047f7d3bdda23ce8309c41997068ac29ff6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/ash
# This is being sourced and running in ash

if [ -n "$TEMP_HOME_DIR" ]; then
	if [ -z "$PAM_TTY" ] || [ "x$PAM_TTY" = "x:0" ]; then
		# Pass on network path to home directory
		if [ -z "$PERSISTENT_NETPATH" ]; then
			PERSISTENT_NETPATH=$(grep -m1 -F " ${PERSISTENT_HOME_DIR} " "/proc/mounts" | awk '{print $1}')
		fi
		if [ -n "$PERSISTENT_NETPATH" ]; then
			[ "x${PERSISTENT_NETPATH:0:2}" = "x//" ] && PERSISTENT_NETPATH=$(echo "$PERSISTENT_NETPATH" | tr '/' '\')
			echo "${PERSISTENT_NETPATH}" > "${TEMP_HOME_DIR}/.home"
			chmod 0644 "${TEMP_HOME_DIR}/.home"
		fi
		# pwdaemon
		# Figure out username
		XUSER="${REAL_ACCOUNT}"
		[ -z "$XUSER" ] && XUSER="${PAM_USER}"
		# Figure out domain
		XDOMAIN=
		# Take explicitly configured domain
		if [ -s "/opt/openslx/inc/shares" ]; then
			. /opt/openslx/inc/shares
			XDOMAIN="${SHARE_DOMAIN}"
		fi
		if [ "x$XDOMAIN" != "x#" ]; then
			# Guess domain
			if [ -z "$XDOMAIN" ] && [ -n "$PERSISTENT_HOME_DIR" ]; then
				XDOMAIN=$(grep -F " ${PERSISTENT_HOME_DIR} " "/proc/mounts" | grep -m1 -F 'domain=' | sed -r 's/^.*[ ,]domain=([^ ,]*)[ ,].*$/\1/g')
			fi
			if [ -z "$XDOMAIN" ]; then
				XDOMAIN=$(<"/etc/ldap.conf" grep -m1 -i '^BASE\s.*DC=' | grep -o -E -i 'DC=([^,;]+)' | head -n 1 | cut -c 4-)
			fi
			if [ -z "$XDOMAIN" ]; then
				XDOMAIN=$(<"/etc/sssd/sssd.conf" grep -m1 -i '^ldap_search_base\s*=.*DC=' | grep -o -E -i 'DC=[^,;]+' | head -n 1 | cut -c 4-)
			fi
			if [ -n "$XDOMAIN" ]; then
				XDOMAIN=$(echo "$XDOMAIN" | tr '[a-z]' '[A-Z]')
			else
				XDOMAIN="WORKGROUP"
			fi
			XDOMAIN="${XDOMAIN}\\"
		else
			XDOMAIN=
		fi
		USERNAME="${XDOMAIN}${XUSER}" PASSWORD="$PAM_AUTHTOK" PWSOCKET="${TEMP_HOME_DIR}/.pwsocket" su -c 'pwdaemon --daemon &' "${PAM_USER}" &
		unset XUSER XDOMAIN
	fi
fi

true