]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-user_group.sh
- don't use USER/GROUP variables (read-only in some shells like bash)
[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 | $BANNERCMD $BANNERPARA
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         CUSER=$2
67         CGROUP=$3
68         CGROUPS=`id -n -G $CUSER | sed -e's/^[^ ]* //;s/ /,/g'`
69         if ! echo ",$CGROUPS," | grep -q ",$CGROUP," ; then
70             echo "Adding user $CUSER to group $CGROUP" | `bannercmd "${MODE}mod-$CUSER"`
71             usermod -G "$CGROUPS,$CGROUP" $CUSER
72         fi
73 else
74         echo ERROR
75         exit 2
76 fi
This page took 0.02879 seconds and 4 git commands to generate.