mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-15 08:56:58 +02:00
eclass/pam: Sync with gentoo
It's from gentoo commit 1de86d8250aae0a9d5a043fcc9e1065e6c435067.
This commit is contained in:
parent
6e868bf66d
commit
d465ce1bed
@ -1,20 +1,26 @@
|
|||||||
# Copyright 1999-2019 Gentoo Authors
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
# @ECLASS: pam.eclass
|
# @ECLASS: pam.eclass
|
||||||
# @MAINTAINER:
|
# @MAINTAINER:
|
||||||
# zlogene@gentoo.org
|
# Mikle Kolyada <zlogene@gentoo.org>
|
||||||
# @AUTHOR:
|
# @AUTHOR:
|
||||||
# Diego Pettenò <flameeyes@gentoo.org>
|
# Diego Pettenò <flameeyes@gentoo.org>
|
||||||
|
# @SUPPORTED_EAPIS: 6 7 8
|
||||||
# @BLURB: Handles pam related tasks
|
# @BLURB: Handles pam related tasks
|
||||||
# @DESCRIPTION:
|
# @DESCRIPTION:
|
||||||
# This eclass contains functions to install pamd configuration files and
|
# This eclass contains functions to install pamd configuration files and
|
||||||
# pam modules.
|
# pam modules.
|
||||||
|
|
||||||
|
case ${EAPI:-0} in
|
||||||
|
[678]) ;;
|
||||||
|
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
if [[ -z ${_PAM_ECLASS} ]]; then
|
if [[ -z ${_PAM_ECLASS} ]]; then
|
||||||
_PAM_ECLASS=1
|
_PAM_ECLASS=1
|
||||||
|
|
||||||
inherit flag-o-matic multilib
|
inherit flag-o-matic
|
||||||
|
|
||||||
# @FUNCTION: dopamd
|
# @FUNCTION: dopamd
|
||||||
# @USAGE: <file> [more files]
|
# @USAGE: <file> [more files]
|
||||||
@ -94,12 +100,7 @@ newpamsecurity() {
|
|||||||
# @DESCRIPTION:
|
# @DESCRIPTION:
|
||||||
# Returns the pam modules' directory for current implementation
|
# Returns the pam modules' directory for current implementation
|
||||||
getpam_mod_dir() {
|
getpam_mod_dir() {
|
||||||
if has_version sys-libs/pam || has_version sys-libs/openpam; then
|
|
||||||
PAM_MOD_DIR=/$(get_libdir)/security
|
PAM_MOD_DIR=/$(get_libdir)/security
|
||||||
else
|
|
||||||
# Unable to find PAM implementation... defaulting
|
|
||||||
PAM_MOD_DIR=/$(get_libdir)/security
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ${PAM_MOD_DIR}
|
echo ${PAM_MOD_DIR}
|
||||||
}
|
}
|
||||||
@ -182,11 +183,7 @@ pamd_mimic() {
|
|||||||
originalstack=$1
|
originalstack=$1
|
||||||
authlevels="auth account password session"
|
authlevels="auth account password session"
|
||||||
|
|
||||||
if has_version '<sys-libs/pam-0.78'; then
|
mimic="\tsubstack\t\t${originalstack}"
|
||||||
mimic="\trequired\t\tpam_stack.so service=${originalstack}"
|
|
||||||
else
|
|
||||||
mimic="\tinclude\t\t${originalstack}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
shift; shift
|
shift; shift
|
||||||
|
|
||||||
@ -207,54 +204,11 @@ pamd_mimic() {
|
|||||||
cleanpamd() {
|
cleanpamd() {
|
||||||
while [[ -n $1 ]]; do
|
while [[ -n $1 ]]; do
|
||||||
if ! has_version sys-libs/pam; then
|
if ! has_version sys-libs/pam; then
|
||||||
sed -i -e '/pam_shells\|pam_console/s:^:#:' "${D}/etc/pam.d/$1"
|
sed -i -e '/pam_shells\|pam_console/s:^:#:' "${D}/etc/pam.d/$1" || die
|
||||||
fi
|
fi
|
||||||
|
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# @FUNCTION: pam_epam_expand
|
|
||||||
# @USAGE: <pamd file>
|
|
||||||
# @DESCRIPTION:
|
|
||||||
# Steer clear, deprecated, don't use, bad experiment
|
|
||||||
pam_epam_expand() {
|
|
||||||
sed -n -e 's|#%EPAM-\([[:alpha:]-]\+\):\([-+<>=/.![:alnum:]]\+\)%#.*|\1 \2|p' \
|
|
||||||
"$@" | sort -u | while read condition parameter; do
|
|
||||||
|
|
||||||
disable="yes"
|
|
||||||
|
|
||||||
case "$condition" in
|
|
||||||
If-Has)
|
|
||||||
message="This can be used only if you have ${parameter} installed"
|
|
||||||
has_version "$parameter" && disable="no"
|
|
||||||
;;
|
|
||||||
Use-Flag)
|
|
||||||
message="This can be used only if you enabled the ${parameter} USE flag"
|
|
||||||
use "$parameter" && disable="no"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
eerror "Unknown EPAM condition '${condition}' ('${parameter}')"
|
|
||||||
die "Unknown EPAM condition '${condition}' ('${parameter}')"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "${disable}" = "yes" ]; then
|
|
||||||
sed -i -e "/#%EPAM-${condition}:${parameter/\//\\/}%#/d" "$@"
|
|
||||||
else
|
|
||||||
sed -i -e "s|#%EPAM-${condition}:${parameter}%#||" "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Think about it before uncommenting this one, for now run it by hand
|
|
||||||
# pam_pkg_preinst() {
|
|
||||||
# eshopts_push -o noglob # so that bash doen't expand "*"
|
|
||||||
#
|
|
||||||
# pam_epam_expand "${D}"/etc/pam.d/*
|
|
||||||
#
|
|
||||||
# eshopts_pop # reset old shell opts
|
|
||||||
# }
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user