Skip to content

Commit dc6eecb

Browse files
authored
Merge pull request #9 from sthibaul/master
Support uid:gid
2 parents 3039622 + 2792238 commit dc6eecb

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

sysusers

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ add_group() {
2222
}
2323

2424
add_user() {
25-
# add_user <name> <id> <gecos> <home>
25+
# add_user <name> <uid> <gid> <gecos> <home>
2626
if ! id "$1" >/dev/null 2>&1; then
2727
if [ "$2" = '-' ]; then
28-
useradd --prefix "$root" -rc "$3" -g "$1" -d "$4" -s '/sbin/nologin' "$1"
28+
if [ "$3" = '-' ]; then
29+
useradd --prefix "$root" -rc "$4" -g "$1" -d "$5" -s '/sbin/nologin' "$1"
30+
else
31+
useradd --prefix "$root" -rc "$4" -g "$3" -d "$5" -s '/sbin/nologin' "$1"
32+
fi
2933
else
30-
useradd --prefix "$root" -rc "$3" -u "$2" -g "$1" -d "$4" -s '/sbin/nologin' "$1"
34+
useradd --prefix "$root" -rc "$4" -u "$2" -g "$3" -d "$5" -s '/sbin/nologin' "$1"
3135
fi
3236
passwd --prefix "$root" -l "$1" >/dev/null 2>&1
3337
fi
@@ -91,13 +95,22 @@ parse_string() {
9195
fi
9296

9397
case "${type}" in
94-
[gu])
95-
case "${id}" in 65535|4294967295) warninvalid; return; esac
98+
u)
99+
uid=${id%%:*}
100+
gid=${id##*:}
101+
case "${uid}" in 65535|4294967295) warninvalid; return; esac
102+
case "${gid}" in 65535|4294967295) warninvalid; return; esac
103+
if [ "${uid}" != '-' ] && [ "${gid}" = '-' ]; then warninvalid; return; fi
96104
[ "${home:--}" = '-' ] && home='/'
97-
add_group "${name}" "${id}"
98-
if [ "${type}" = u ]; then
99-
add_user "${name}" "${id}" "${gecos}" "${home}"
105+
if [ "${uid}" = "${id}" ]; then
106+
# No specific gid, create group for this user
107+
add_group "${name}" "${id}"
100108
fi
109+
add_user "${name}" "${uid}" "${gid}" "${gecos}" "${home}"
110+
;;
111+
g)
112+
case "${id}" in 65535|4294967295) warninvalid; return; esac
113+
add_group "${name}" "${id}"
101114
;;
102115
m)
103116
add_group "${id}" '-'

0 commit comments

Comments
 (0)