]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-user_group.sh
- fixed
[packages/rpm.git] / rpm-user_group.sh
1 #!/bin/sh
2
3 [ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
4 [ -z "$RPM_SCRIPTVERBOSITY" ] && RPM_SCRIPTVERBOSITY=5
5
6 if [ -x /usr/bin/banner.sh ]; then
7         BANNERCMD="/usr/bin/banner.sh "
8         BANNERPARA="-s -M user-group.error"
9 else
10         BANNERCMD="cat"
11         BANNERPARA=""
12 fi
13
14 if [ "$1" = user -o "$1" = group ]; then
15         MODE=$1
16 else
17         echo ERROR
18         exit 2
19 fi
20 shift
21
22 bannercmd()
23 {
24         if [ "$BANNERCMD" = cat ]; then
25                 echo cat
26         else
27                 if [ "$RPM_SCRIPTVERBOSITY" -lt 2 ]; then
28                         echo "$BANNERCMD -M $1"
29                 else
30                         echo "$BANNERCMD -s -M $1"
31                 fi
32         fi
33 }
34
35 testrm()
36 {
37         [ "$RPM_USERDEL" != yes ] || [ ! -x /bin/rpm ] && return 1
38         [ -z "$1" ] && return 2
39         rpm -q --whatprovides "${MODE}($1)" >/dev/null 2>&1
40         # no package Provides it (strange)
41         [ $? -ne 0 ] && return 0
42         # only current package Provides it
43         [ `rpm -q --whatprovides "${MODE}($1)" | wc -l` -lt 2 ] && return 0
44         return 1
45 }
46
47 if [ "$1" = "testrm" ]; then
48         testrm $2
49         exit $?
50 elif [ "$1" = del ]; then
51         if testrm $2; then
52                 echo "Removing $MODE $2" | `bannercmd "${MODE}del-$2"`
53                 /usr/sbin/${MODE}del $2 || :
54                 if [ -x /usr/sbin/nscd ]; then
55                 case "${MODE}" in
56                 user)
57                         /usr/sbin/nscd -i passwd
58                         ;;
59                 group)
60                         /usr/sbin/nscd -i group
61                         ;;
62                 esac
63                 fi
64         fi
65 elif [ "$MODE" = "user" -a "$1" = "addtogroup" ]; then
66         user="$2"
67         group="$3"
68         groups=$(id -n -G $user)
69         if [[ " $groups " != *\ $group\ * ]]; then
70             echo "Adding user $user to group $group" | `bannercmd "${MODE}mod-$user"`
71                 for grp in $groups $group; do
72                         new="$new${new:+,}$grp"
73                 done
74             usermod -G "$new" $user
75         fi
76 else
77         echo ERROR
78         exit 2
79 fi
This page took 0.031975 seconds and 3 git commands to generate.