Lines 108-114
Link Here
|
108 |
if [[ -n $(egetent passwd "${euser}") ]] ; then |
108 |
if [[ -n $(egetent passwd "${euser}") ]] ; then |
109 |
return 0 |
109 |
return 0 |
110 |
fi |
110 |
fi |
111 |
elog "Adding user '${euser}' to your system ..." |
111 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
112 |
einfo "Adding user '${euser}' to your system ..." |
113 |
else |
114 |
einfo "Adding user '${euser}' to ${ROOT} ..." |
115 |
fi |
112 |
|
116 |
|
113 |
# options to pass to useradd |
117 |
# options to pass to useradd |
114 |
local opts=() |
118 |
local opts=() |
Lines 213-218
Link Here
|
213 |
;; |
217 |
;; |
214 |
|
218 |
|
215 |
*) |
219 |
*) |
|
|
220 |
if [[ "${ROOT}" != "/" ]] ; then |
221 |
opts+=( --prefix "${ROOT}" ) |
222 |
fi |
216 |
useradd -M -N -r "${opts[@]}" "${euser}" || die |
223 |
useradd -M -N -r "${opts[@]}" "${euser}" || die |
217 |
;; |
224 |
;; |
218 |
esac |
225 |
esac |
Lines 220-226
Link Here
|
220 |
if [[ -n ${create_home} && ! -e ${ROOT}/${ehome} ]] ; then |
227 |
if [[ -n ${create_home} && ! -e ${ROOT}/${ehome} ]] ; then |
221 |
elog " - Creating ${ehome} in ${ROOT}" |
228 |
elog " - Creating ${ehome} in ${ROOT}" |
222 |
mkdir -p "${ROOT}/${ehome}" |
229 |
mkdir -p "${ROOT}/${ehome}" |
223 |
chown "${euser}" "${ROOT}/${ehome}" |
230 |
chown "${euid}" "${ROOT}/${ehome}" |
224 |
chmod 755 "${ROOT}/${ehome}" |
231 |
chmod 755 "${ROOT}/${ehome}" |
225 |
fi |
232 |
fi |
226 |
} |
233 |
} |
Lines 262-268
Link Here
|
262 |
if [[ -n $(egetent group "${egroup}") ]] ; then |
269 |
if [[ -n $(egetent group "${egroup}") ]] ; then |
263 |
return 0 |
270 |
return 0 |
264 |
fi |
271 |
fi |
265 |
elog "Adding group '${egroup}' to your system ..." |
272 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
273 |
einfo "Adding group '${egroup}' to your system ..." |
274 |
else |
275 |
einfo "Adding group '${egroup}' to ${ROOT} ..." |
276 |
fi |
266 |
|
277 |
|
267 |
# handle gid |
278 |
# handle gid |
268 |
local egid=$1; shift |
279 |
local egid=$1; shift |
Lines 318-325
Link Here
|
318 |
else |
329 |
else |
319 |
opts="-g ${egid}" |
330 |
opts="-g ${egid}" |
320 |
fi |
331 |
fi |
321 |
# We specify -r so that we get a GID in the system range from login.defs |
332 |
|
322 |
groupadd -r ${opts} "${egroup}" || die |
333 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
334 |
# We specify -r so that we get a GID in the system range from login.defs |
335 |
groupadd -r ${opts} "${egroup}" || die |
336 |
else |
337 |
groupadd --prefix "${ROOT}" -r ${opts} "${egroup}" || die |
338 |
fi |
323 |
;; |
339 |
;; |
324 |
esac |
340 |
esac |
325 |
} |
341 |
} |
Lines 372-378
Link Here
|
372 |
if [[ ! -e ${ROOT}/${ehome} ]] ; then |
388 |
if [[ ! -e ${ROOT}/${ehome} ]] ; then |
373 |
elog " - Creating ${ehome} in ${ROOT}" |
389 |
elog " - Creating ${ehome} in ${ROOT}" |
374 |
mkdir -p "${ROOT}/${ehome}" |
390 |
mkdir -p "${ROOT}/${ehome}" |
375 |
chown "${euser}" "${ROOT}/${ehome}" |
391 |
echown "${euser}" "${ROOT}/${ehome}" |
376 |
chmod 755 "${ROOT}/${ehome}" |
392 |
chmod 755 "${ROOT}/${ehome}" |
377 |
fi |
393 |
fi |
378 |
|
394 |
|
Lines 387-393
Link Here
|
387 |
;; |
403 |
;; |
388 |
|
404 |
|
389 |
*) |
405 |
*) |
390 |
usermod -d "${ehome}" "${euser}" && return 0 |
406 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
407 |
usermod -d "${ehome}" "${euser}" && return 0 |
408 |
else |
409 |
usermod --prefix "${ROOT}" -d "${ehome}" "${euser}" && return 0 |
410 |
fi |
391 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update home" |
411 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update home" |
392 |
eerror "There was an error when attempting to update the home directory for ${euser}" |
412 |
eerror "There was an error when attempting to update the home directory for ${euser}" |
393 |
eerror "Please update it manually on your system (as root):" |
413 |
eerror "Please update it manually on your system (as root):" |
Lines 448-454
Link Here
|
448 |
;; |
468 |
;; |
449 |
|
469 |
|
450 |
*) |
470 |
*) |
451 |
usermod -s "${eshell}" "${euser}" && return 0 |
471 |
if [[ "${ROOT}" == "/" ]] ; then |
|
|
472 |
usermod -s "${eshell}" "${euser}" && return 0 |
473 |
else |
474 |
usermod --prefix "${ROOT}" -s "${eshell}" "${euser}" && return 0 |
475 |
fi |
452 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update shell" |
476 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update shell" |
453 |
eerror "There was an error when attempting to update the shell for ${euser}" |
477 |
eerror "There was an error when attempting to update the shell for ${euser}" |
454 |
eerror "Please update it manually on your system (as root):" |
478 |
eerror "Please update it manually on your system (as root):" |
Lines 574-579
Link Here
|
574 |
;; |
598 |
;; |
575 |
|
599 |
|
576 |
*) |
600 |
*) |
|
|
601 |
if [[ "${ROOT}" != "/" ]] ; then |
602 |
opts+=( --prefix "${ROOT}" ) |
603 |
fi |
577 |
usermod "${opts[@]}" "${euser}" && return 0 |
604 |
usermod "${opts[@]}" "${euser}" && return 0 |
578 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update groups" |
605 |
[[ $? == 8 ]] && eerror "${euser} is in use, cannot update groups" |
579 |
eerror "There was an error when attempting to update the groups for ${euser}" |
606 |
eerror "There was an error when attempting to update the groups for ${euser}" |
Lines 583-586
Link Here
|
583 |
esac |
610 |
esac |
584 |
} |
611 |
} |
585 |
|
612 |
|
|
|
613 |
# @USAGE: <user>:<group> <path> |
614 |
# @DESCRIPTION: |
615 |
# chown portage equivalent, honoring the ${ROOT} variable. |
616 |
echown() { |
617 |
# get the user |
618 |
local a=$1; shift |
619 |
if [[ -z ${a} ]] ; then |
620 |
eerror "No user specified !" |
621 |
die "Cannot call echown without a user" |
622 |
fi |
623 |
|
624 |
local euid |
625 |
local egid |
626 |
|
627 |
IFS=':' read -a fields <<< "${a}" |
628 |
|
629 |
euser=${fields[0]} |
630 |
egroup=${fields[1]} |
631 |
if [[ "${euser}" != "" ]]; then |
632 |
euid="$(egetuid "${euser}")" |
633 |
fi |
634 |
if [[ "${egroup}" != "" ]]; then |
635 |
egid="$(egetgid "${egroup}")" |
636 |
fi |
637 |
|
638 |
local opt="" |
639 |
|
640 |
if [[ "${euid}" != "" ]]; then |
641 |
opt+="${euid}" |
642 |
fi |
643 |
if [[ "${egid}" != "" ]] ; then |
644 |
opt+=":${egid}" |
645 |
fi |
646 |
|
647 |
chown "${opt}" "$@" || |
648 |
} |
649 |
|
650 |
# @DESCRIPTION: |
651 |
# fowners honoring the ${ROOT} variable. |
652 |
efowners() { |
653 |
# get the user:group |
654 |
local a=$1; shift |
655 |
if [[ -z ${a} ]] ; then |
656 |
eerror "No user:group specified !" |
657 |
die "Cannot call echown without a user" |
658 |
fi |
659 |
|
660 |
local euid |
661 |
local egid |
662 |
|
663 |
IFS=':' read -a fields <<< "${a}" |
664 |
|
665 |
euser=${fields[0]} |
666 |
egroup=${fields[1]} |
667 |
if [[ "${euser}" != "" ]] ; then |
668 |
euid="$(egetuid "${euser}")" |
669 |
fi |
670 |
if [[ "${egroup}" != "" ]] ; then |
671 |
egid="$(egetgid "${egroup}")" |
672 |
fi |
673 |
|
674 |
local opt="" |
675 |
|
676 |
if [[ "${euid}" != "" ]]; then |
677 |
opt+="${euid}" |
678 |
fi |
679 |
if [[ "${egid}" != "" ]] ; then |
680 |
opt+=":${egid}" |
681 |
fi |
682 |
|
683 |
fowners "${opt}" "$@" || die |
684 |
} |
685 |
|
586 |
fi |
686 |
fi |