diff --git a/cdist/conf/type/__user_groups/explorer/oldusermod b/cdist/conf/type/__user_groups/explorer/oldusermod new file mode 100644 index 00000000..6ef25b13 --- /dev/null +++ b/cdist/conf/type/__user_groups/explorer/oldusermod @@ -0,0 +1,21 @@ +#!/bin/sh +# +# 2015 Heule Daniel (hda at sfs.biz) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +usermod --help | grep -q -- '-A group' && echo true || echo false diff --git a/cdist/conf/type/__user_groups/gencode-remote b/cdist/conf/type/__user_groups/gencode-remote index 9f11dd16..65404bfc 100755 --- a/cdist/conf/type/__user_groups/gencode-remote +++ b/cdist/conf/type/__user_groups/gencode-remote @@ -20,6 +20,15 @@ user="$(cat "$__object/parameter/user" 2>/dev/null || echo "$__object_id")" state_should="$(cat "$__object/parameter/state")" +oldusermod="$(cat "$__object/explorer/oldusermod")" + +if [ "$oldusermod" = "true" ]; then + addparam="-A" + delparam="-R" +else + addparam="-a" + delparam="-d" +fi mkdir "$__object/files" # file has to be sorted for comparison with `comm` @@ -28,11 +37,11 @@ sort "$__object/parameter/group" > "$__object/files/group.sorted" case "$state_should" in present) changed_groups="$(comm -13 "$__object/explorer/group" "$__object/files/group.sorted")" - action="-a" + action="$addparam" ;; absent) changed_groups="$(comm -12 "$__object/explorer/group" "$__object/files/group.sorted")" - action="-d" + action="$delparam" ;; esac @@ -42,5 +51,9 @@ if [ -z "$changed_groups" ]; then fi for group in $changed_groups; do - echo "gpasswd $action \"$user\" \"$group\"" + if [ "$oldusermod" = "true" ]; then + echo "usermod $action \"$group\" \"$user\"" + else + echo "gpasswd $action \"$user\" \"$group\"" + fi done