Lines 94-100
egetent() {
Link Here
|
94 |
*) |
94 |
*) |
95 |
# ignore output if nscd doesn't exist, or we're not running as root |
95 |
# ignore output if nscd doesn't exist, or we're not running as root |
96 |
nscd -i "${db}" 2>/dev/null |
96 |
nscd -i "${db}" 2>/dev/null |
97 |
getent "${db}" "${key}" |
97 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
98 |
getent "${db}" "${key}" |
99 |
else |
100 |
grep --color=never "^${key}" ${ROOT}/etc/${db} |
101 |
fi |
98 |
;; |
102 |
;; |
99 |
esac |
103 |
esac |
100 |
} |
104 |
} |
Lines 120-126
enewuser() {
Link Here
|
120 |
if [[ -n $(egetent passwd "${euser}") ]] ; then |
124 |
if [[ -n $(egetent passwd "${euser}") ]] ; then |
121 |
return 0 |
125 |
return 0 |
122 |
fi |
126 |
fi |
123 |
einfo "Adding user '${euser}' to your system ..." |
127 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
128 |
einfo "Adding user '${euser}' to your system ..." |
129 |
else |
130 |
einfo "Adding user '${euser}' to ${ROOT} ..." |
131 |
fi |
124 |
|
132 |
|
125 |
# options to pass to useradd |
133 |
# options to pass to useradd |
126 |
local opts=() |
134 |
local opts=() |
Lines 247-260
enewuser() {
Link Here
|
247 |
;; |
255 |
;; |
248 |
|
256 |
|
249 |
*) |
257 |
*) |
250 |
useradd -r "${opts[@]}" "${euser}" || die |
258 |
if [[ "${ROOT}" != "/" ]] ; then |
|
|
259 |
opts+=( --prefix "${ROOT}" ) |
260 |
fi |
261 |
einfo useradd -r "${opts[@]}" "${euser}" |
262 |
useradd -r "${opts[@]}" "${euser}" || die |
251 |
;; |
263 |
;; |
252 |
esac |
264 |
esac |
253 |
|
265 |
|
254 |
if [[ ! -e ${ROOT}/${ehome} ]] ; then |
266 |
if [[ ! -e ${ROOT}/${ehome} ]] ; then |
255 |
einfo " - Creating ${ehome} in ${ROOT}" |
267 |
einfo " - Creating ${ehome} in ${ROOT}" |
256 |
mkdir -p "${ROOT}/${ehome}" |
268 |
mkdir -p "${ROOT}/${ehome}" |
257 |
chown "${euser}" "${ROOT}/${ehome}" |
269 |
chown "${euid}" "${ROOT}/${ehome}" |
258 |
chmod 755 "${ROOT}/${ehome}" |
270 |
chmod 755 "${ROOT}/${ehome}" |
259 |
fi |
271 |
fi |
260 |
} |
272 |
} |
Lines 280-286
enewgroup() {
Link Here
|
280 |
if [[ -n $(egetent group "${egroup}") ]] ; then |
292 |
if [[ -n $(egetent group "${egroup}") ]] ; then |
281 |
return 0 |
293 |
return 0 |
282 |
fi |
294 |
fi |
283 |
einfo "Adding group '${egroup}' to your system ..." |
295 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
296 |
einfo "Adding group '${egroup}' to your system ..." |
297 |
else |
298 |
einfo "Adding group '${egroup}' to ${ROOT} ..." |
299 |
fi |
284 |
|
300 |
|
285 |
# handle gid |
301 |
# handle gid |
286 |
local egid=$1; shift |
302 |
local egid=$1; shift |
Lines 339-346
enewgroup() {
Link Here
|
339 |
else |
355 |
else |
340 |
opts="-g ${egid}" |
356 |
opts="-g ${egid}" |
341 |
fi |
357 |
fi |
342 |
# We specify -r so that we get a GID in the system range from login.defs |
358 |
if [[ "${ROOT}" == "/" ]] ; then |
343 |
groupadd -r ${opts} "${egroup}" || die |
359 |
# We specify -r so that we get a GID in the system range from login.defs |
|
|
360 |
groupadd -r ${opts} "${egroup}" || die |
361 |
else |
362 |
einfo groupadd --prefix ${ROOT} -r ${opts} "${egroup}" |
363 |
groupadd --prefix ${ROOT} -r ${opts} "${egroup}" || die |
364 |
fi |
344 |
;; |
365 |
;; |
345 |
esac |
366 |
esac |
346 |
} |
367 |
} |
Lines 454-460
esethome() {
Link Here
|
454 |
;; |
475 |
;; |
455 |
|
476 |
|
456 |
*) |
477 |
*) |
457 |
usermod -d "${ehome}" "${euser}" && return 0 |
478 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
479 |
usermod -d "${ehome}" "${euser}" && return 0 |
480 |
else |
481 |
usermod --prefix ${ROOT} -d "${ehome}" "${euser}" && return 0 |
482 |
fi |
458 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update home" |
483 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update home" |
459 |
eerror "There was an error when attempting to update the home directory for ${euser}" |
484 |
eerror "There was an error when attempting to update the home directory for ${euser}" |
460 |
eerror "Please update it manually on your system (as root):" |
485 |
eerror "Please update it manually on your system (as root):" |
Lines 463-466
esethome() {
Link Here
|
463 |
esac |
488 |
esac |
464 |
} |
489 |
} |
465 |
|
490 |
|
|
|
491 |
# @USAGE: <user> |
492 |
# @DESCRIPTION: |
493 |
# Gets the uid for the specified user. |
494 |
egetuid() { |
495 |
[[ $# -eq 1 ]] || die "usage: egetuid <user>" |
496 |
|
497 |
egetent passwd "$1" | cut -d: -f3 || die |
498 |
} |
499 |
|
500 |
# @USAGE: <group> |
501 |
# @DESCRIPTION: |
502 |
# Gets the gid for the specified group. |
503 |
egetgid() { |
504 |
[[ $# -eq 1 ]] || die "usage: egetuid <user>" |
505 |
|
506 |
egetent passwd "$1" | cut -d: -f3 || die |
507 |
} |
508 |
|
509 |
# @USAGE: <group> |
510 |
# @DESCRIPTION: |
511 |
# Gets the gid for the specified group. |
512 |
egetgid() { |
513 |
[[ $# -eq 1 ]] || die "usage: egetgid <group>" |
514 |
|
515 |
egetent group "$1" | cut -d: -f3 || die |
516 |
} |
517 |
|
518 |
|
519 |
# @USAGE: <user> <group> <path> |
520 |
# @DESCRIPTION: |
521 |
# chown portage equivalent, honoring the ${ROOT} variable. |
522 |
echown() { |
523 |
# get the user |
524 |
local euser=$1; shift |
525 |
if [[ -z ${euser} ]] ; then |
526 |
eerror "No user specified !" |
527 |
die "Cannot call echown without a user" |
528 |
fi |
529 |
|
530 |
# get the group |
531 |
local egroup=$1; shift |
532 |
if [[ -z ${egroup} ]] ; then |
533 |
eerror "No group specified !" |
534 |
die "Cannot call echown without a group" |
535 |
fi |
536 |
|
537 |
local euid |
538 |
local egid |
539 |
euid=$(egetuid "${euser}") |
540 |
egid=$(egetgid "${egroup}") |
541 |
|
542 |
einfo chown ${euid}:${egid} $@ |
543 |
|
544 |
chown ${euid}:${egid} $@ || die |
545 |
} |
546 |
|
547 |
# @DESCRIPTION: |
548 |
# fowners honoring the ${ROOT} variable. |
549 |
efowners() { |
550 |
# get the user |
551 |
local euser=$1; shift |
552 |
if [[ -z ${euser} ]] ; then |
553 |
eerror "No user specified !" |
554 |
die "Cannot call echown without a user" |
555 |
fi |
556 |
|
557 |
# get the group |
558 |
local egroup=$1; shift |
559 |
if [[ -z ${egroup} ]] ; then |
560 |
eerror "No group specified !" |
561 |
die "Cannot call echown without a group" |
562 |
fi |
563 |
|
564 |
local euid |
565 |
local egid |
566 |
euid=$(egetuid "${euser}") |
567 |
egid=$(egetgid "${egroup}") |
568 |
|
569 |
einfo fowners ${euid}:${egid} $@ |
570 |
|
571 |
fowners ${euid}:${egid} $@ || die |
572 |
} |
573 |
|
466 |
fi |
574 |
fi |