]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-user_group.sh
- internal file update (for compatibility with *.mgc generated by file-4.14)
[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 ] && 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         fi
55 elif [ "$MODE" = "user" -a "$1" = "addtogroup" ]; then
56         USER=$2
57         GROUP=$3
58         GROUPS=`id -n -G $USER | sed -e's/^[^ ]* //;s/ /,/g'`
59         if ! echo ",$GROUPS," | grep -q ",$GROUP," ; then
60             echo "Adding user $USER to group $GROUP" | `bannercmd "${MODE}mod-$USER"`
61             usermod -G "$GROUPS,$GROUP" $USER
62         fi
63 else
64         echo ERROR
65         exit 2
66 fi
This page took 0.028778 seconds and 3 git commands to generate.