Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH v3 05/19] user.eclass: Support disabling home directory creation
Date: Sun, 09 Jun 2019 11:30:26
Message-Id: 20190609112814.15907-6-mgorny@gentoo.org
In Reply to: [gentoo-dev] [PATCH v3 00/19] User/group packages by "Michał Górny"
1 Signed-off-by: Michał Górny <mgorny@g.o>
2 ---
3 eclass/user.eclass | 16 ++++++++++++++--
4 1 file changed, 14 insertions(+), 2 deletions(-)
5
6 diff --git a/eclass/user.eclass b/eclass/user.eclass
7 index a24920af13f1..0577df81ae78 100644
8 --- a/eclass/user.eclass
9 +++ b/eclass/user.eclass
10 @@ -71,12 +71,15 @@ egetent() {
11 }
12
13 # @FUNCTION: enewuser
14 -# @USAGE: <user> [uid] [shell] [homedir] [groups]
15 +# @USAGE: <user> [-M] [uid] [shell] [homedir] [groups]
16 # @DESCRIPTION:
17 # Same as enewgroup, you are not required to understand how to properly add
18 # a user to the system. The only required parameter is the username.
19 # Default uid is (pass -1 for this) next available, default shell is
20 # /bin/false, default homedir is /dev/null, and there are no default groups.
21 +#
22 +# If -M is passed, enewuser does not create the home directory if it does not
23 +# exist.
24 enewuser() {
25 if [[ ${EUID} != 0 ]] ; then
26 einfo "Insufficient privileges to execute ${FUNCNAME[0]}"
27 @@ -84,6 +87,15 @@ enewuser() {
28 fi
29 _assert_pkg_ebuild_phase ${FUNCNAME}
30
31 + local create_home=1
32 + while [[ $1 == -* ]]; do
33 + case $1 in
34 + -M) create_home=;;
35 + *) die "${FUNCNAME}: invalid option ${1}";;
36 + esac
37 + shift
38 + done
39 +
40 # get the username
41 local euser=$1; shift
42 if [[ -z ${euser} ]] ; then
43 @@ -213,7 +225,7 @@ enewuser() {
44 ;;
45 esac
46
47 - if [[ ! -e ${ROOT}/${ehome} ]] ; then
48 + if [[ -n ${create_home} && ! -e ${ROOT}/${ehome} ]] ; then
49 einfo " - Creating ${ehome} in ${ROOT}"
50 mkdir -p "${ROOT}/${ehome}"
51 chown "${euser}" "${ROOT}/${ehome}"
52 --
53 2.22.0.rc3