When creating a user for another environement, user is created on the HOST and not the ROOT dir.
Adding "-R <CHROOT_DIR>" for all user* / group* commands fix the issue.
Signed-off-by: Jérémy Connat <
morderca@morderca.net>
---
eclass/user.eclass | 128 +++++++++++++++++++++++++++++++++++++++------
1 file changed, 111 insertions(+), 17 deletions(-)
diff --git a/eclass/user.eclass b/eclass/user.eclass
index ff69be81c1e..aab549d0c47 100644
--- a/eclass/user.eclass
+++ b/eclass/user.eclass
@@ -117,6 +117,9 @@ enewuser() {
# options to pass to useradd
local opts=()
+ # handle for ROOT != /
+ [[ -n ${ROOT} ]] && opts+=( --prefix "${ROOT}" )
+
# handle uid
local euid=${1}; shift
if [[ -n ${euid} && ${euid} != -1 ]] ; then
@@ -207,13 +210,24 @@ enewuser() {
;;
*-netbsd*)
- useradd "${opts[@]}" "${euser}" || die
+ if [[ -n "${ROOT}" ]]; then
+ ewarn "NetBSD's usermod does not support --prefix option."
+ ewarn "Please use: \"useradd ${opts[@]} ${euser}\" in a chroot"
+ else
+ useradd "${opts[@]}" "${euser}" || die
+ fi
;;
*-openbsd*)
- # all ops the same, except the -g vs -g/-G ...
- useradd -u ${euid} -s "${eshell}" \
- -d "${ehome}" -g "${egroups}" "${euser}" || d