From 62bd5898aa9a03b2941a1bba3a7028bb7e71a70f Mon Sep 17 00:00:00 2001 From: Daniel Heule Date: Fri, 8 May 2015 14:08:53 +0200 Subject: [PATCH 1/4] fix for older linuxes where gpasswd doesn't have the relevant options ... --- cdist/conf/type/__user_groups/gencode-remote | 24 +++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cdist/conf/type/__user_groups/gencode-remote b/cdist/conf/type/__user_groups/gencode-remote index 9f11dd16..ad83ed61 100755 --- a/cdist/conf/type/__user_groups/gencode-remote +++ b/cdist/conf/type/__user_groups/gencode-remote @@ -21,6 +21,20 @@ user="$(cat "$__object/parameter/user" 2>/dev/null || echo "$__object_id")" state_should="$(cat "$__object/parameter/state")" +os_version="$(cat "$__global/explorer/os_version")" +case "$os_version" in + SUSE\ Linux\ Enterprise\ Server\ 11*VERSION\ =\ 11*) + old=yes + addparam="-A" + delparam="-R" + ;; + *) + old=no + addparam="-a" + delparam="-d" + ;; +esac + mkdir "$__object/files" # file has to be sorted for comparison with `comm` sort "$__object/parameter/group" > "$__object/files/group.sorted" @@ -28,11 +42,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 +56,9 @@ if [ -z "$changed_groups" ]; then fi for group in $changed_groups; do - echo "gpasswd $action \"$user\" \"$group\"" + if [ "$old" = "no" ]; then + echo "gpasswd $action \"$user\" \"$group\"" + else + echo "usermod $action \"$group\" \"$user\"" + fi done From 56168cda6550e6e0d5c543b2dfd78d494a47d513 Mon Sep 17 00:00:00 2001 From: Daniel Heule Date: Fri, 8 May 2015 14:21:39 +0200 Subject: [PATCH 2/4] fix for older linuxes where gpasswd doesn't have the relevant options ... --- cdist/conf/type/__user_groups/gencode-remote | 1 + 1 file changed, 1 insertion(+) diff --git a/cdist/conf/type/__user_groups/gencode-remote b/cdist/conf/type/__user_groups/gencode-remote index ad83ed61..5ae391af 100755 --- a/cdist/conf/type/__user_groups/gencode-remote +++ b/cdist/conf/type/__user_groups/gencode-remote @@ -1,6 +1,7 @@ #!/bin/sh # # 2012 Steven Armstrong (steven-cdist at armstrong.cc) +# 2015 Daniel Heule ( hda at sfs.biz ) # # This file is part of cdist. # From e89ca14e66c10502ecf1c66454b8337372e2523d Mon Sep 17 00:00:00 2001 From: Daniel Heule Date: Mon, 11 May 2015 09:06:27 +0200 Subject: [PATCH 3/4] autodedtection of old usermod implementations ... --- .../type/__user_groups/explorer/oldusermod | 21 +++++++++++++++++++ cdist/conf/type/__user_groups/gencode-remote | 12 ++++------- 2 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 cdist/conf/type/__user_groups/explorer/oldusermod 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 5ae391af..684e6ee7 100755 --- a/cdist/conf/type/__user_groups/gencode-remote +++ b/cdist/conf/type/__user_groups/gencode-remote @@ -1,7 +1,6 @@ #!/bin/sh # # 2012 Steven Armstrong (steven-cdist at armstrong.cc) -# 2015 Daniel Heule ( hda at sfs.biz ) # # This file is part of cdist. # @@ -21,20 +20,17 @@ user="$(cat "$__object/parameter/user" 2>/dev/null || echo "$__object_id")" state_should="$(cat "$__object/parameter/state")" +oldusermod="$(cat "$__object/explorer/oldusermod")" -os_version="$(cat "$__global/explorer/os_version")" -case "$os_version" in - SUSE\ Linux\ Enterprise\ Server\ 11*VERSION\ =\ 11*) +if [ "$oldusermod" = "true" ]; then old=yes addparam="-A" delparam="-R" - ;; - *) +else old=no addparam="-a" delparam="-d" - ;; -esac +fi mkdir "$__object/files" # file has to be sorted for comparison with `comm` From b2aeceae9107462d9eebd1c1940a653fdbe55f87 Mon Sep 17 00:00:00 2001 From: Daniel Heule Date: Mon, 11 May 2015 10:18:27 +0200 Subject: [PATCH 4/4] minor optimisation ... --- cdist/conf/type/__user_groups/gencode-remote | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cdist/conf/type/__user_groups/gencode-remote b/cdist/conf/type/__user_groups/gencode-remote index 684e6ee7..65404bfc 100755 --- a/cdist/conf/type/__user_groups/gencode-remote +++ b/cdist/conf/type/__user_groups/gencode-remote @@ -23,11 +23,9 @@ state_should="$(cat "$__object/parameter/state")" oldusermod="$(cat "$__object/explorer/oldusermod")" if [ "$oldusermod" = "true" ]; then - old=yes addparam="-A" delparam="-R" else - old=no addparam="-a" delparam="-d" fi @@ -53,9 +51,9 @@ if [ -z "$changed_groups" ]; then fi for group in $changed_groups; do - if [ "$old" = "no" ]; then - echo "gpasswd $action \"$user\" \"$group\"" - else + if [ "$oldusermod" = "true" ]; then echo "usermod $action \"$group\" \"$user\"" + else + echo "gpasswd $action \"$user\" \"$group\"" fi done