diff --git a/sysuser-tools.changes b/sysuser-tools.changes index e576b9a..5df4ccc 100644 --- a/sysuser-tools.changes +++ b/sysuser-tools.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Aug 5 14:25:14 UTC 2024 - Thorsten Kukuk + +- Implement UID:GID support for busybox +- Reenable UID:GID support + ------------------------------------------------------------------- Sat Aug 3 06:09:03 UTC 2024 - Thorsten Kukuk diff --git a/sysusers2shadow.sh b/sysusers2shadow.sh index ee7a5fd..0a1a69f 100644 --- a/sysusers2shadow.sh +++ b/sysusers2shadow.sh @@ -52,12 +52,11 @@ else continue fi - # Split user and Group id - #userGrouArr=(${2//:/ }) - #USER_ID=${userGrouArr[0]} - #GROUP_ID=${userGrouArr[1]} - USER_ID=$2 - GROUP_ID="" + # Split user and Group id. Must work with busybox sh. + case $2 in + (*:*) USER_ID=${2%:*} GROUP_ID=${2##*:};; + (*) USER_ID=$2 GROUP_ID="";; + esac if [ -n "$USER_ID" ] && [ "$USER_ID" != "-" ]; then ARGUMENTS="-u $USER_ID $ARGUMENTS" @@ -89,9 +88,13 @@ else run /usr/sbin/useradd -r -c "$3" -d "${homedir}" $ARGUMENTS elif [ -x "$busybox" ]; then + if [ -n "$GROUP_ID" ] && [ "$GROUP_ID" != "-" ]; then + run $busybox adduser -S -H -g "$3" -G "GROUP_ID" -h "${homedir}" $ARGUMENTS + else /usr/bin/getent group "$1" >> /dev/null || $busybox addgroup -S "$1" run $busybox adduser -S -H -g "$3" -G "$1" -h "${homedir}" $ARGUMENTS + fi else echo "ERROR: neither useradd nor busybox found!" exit 1 @@ -100,9 +103,9 @@ else m) shift if [ -x /usr/sbin/usermod ] ; then - run /usr/sbin/usermod -a -G "$2" "$1" + run /usr/sbin/usermod -a -G "$USER_ID" "$1" elif [ -x "$busybox" ]; then - run $busybox addgroup "$1" "$2" + run $busybox addgroup "$1" "$USER_ID" else echo "ERROR: neither usermod nor busybox found!" exit 1