X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=rpm-user_group.sh;h=ee662e2153360dced797a5a51348aee562a0dd83;hb=5c10b9377eda31f5c93bd1a9be834c5cffde3fe2;hp=b4389539b78c15c83aeec8ab723f60f9d7f46017;hpb=d0fbac1a45d10e791e542b25d02f2526189ef842;p=packages%2Frpm.git diff --git a/rpm-user_group.sh b/rpm-user_group.sh index b438953..ee662e2 100644 --- a/rpm-user_group.sh +++ b/rpm-user_group.sh @@ -14,14 +14,14 @@ fi if [ "$1" = user -o "$1" = group ]; then MODE=$1 else - echo ERROR | $BANNERCMD $BANNERPARA + echo ERROR exit 2 fi shift bannercmd() { - if [ "$BANNERCMD" == cat ]; then + if [ "$BANNERCMD" = cat ]; then echo cat else if [ "$RPM_SCRIPTVERBOSITY" -lt 2 ]; then @@ -51,14 +51,27 @@ elif [ "$1" = del ]; then if testrm $2; then echo "Removing $MODE $2" | `bannercmd "${MODE}del-$2"` /usr/sbin/${MODE}del $2 || : + if [ -x /usr/sbin/nscd ]; then + case "${MODE}" in + user) + /usr/sbin/nscd -i passwd + ;; + group) + /usr/sbin/nscd -i group + ;; + esac + fi fi elif [ "$MODE" = "user" -a "$1" = "addtogroup" ]; then - USER=$2 - GROUP=$3 - GROUPS=`id -n -G $USER | sed -e's/^[^ ]* //;s/ /,/g'` - if ! echo ",$GROUPS," | grep -q ",$GROUP," ; then - echo "Adding user $USER to group $GROUP" | `bannercmd "${MODE}mod-$USER"` - usermod -G "$GROUPS,$GROUP" $USER + user="$2" + group="$3" + groups=$(id -n -G $user) + if [[ " $groups " != *\ $group\ * ]]; then + echo "Adding user $user to group $group" | `bannercmd "${MODE}mod-$user"` + for grp in $groups $group; do + new="$new${new:+,}$grp" + done + usermod -G "$new" $user fi else echo ERROR