]> git.pld-linux.org Git - packages/rpm.git/blame - rpm-user_group.sh
- rel 37
[packages/rpm.git] / rpm-user_group.sh
CommitLineData
7c689a45 1#!/bin/sh
2
3[ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
4[ -z "$RPM_SCRIPTVERBOSITY" ] && RPM_SCRIPTVERBOSITY=5
5
b0daadbc
ER
6# aborts program abnormally
7die() {
8 local rc=${2:-1}
9 if [ "$1" ]; then
10 echo >&2 "ERROR: $1"
11 else
12 echo >&2 "ERROR"
13 fi
14 exit $rc
15}
7c689a45 16
b0daadbc 17bannercmd() {
e88c759f 18 if [ "$BANNERCMD" = cat ]; then
1257c400 19 echo cat
20 else
21 if [ "$RPM_SCRIPTVERBOSITY" -lt 2 ]; then
1257c400 22 echo "$BANNERCMD -M $1"
eeb844ab 23 else
24 echo "$BANNERCMD -s -M $1"
1257c400 25 fi
26 fi
27}
28
b0daadbc
ER
29testrm() {
30 local mode=$1
31 local name=$2
32
d0fbac1a 33 [ "$RPM_USERDEL" != yes ] || [ ! -x /bin/rpm ] && return 1
b0daadbc
ER
34 [ -z "$name" ] && return 2
35 rpm -q --whatprovides "$mode($name)" >/dev/null 2>&1
7c689a45 36 # no package Provides it (strange)
37 [ $? -ne 0 ] && return 0
38 # only current package Provides it
b0daadbc 39 [ $(rpm -q --whatprovides "$mode($name)" | wc -l) -lt 2 ] && return 0
7c689a45 40 return 1
41}
42
b0daadbc
ER
43groupremove() {
44 local name="$1"
45 local gid=$(getgid "$name" 2>/dev/null)
46
47 echo "Removing group $name" | $(bannercmd "groupdel-$name")
48 /usr/sbin/groupdel $name || :
49
50 # flush nscd cache
51 [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i group
52}
53
54userremove() {
55 local uid=$(id -un "$name" 2>/dev/null)
56
57 echo "Removing user $name" | $(bannercmd "userdel-$name")
58 /usr/sbin/userdel $name || :
59
60 # flush nscd cache
61 [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i passwd
62}
63
64remove() {
65 local mode=$1
66 local name=$2
67 if ! testrm $mode $name; then
68 return
69 fi
70
71 ${mode}remove $name
72}
73
74addtogroup() {
75 local user="$1"
76 local group="$2"
77 local uid=$(id -un "$user" 2>/dev/null)
78 local gid=$(getgid "$group" 2>/dev/null)
79
80 if [ -z "$gid" ]; then
81 if [ "$quiet" ]; then
82 return
83 else
84 die "group $group does not exist"
85 fi
86 fi
87
88 if [ -z "$uid" ]; then
89 if [ "$quiet" ]; then
90 return
91 else
92 die "user $user does not exist"
89b9c531 93 fi
7c689a45 94 fi
b0daadbc 95
45abb9e9
ER
96 groups=$(id -n -G $user)
97 if [[ " $groups " != *\ $group\ * ]]; then
b0daadbc 98 echo "Adding user $user to group $group" | $(bannercmd "${MODE}mod-$user")
45abb9e9
ER
99 for grp in $groups $group; do
100 new="$new${new:+,}$grp"
101 done
b0daadbc 102 usermod -G "$new" $user
13f70a2c 103 fi
b0daadbc
ER
104}
105
106if [ -x /usr/bin/banner.sh ]; then
107 BANNERCMD="/usr/bin/banner.sh "
108 BANNERPARA="-s -M user-group.error"
109else
110 BANNERCMD="cat"
111 BANNERPARA=""
112fi
113
114if [ "$1" = user -o "$1" = group ]; then
115 MODE=$1
116 shift
7c689a45 117else
b0daadbc 118 die "Invalid usage"
7c689a45 119fi
b0daadbc
ER
120
121# quiet mode cames from $ENV
122quiet=$quiet
123
124case "$1" in
125testrm)
126 testrm $MODE $2
127 exit $?
128 ;;
129
130del)
131 remove $MODE $2
132 exit $?
133 ;;
134
135addtogroup)
136 if [ "$MODE" = "user" ]; then
137 if [ -z "$2" -o -z "$3" ]; then
138 die "Invalid usage"
139 fi
140 addtogroup $2 $3
141 fi
142 ;;
143*)
144 die "Invalid usage" 2
145esac
This page took 0.101947 seconds and 4 git commands to generate.