Browse Source

Add the ability to set user groups, new shell library

master
Peter J. Jones 7 years ago
parent
commit
7dd6a1d8f2
5 changed files with 73 additions and 0 deletions
  1. 33
    0
      debian/bin/set-user-groups.sh
  2. 18
    0
      debian/mk/groups.mk
  3. 15
    0
      generic/lib/util.sh
  4. 3
    0
      generic/mk/init.mk
  5. 4
    0
      ubuntu/mk/groups.mk

+ 33
- 0
debian/bin/set-user-groups.sh View File

@@ -0,0 +1,33 @@
#!/bin/sh

################################################################################
. $GRUNT_LIB/util.sh

################################################################################
if [ $# -le 1 ]; then
echo "Usage: "`basename $0`" username group [group...]"
exit 1
fi

################################################################################
username=$1
existing=`groups $1|sed 's/^.*: *//'`

################################################################################
# Don't shift so that the username is allowed in the group list.

################################################################################
for e in $*; do
if ! grunt_array_includes_element $e $existing; then
echo "adduser $username $e"
adduser $username $e
fi
done

################################################################################
for e in $existing; do
if ! grunt_array_includes_element $e $*; then
echo "deluser $username $e"
deluser $username $e
fi
done

+ 18
- 0
debian/mk/groups.mk View File

@@ -0,0 +1,18 @@
# -*- mode: makefile-gmake -*-

################################################################################
include $(GRUNT_HOME)/generic/mk/init.mk

################################################################################
# Place a user in all the groups listed. Removes the user from any
# groups not listed. The list of groups doesn't need to include the
# private group named after the username.
#
# $1: The username
# $2: The list of groups
define GRUNT_SET_USER_GROUPS
.PHONEY: grunt_set_user_groups_for_$(1)
install: grunt_set_user_groups_for_$(1)
grunt_set_user_groups_for_$(1):
@ $(GRUNT_HOME)/debian/bin/set-user-groups.sh $(1) $(2)
endef

+ 15
- 0
generic/lib/util.sh View File

@@ -0,0 +1,15 @@
#!/bin/sh

################################################################################
# $1 The element
# $* The Array
grunt_array_includes_element () {
grunt_ary_element=$1
shift

for grunt_e in $*; do
[ "$grunt_ary_element" = "$grunt_e" ] && return 0
done

return 1
}

+ 3
- 0
generic/mk/init.mk View File

@@ -16,6 +16,9 @@ $(if $(GRUNT_OS),,$(eval include $(GRUNT_HOME)/generic/mk/os.mk))
include $(GRUNT_HOME)/generic/mk/dirs.mk
include $(GRUNT_HOME)/generic/mk/files.mk

################################################################################
export GRUNT_LIB = $(GRUNT_HOME)/generic/lib

################################################################################
GRUNT_INIT_DONE = YES


+ 4
- 0
ubuntu/mk/groups.mk View File

@@ -0,0 +1,4 @@
# -*- mode: makefile-gmake -*-

################################################################################
include $(GRUNT_HOME)/debian/mk/groups.mk

Loading…
Cancel
Save