From 85f21de2600d88cd9a8f15612bd791db513ebeb1 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sun, 30 Mar 2014 07:47:44 +0000 Subject: [PATCH] allow to disable Unix group membership management --- lam/HISTORY | 4 ++ lam/docs/manual-sources/howto.xml | 23 +++++- .../images/mod_unixGroupConfig.png | Bin 15585 -> 18409 bytes .../images/mod_unixGroupConfig1.png | Bin 0 -> 18460 bytes lam/lib/modules/posixGroup.inc | 66 +++++++++++------- 5 files changed, 65 insertions(+), 28 deletions(-) create mode 100644 lam/docs/manual-sources/images/mod_unixGroupConfig1.png diff --git a/lam/HISTORY b/lam/HISTORY index a35fde08..3abdcb35 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,3 +1,7 @@ +June 2014 4.6 + - Unix groups: allow to disable membership management + + 18.03.2014 4.5 - IMAP: allow dynamic admin user names by replacing wildcards with LDAP attributes - Personal: allow to set fields read-only diff --git a/lam/docs/manual-sources/howto.xml b/lam/docs/manual-sources/howto.xml index 48ebac80..d0de880d 100644 --- a/lam/docs/manual-sources/howto.xml +++ b/lam/docs/manual-sources/howto.xml @@ -3229,10 +3229,23 @@ Have fun! This module is used to manage Unix group entries. This is the default module to manage Unix groups and uses the nis.schema. Suse - users who use the rfc2307bis.schema need to use LAM Pro. + users who use the rfc2307bis.schema need to use + LAM Pro. Configuration + Please add the account type "Groups" and then select account + module "Unix (posixGroup)". + + + + + + + + + GID generator: LAM will suggest GID numbers for your accounts. Please note that it may happen that there are duplicate IDs assigned if users create groups at the same time. Use an + + + Disable membership management: Disables group membership + management. This is useful if memberships are e.g. managed via + group of names. + @@ -3286,7 +3305,7 @@ Have fun! -
+
Unix groups with rfc2307bis schema (LAM Pro) Some applications (e.g. Suse Linux) use the rfc2307bis schema diff --git a/lam/docs/manual-sources/images/mod_unixGroupConfig.png b/lam/docs/manual-sources/images/mod_unixGroupConfig.png index d8122b1b69ec6ec086d59fb6759223e50b7db15f..389d7fe4effaa31ab4b6fb532d5f7db2aa5f82bd 100644 GIT binary patch literal 18409 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 M!cxz(pJ}@PAF?)kA^-pY literal 0 HcmV?d00001 diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc index 13c9d189..45250088 100644 --- a/lam/lib/modules/posixGroup.inc +++ b/lam/lib/modules/posixGroup.inc @@ -102,7 +102,7 @@ class posixGroup extends baseModule implements passwordService { } } // group members - if ($rawAccounts[$i][$ids['posixGroup_members']] != "") { + if (!$this->isBooleanConfigOptionSet('posixGroup_hidememberUid') && ($rawAccounts[$i][$ids['posixGroup_members']] != "")) { if (get_preg($rawAccounts[$i][$ids['posixGroup_members']], 'usernameList')) { $partialAccounts[$i]['memberUid'] = explode(",", $rawAccounts[$i][$ids['posixGroup_members']]); } @@ -218,26 +218,28 @@ class posixGroup extends baseModule implements passwordService { $return->addElement(new htmlTableExtendedInputCheckbox('changegids', $this->changegids, _('Change GID number of users and hosts'), 'changegids'), true); } // group members - $return->addElement(new htmlOutputText(_("Group members"))); - $return->addElement(new htmlAccountPageButton(get_class($this), 'user', 'open', _('Edit members'))); - $return->addElement(new htmlHelpLink('members'), true); - $return->addElement(new htmlOutputText('')); - $users = $this->getUsers(); - $members = array(); - if (isset($this->attributes['memberUid'][0])) { - foreach ($this->attributes['memberUid'] as $uid) { - if (isset($users[$uid]) && isset($users[$uid]['cn'])) { - $members[] = $uid . ' (' . $users[$uid]['cn'] . ')'; - } - else { - $members[] = $uid; + if (!$this->isBooleanConfigOptionSet('posixGroup_hidememberUid')) { + $return->addElement(new htmlOutputText(_("Group members"))); + $return->addElement(new htmlAccountPageButton(get_class($this), 'user', 'open', _('Edit members'))); + $return->addElement(new htmlHelpLink('members'), true); + $return->addElement(new htmlOutputText('')); + $users = $this->getUsers(); + $members = array(); + if (isset($this->attributes['memberUid'][0])) { + foreach ($this->attributes['memberUid'] as $uid) { + if (isset($users[$uid]) && isset($users[$uid]['cn'])) { + $members[] = $uid . ' (' . $users[$uid]['cn'] . ')'; + } + else { + $members[] = $uid; + } } } + $members = array_unique($members); + natcasesort($members); + $members = array_map('htmlspecialchars', $members); + $return->addElement(new htmlOutputText(implode('
', $members), false), true); } - $members = array_unique($members); - natcasesort($members); - $members = array_map('htmlspecialchars', $members); - $return->addElement(new htmlOutputText(implode('
', $members), false), true); // remove button if (!$this->autoAddObjectClasses) { $return->addElement(new htmlSpacer(null, '20px'), true); @@ -371,7 +373,10 @@ class posixGroup extends baseModule implements passwordService { // LDAP aliases $return['LDAPaliases'] = array('commonName' => 'cn'); // managed attributes - $return['attributes'] = array('gidNumber', $this->passwordAttrName, 'memberUid'); + $return['attributes'] = array('gidNumber', $this->passwordAttrName); + if (!$this->isBooleanConfigOptionSet('posixGroup_hidememberUid')) { + $return['attributes'][] = 'memberUid'; + } if ($this->manageCnAttribute) { $return['attributes'][] = 'cn'; } @@ -402,12 +407,15 @@ class posixGroup extends baseModule implements passwordService { $gidGeneratorDN->setRequired(true); $configContainer->addElement($gidGeneratorDN, true); $configContainer->addElement(new htmlTableExtendedInputField(_('Suffix for GID/group name check'), 'posixGroup_gidCheckSuffix', '', 'gidCheckSuffix'), true); + $configContainer->addElement(new htmlTableExtendedInputCheckbox('posixGroup_hidememberUid', false, _('Disable membership management'), 'hidememberUid'), true); $return['config_options']['group'] = $configContainer; // available PDF fields $return['PDF_fields'] = array( 'gidNumber' => _('GID number'), - 'memberUid' => _('Group members') ); + if (!$this->isBooleanConfigOptionSet('posixGroup_hidememberUid')) { + $return['PDF_fields']['memberUid'] = _('Group members'); + } if ($this->manageCnAttribute) { $return['PDF_fields']['cn'] = _('Group name'); } @@ -422,12 +430,6 @@ class posixGroup extends baseModule implements passwordService { 'help' => 'gidNumber', 'example' => '2034' ), - array( - 'name' => 'posixGroup_members', - 'description' => _('Group members'), - 'help' => 'upload_members', - 'example' => _('user01,user02,user03') - ), array( 'name' => 'posixGroup_password', 'description' => _('Group password'), @@ -435,6 +437,14 @@ class posixGroup extends baseModule implements passwordService { 'example' => _('secret') ) ); + if (!$this->isBooleanConfigOptionSet('posixGroup_hidememberUid')) { + $return['upload_columns'][] = array( + 'name' => 'posixGroup_members', + 'description' => _('Group members'), + 'help' => 'upload_members', + 'example' => _('user01,user02,user03') + ); + } if ($this->manageCnAttribute) { array_unshift($return['upload_columns'], array( @@ -512,6 +522,10 @@ class posixGroup extends baseModule implements passwordService { "Text" => _("Here you can enter a filter value. Only entries which contain the filter text will be shown.") . ' ' . _('Possible wildcards are: "*" = any character, "^" = line start, "$" = line end') ), + 'hidememberUid' => array( + "Headline" => _('Disable membership management'), 'attr' => 'memberUid', + "Text" => _('Disables the group membership management.') + ), 'autoAdd' => array( "Headline" => _("Automatically add this extension"), "Text" => _("This will enable the extension automatically if this profile is loaded.")