diff options
Diffstat (limited to 'eclass/user.eclass')
-rw-r--r-- | eclass/user.eclass | 149 |
1 files changed, 3 insertions, 146 deletions
diff --git a/eclass/user.eclass b/eclass/user.eclass index f433d32bf7ed..9bd0b607eab8 100644 --- a/eclass/user.eclass +++ b/eclass/user.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2019 Gentoo Authors +# Copyright 1999-2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: user.eclass @@ -13,6 +13,8 @@ if [[ -z ${_USER_ECLASS} ]]; then _USER_ECLASS=1 +inherit user-info + # @FUNCTION: _assert_pkg_ebuild_phase # @INTERNAL # @USAGE: <calling func name> @@ -27,49 +29,6 @@ _assert_pkg_ebuild_phase() { esac } -# @FUNCTION: egetent -# @USAGE: <database> <key> -# @DESCRIPTION: -# Small wrapper for getent (Linux), nidump (< Mac OS X 10.5), -# dscl (Mac OS X 10.5), and pw (FreeBSD) used in enewuser()/enewgroup(). -# -# Supported databases: group passwd -egetent() { - local db=$1 key=$2 - - [[ $# -ge 3 ]] && die "usage: egetent <database> <key>" - - case ${db} in - passwd|group) ;; - *) die "sorry, database '${db}' not yet supported; file a bug" ;; - esac - - case ${CHOST} in - *-freebsd*|*-dragonfly*) - case ${db} in - passwd) db="user" ;; - *) ;; - esac - - # lookup by uid/gid - local opts - if [[ ${key} == [[:digit:]]* ]] ; then - [[ ${db} == "user" ]] && opts="-u" || opts="-g" - fi - - pw show ${db} ${opts} "${key}" -q - ;; - *-openbsd*) - grep "${key}:\*:" /etc/${db} - ;; - *) - # ignore nscd output if we're not running as root - type -p nscd >/dev/null && nscd -i "${db}" 2>/dev/null - getent "${db}" "${key}" - ;; - esac -} - # @FUNCTION: user_get_nologin # @INTERNAL # @DESCRIPTION: @@ -351,108 +310,6 @@ enewgroup() { esac } -# @FUNCTION: egetusername -# @USAGE: <uid> -# @DESCRIPTION: -# Gets the username for given UID. -egetusername() { - [[ $# -eq 1 ]] || die "usage: egetusername <uid>" - - egetent passwd "$1" | cut -d: -f1 -} - -# @FUNCTION: egetgroupname -# @USAGE: <gid> -# @DESCRIPTION: -# Gets the group name for given GID. -egetgroupname() { - [[ $# -eq 1 ]] || die "usage: egetgroupname <gid>" - - egetent group "$1" | cut -d: -f1 -} - -# @FUNCTION: egethome -# @USAGE: <user> -# @DESCRIPTION: -# Gets the home directory for the specified user. -egethome() { - local pos - - [[ $# -eq 1 ]] || die "usage: egethome <user>" - - case ${CHOST} in - *-freebsd*|*-dragonfly*) - pos=9 - ;; - *) # Linux, NetBSD, OpenBSD, etc... - pos=6 - ;; - esac - - egetent passwd "$1" | cut -d: -f${pos} -} - -# @FUNCTION: egetshell -# @USAGE: <user> -# @DESCRIPTION: -# Gets the shell for the specified user. -egetshell() { - local pos - - [[ $# -eq 1 ]] || die "usage: egetshell <user>" - - case ${CHOST} in - *-freebsd*|*-dragonfly*) - pos=10 - ;; - *) # Linux, NetBSD, OpenBSD, etc... - pos=7 - ;; - esac - - egetent passwd "$1" | cut -d: -f${pos} -} - -# @FUNCTION: egetcomment -# @USAGE: <user> -# @DESCRIPTION: -# Gets the comment field for the specified user. -egetcomment() { - local pos - - [[ $# -eq 1 ]] || die "usage: egetshell <user>" - - case ${CHOST} in - *-freebsd*|*-dragonfly*) - pos=8 - ;; - *) # Linux, NetBSD, OpenBSD, etc... - pos=5 - ;; - esac - - egetent passwd "$1" | cut -d: -f${pos} -} - -# @FUNCTION: egetgroups -# @USAGE: <user> -# @DESCRIPTION: -# Gets all the groups user belongs to. The primary group is returned -# first, then all supplementary groups. Groups are ','-separated. -egetgroups() { - [[ $# -eq 1 ]] || die "usage: egetgroups <user>" - - local egroups_arr - read -r -a egroups_arr < <(id -G -n "$1") - - local g groups=${egroups_arr[0]} - # sort supplementary groups to make comparison possible - while read -r g; do - [[ -n ${g} ]] && groups+=",${g}" - done < <(printf '%s\n' "${egroups_arr[@]:1}" | sort) - echo "${groups}" -} - # @FUNCTION: esethome # @USAGE: <user> <homedir> # @DESCRIPTION: |