diff --git a/sysuser-tools.changes b/sysuser-tools.changes index 6ec3470..fa98239 100644 --- a/sysuser-tools.changes +++ b/sysuser-tools.changes @@ -1,30 +1,3 @@ -------------------------------------------------------------------- -Wed Jan 20 15:06:51 UTC 2021 - Thorsten Kukuk - -- Ignore nscd return code - -------------------------------------------------------------------- -Tue Jan 19 15:15:41 UTC 2021 - Thorsten Kukuk - -- If systemd-sysusers is used to create a new user/group, invalidate - the nscd passwd and group cache to make the new user/group - visible immediately as workaround [bsc#1181121]. - Needs to be removed after sytemd-sysusers get's fixed, since we - invalidate the cache even if the user/group file wasn't changed. - -------------------------------------------------------------------- -Sun Jan 17 21:16:25 UTC 2021 - Thorsten Kukuk - -- An "u" in a sysusers.d file will create an user and a group. - Create provides for both, user and group. - -------------------------------------------------------------------- -Thu Jan 14 14:30:20 UTC 2021 - Thorsten Kukuk - -- Use systemd-sysusers as default to create and update the user - account. Fixes the problem that a modified sysusers config file - get's ignored by useradd and adduser [bsc#1180549]. - ------------------------------------------------------------------- Fri Dec 4 10:54:00 UTC 2020 - Ludwig Nussel diff --git a/sysuser-tools.spec b/sysuser-tools.spec index 0a9f429..0914189 100644 --- a/sysuser-tools.spec +++ b/sysuser-tools.spec @@ -1,7 +1,7 @@ # # spec file for package sysuser-tools # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -38,7 +38,7 @@ Generate auto provides for system users. %package -n sysuser-shadow Summary: Tool to execute sysusers.d with shadow utilities Group: System/Packages -Requires(pre): (/usr/sbin/useradd or busybox or /usr/bin/systemd-sysusers) +PreReq: useradd_or_adduser_dep # prefer original shadow over busybox by default Suggests: shadow diff --git a/sysusers.prov b/sysusers.prov index 365eb31..88c8bb0 100644 --- a/sysusers.prov +++ b/sysusers.prov @@ -11,7 +11,6 @@ parse() echo "group($2)" elif [ "$1" = 'u' ]; then echo "user($2)" - echo "group($2)" fi done } diff --git a/sysusers2shadow.sh b/sysusers2shadow.sh index 08a7209..6440475 100644 --- a/sysusers2shadow.sh +++ b/sysusers2shadow.sh @@ -7,98 +7,85 @@ run() { "$@" } -if [ -x /usr/bin/systemd-sysusers ]; then +# Absolute path to busybox, if found +busybox= +for i in /bin/busybox /usr/bin/busybox; do [ -x "$i" ] && busybox=$i; done - # Use systemd-sysusers and let it read the input directly from stdin - /usr/bin/systemd-sysusers - - # We need to clear the nscd cache, as systemd-sysusers could have - # triggered a negative cache entry - if [ -x /usr/sbin/nscd ]; then - /usr/sbin/nscd -i passwd ||: - /usr/sbin/nscd -i group ||: - fi -else - - # Absolute path to busybox, if found - busybox= - for i in /bin/busybox /usr/bin/busybox; do [ -x "$i" ] && busybox=$i; done - - while read LINE - do +while read LINE +do # "eval set" to do proper splitting while respecting quotes eval set -- $LINE case "${1-}" in - \#*|"") - ;; - g) + \#*|"") + ;; + g) shift ARGUMENTS="$1" if [ -n "${2-}" ] && [ "$2" != "-" ]; then - ARGUMENTS="-g $2 $ARGUMENTS" + ARGUMENTS="-g $2 $ARGUMENTS" fi if ! /usr/bin/getent group "$1" >> /dev/null; then - if [ -x "/usr/sbin/groupadd" ]; then - run /usr/sbin/groupadd -r $ARGUMENTS - elif [ -x "$busybox" ]; then - run $busybox addgroup -S $ARGUMENTS - else - echo "ERROR: neither groupadd nor busybox found!" - exit 1 - fi + if [ -x "/usr/sbin/groupadd" ]; then + run /usr/sbin/groupadd -r $ARGUMENTS + elif [ -x "$busybox" ]; then + run $busybox addgroup -S $ARGUMENTS + else + echo "ERROR: neither groupadd nor busybox found!" + exit 1 + fi fi ;; - u) + u) shift ARGUMENTS="$1" if [ -n "${2-}" ] && [ "$2" != "-" ]; then - ARGUMENTS="-u $2 $ARGUMENTS" + ARGUMENTS="-u $2 $ARGUMENTS" fi homedir="/" # If null, empty or '-' if [ "${4:--}" != "-" ]; then - homedir="$4" + homedir="$4" fi if [ -x /usr/sbin/useradd ]; then - if ! /usr/bin/getent passwd "$1" >> /dev/null; then - # this is useradd/shadow specific - if /usr/bin/getent group "$1" >> /dev/null; then - ARGUMENTS="-g $1 $ARGUMENTS" - else - ARGUMENTS="-U $ARGUMENTS" + if ! /usr/bin/getent passwd "$1" >> /dev/null; then + # this is useradd/shadow specific + if /usr/bin/getent group "$1" >> /dev/null; then + ARGUMENTS="-g $1 $ARGUMENTS" + else + ARGUMENTS="-U $ARGUMENTS" + fi + + run /usr/sbin/useradd -r -s /sbin/nologin -c "$3" -d "${homedir}" $ARGUMENTS fi - - run /usr/sbin/useradd -r -s /sbin/nologin -c "$3" -d "${homedir}" $ARGUMENTS - fi elif [ -x "$busybox" ]; then - /usr/bin/getent group "$1" >> /dev/null || $busybox addgroup -S "$1" + /usr/bin/getent group "$1" >> /dev/null || $busybox addgroup -S "$1" - if ! /usr/bin/getent passwd "$1" >> /dev/null; then - run $busybox adduser -S -H -s /sbin/nologin -g "$3" -G "$1" -h "${homedir}" $ARGUMENTS - fi + if ! /usr/bin/getent passwd "$1" >> /dev/null; then + run $busybox adduser -S -H -s /sbin/nologin -g "$3" -G "$1" -h "${homedir}" $ARGUMENTS + fi else - echo "ERROR: neither useradd nor busybox found!" - exit 1 + echo "ERROR: neither useradd nor busybox found!" + exit 1 fi - ;; - m) + ;; + m) shift if [ -x /usr/sbin/usermod ] ; then - run /usr/sbin/usermod -a -G $2 $1 + run /usr/sbin/usermod -a -G $2 $1 elif [ -x "$busybox" ]; then - run $busybox addgroup $1 $2 + run $busybox addgroup $1 $2 else - echo "ERROR: neither usermod nor busybox found!" - exit 1 + echo "ERROR: neither usermod nor busybox found!" + exit 1 fi - ;; - r) + ;; + r) echo "range option ignored: \"$LINE\"" ;; - *) - echo "Syntax Error: \"$LINE\"" - exit 1 - ;; + *) + echo "Syntax Error: \"$LINE\"" + exit 1 + ;; esac - done -fi +done