X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=rpm-user_group.sh;h=ee662e2153360dced797a5a51348aee562a0dd83;hp=0d524af3ac65b52506bd5307526c6fd5de247921;hb=71622d6e98d7542b8c266243a3d60f5e0d8743c2;hpb=13f70a2c9945d1c89159b1ca036b3a56fbee879e diff --git a/rpm-user_group.sh b/rpm-user_group.sh index 0d524af..ee662e2 100644 --- a/rpm-user_group.sh +++ b/rpm-user_group.sh @@ -3,6 +3,14 @@ [ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm [ -z "$RPM_SCRIPTVERBOSITY" ] && RPM_SCRIPTVERBOSITY=5 +if [ -x /usr/bin/banner.sh ]; then + BANNERCMD="/usr/bin/banner.sh " + BANNERPARA="-s -M user-group.error" +else + BANNERCMD="cat" + BANNERPARA="" +fi + if [ "$1" = user -o "$1" = group ]; then MODE=$1 else @@ -11,9 +19,22 @@ else fi shift +bannercmd() +{ + if [ "$BANNERCMD" = cat ]; then + echo cat + else + if [ "$RPM_SCRIPTVERBOSITY" -lt 2 ]; then + echo "$BANNERCMD -M $1" + else + echo "$BANNERCMD -s -M $1" + fi + fi +} + testrm() { - [ "$RPM_USERDEL" != yes ] && return 1 + [ "$RPM_USERDEL" != yes ] || [ ! -x /bin/rpm ] && return 1 [ -z "$1" ] && return 2 rpm -q --whatprovides "${MODE}($1)" >/dev/null 2>&1 # no package Provides it (strange) @@ -28,16 +49,29 @@ if [ "$1" = "testrm" ]; then exit $? elif [ "$1" = del ]; then if testrm $2; then - [ "$RPM_SCRIPTVERBOSITY" -lt 2 ] || echo "Removing $MODE $2" + 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 - [ "$RPM_SCRIPTVERBOSITY" -lt 2 ] || echo "Adding user $USER to group $GROUP" - 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