Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 434468 Details for
Bug 541406
user.eclass: does not respect ROOT
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
modified user.eclass for ${ROOT} proper handling
user.eclass.patch (text/plain), 5.53 KB, created by
fariouche
on 2016-05-16 20:04:50 UTC
(
hide
)
Description:
modified user.eclass for ${ROOT} proper handling
Filename:
MIME Type:
Creator:
fariouche
Created:
2016-05-16 20:04:50 UTC
Size:
5.53 KB
patch
obsolete
>diff --git a/eclass/user.eclass b/eclass/user.eclass >index 29910b5..9ee88fe 100644 >--- a/eclass/user.eclass >+++ b/eclass/user.eclass >@@ -94,7 +94,11 @@ egetent() { > *) > # ignore output if nscd doesn't exist, or we're not running as root > nscd -i "${db}" 2>/dev/null >- getent "${db}" "${key}" >+ if [[ "${ROOT}" == "/" ]] ; then >+ getent "${db}" "${key}" >+ else >+ grep --color=never "^${key}" ${ROOT}/etc/${db} >+ fi > ;; > esac > } >@@ -120,7 +124,11 @@ enewuser() { > if [[ -n $(egetent passwd "${euser}") ]] ; then > return 0 > fi >- einfo "Adding user '${euser}' to your system ..." >+ if [[ "${ROOT}" == "/" ]] ; then >+ einfo "Adding user '${euser}' to your system ..." >+ else >+ einfo "Adding user '${euser}' to ${ROOT} ..." >+ fi > > # options to pass to useradd > local opts=() >@@ -247,14 +255,18 @@ enewuser() { > ;; > > *) >- useradd -r "${opts[@]}" "${euser}" || die >+ if [[ "${ROOT}" != "/" ]] ; then >+ opts+=( --prefix "${ROOT}" ) >+ fi >+ einfo useradd -r "${opts[@]}" "${euser}" >+ useradd -r "${opts[@]}" "${euser}" || die > ;; > esac > > if [[ ! -e ${ROOT}/${ehome} ]] ; then > einfo " - Creating ${ehome} in ${ROOT}" > mkdir -p "${ROOT}/${ehome}" >- chown "${euser}" "${ROOT}/${ehome}" >+ chown "${euid}" "${ROOT}/${ehome}" > chmod 755 "${ROOT}/${ehome}" > fi > } >@@ -280,7 +292,11 @@ enewgroup() { > if [[ -n $(egetent group "${egroup}") ]] ; then > return 0 > fi >- einfo "Adding group '${egroup}' to your system ..." >+ if [[ "${ROOT}" == "/" ]] ; then >+ einfo "Adding group '${egroup}' to your system ..." >+ else >+ einfo "Adding group '${egroup}' to ${ROOT} ..." >+ fi > > # handle gid > local egid=$1; shift >@@ -339,8 +355,13 @@ enewgroup() { > else > opts="-g ${egid}" > fi >- # We specify -r so that we get a GID in the system range from login.defs >- groupadd -r ${opts} "${egroup}" || die >+ if [[ "${ROOT}" == "/" ]] ; then >+ # We specify -r so that we get a GID in the system range from login.defs >+ groupadd -r ${opts} "${egroup}" || die >+ else >+ einfo groupadd --prefix ${ROOT} -r ${opts} "${egroup}" >+ groupadd --prefix ${ROOT} -r ${opts} "${egroup}" || die >+ fi > ;; > esac > } >@@ -454,7 +475,11 @@ esethome() { > ;; > > *) >- usermod -d "${ehome}" "${euser}" && return 0 >+ if [[ "${ROOT}" == "/" ]] ; then >+ usermod -d "${ehome}" "${euser}" && return 0 >+ else >+ usermod --prefix ${ROOT} -d "${ehome}" "${euser}" && return 0 >+ fi > [[ $? == 8 ]] && eerror "${euser} is in use, cannot update home" > eerror "There was an error when attempting to update the home directory for ${euser}" > eerror "Please update it manually on your system (as root):" >@@ -463,4 +488,78 @@ esethome() { > esac > } > >+# @USAGE: <user> >+# @DESCRIPTION: >+# Gets the uid for the specified user. >+egetuid() { >+ [[ $# -eq 1 ]] || die "usage: egetuid <user>" >+ >+ egetent passwd "$1" | cut -d: -f3 || die >+} >+ >+# @USAGE: <group> >+# @DESCRIPTION: >+# Gets the gid for the specified group. >+egetgid() { >+ [[ $# -eq 1 ]] || die "usage: egetuid <user>" >+ >+ egetent passwd "$1" | cut -d: -f3 || die >+} >+ >+# @USAGE: <group> >+# @DESCRIPTION: >+# Gets the gid for the specified group. >+egetgid() { >+ [[ $# -eq 1 ]] || die "usage: egetgid <group>" >+ >+ egetent group "$1" | cut -d: -f3 || die >+} >+ >+ >+# @USAGE: <user> <group> <path> >+# @DESCRIPTION: >+# chown portage equivalent, honoring the ${ROOT} variable. >+echown() { >+ # get the user >+ local euser=$1; shift >+ if [[ -z ${euser} ]] ; then >+ eerror "No user specified !" >+ die "Cannot call echown without a user" >+ fi >+ >+ # get the group >+ local egroup=$1; shift >+ if [[ -z ${egroup} ]] ; then >+ eerror "No group specified !" >+ die "Cannot call echown without a group" >+ fi >+ >+ local euid >+ local egid >+ euid=$(egetuid "${euser}") >+ egid=$(egetgid "${egroup}") >+ >+ einfo chown ${euid}:${egid} $@ >+ >+ chown ${euid}:${egid} $@ || die >+} >+ >+# @DESCRIPTION: >+# fowners honoring the ${ROOT} variable. >+efowners() { >+ # get the user >+ local euser=$1; shift >+ if [[ -z ${euser} ]] ; then >+ eerror "No user specified !" >+ die "Cannot call echown without a user" >+ fi >+ >+ # get the group >+ local egroup=$1; shift >+ if [[ -z ${egroup} ]] ; then >+ eerror "No group specified !" >+ die "Cannot call echown without a group" >+ fi >+ >+ local euid >+ local egid >+ euid=$(egetuid "${euser}") >+ egid=$(egetgid "${egroup}") >+ >+ einfo fowners ${euid}:${egid} $@ >+ >+ fowners ${euid}:${egid} $@ || die >+} >+ > fi
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 541406
:
434468
|
434472
|
434474
|
434740
|
688161
|
688164
|
688167
|
688170
|
688293