summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2016-06-23 17:42:17 +0200
committerMartin Basti <mbasti@redhat.com>2017-03-13 18:18:31 +0100
commitda5487c407bee9bce41f4012d07970916b9456c1 (patch)
treeed1f407eab1f871771449e17be3560bde3b130db
parentd4ad2c98aa43f03ecbd8e0a44410888acd83df6e (diff)
downloadfreeipa-da5487c407bee9bce41f4012d07970916b9456c1.tar.gz
freeipa-da5487c407bee9bce41f4012d07970916b9456c1.tar.xz
freeipa-da5487c407bee9bce41f4012d07970916b9456c1.zip
permissions: add permissions for read and mod of external group members
Issue: "User Administrator" role cannot add users to an External Group. https://fedorahosted.org/freeipa/ticket/5504 Reviewed-By: Martin Basti <mbasti@redhat.com>
-rw-r--r--ACI.txt4
-rw-r--r--ipaserver/plugins/group.py17
2 files changed, 21 insertions, 0 deletions
diff --git a/ACI.txt b/ACI.txt
index a36d460b7..5e84d05e8 100644
--- a/ACI.txt
+++ b/ACI.txt
@@ -95,9 +95,13 @@ aci: (targetattr = "a6record || aaaarecord || afsdbrecord || aplrecord || arecor
dn: cn=groups,cn=accounts,dc=ipa,dc=example
aci: (targetfilter = "(|(objectclass=ipausergroup)(objectclass=posixgroup))")(version 3.0;acl "permission:System: Add Groups";allow (add) groupdn = "ldap:///cn=System: Add Groups,cn=permissions,cn=pbac,dc=ipa,dc=example";)
dn: cn=groups,cn=accounts,dc=ipa,dc=example
+aci: (targetattr = "ipaexternalmember")(targetfilter = "(objectclass=ipaexternalgroup)")(version 3.0;acl "permission:System: Modify External Group Membership";allow (write) groupdn = "ldap:///cn=System: Modify External Group Membership,cn=permissions,cn=pbac,dc=ipa,dc=example";)
+dn: cn=groups,cn=accounts,dc=ipa,dc=example
aci: (targetattr = "member")(targetfilter = "(&(!(cn=admins))(objectclass=ipausergroup))")(version 3.0;acl "permission:System: Modify Group Membership";allow (write) groupdn = "ldap:///cn=System: Modify Group Membership,cn=permissions,cn=pbac,dc=ipa,dc=example";)
dn: cn=groups,cn=accounts,dc=ipa,dc=example
aci: (targetattr = "cn || description || gidnumber || ipauniqueid || mepmanagedby || objectclass")(targetfilter = "(|(objectclass=ipausergroup)(objectclass=posixgroup))")(version 3.0;acl "permission:System: Modify Groups";allow (write) groupdn = "ldap:///cn=System: Modify Groups,cn=permissions,cn=pbac,dc=ipa,dc=example";)
+dn: cn=groups,cn=accounts,dc=ipa,dc=example
+aci: (targetattr = "ipaexternalmember")(targetfilter = "(|(objectclass=ipausergroup)(objectclass=posixgroup))")(version 3.0;acl "permission:System: Read External Group Membership";allow (compare,read,search) userdn = "ldap:///all";)
dn: dc=ipa,dc=example
aci: (targetattr = "cn || createtimestamp || entryusn || gidnumber || memberuid || modifytimestamp || objectclass")(target = "ldap:///cn=groups,cn=compat,dc=ipa,dc=example")(version 3.0;acl "permission:System: Read Group Compat Tree";allow (compare,read,search) userdn = "ldap:///anyone";)
dn: cn=groups,cn=accounts,dc=ipa,dc=example
diff --git a/ipaserver/plugins/group.py b/ipaserver/plugins/group.py
index 67a264a37..218da3c94 100644
--- a/ipaserver/plugins/group.py
+++ b/ipaserver/plugins/group.py
@@ -194,6 +194,13 @@ class group(LDAPObject):
'member', 'memberof', 'memberuid', 'memberuser', 'memberhost',
},
},
+ 'System: Read External Group Membership': {
+ 'ipapermbindruletype': 'all',
+ 'ipapermright': {'read', 'search', 'compare'},
+ 'ipapermdefaultattr': {
+ 'ipaexternalmember',
+ },
+ },
'System: Add Groups': {
'ipapermright': {'add'},
'replaces': [
@@ -216,6 +223,16 @@ class group(LDAPObject):
'Group Administrators', 'Modify Group membership'
},
},
+ 'System: Modify External Group Membership': {
+ 'ipapermright': {'write'},
+ 'ipapermtargetfilter': [
+ '(objectclass=ipaexternalgroup)',
+ ],
+ 'ipapermdefaultattr': {'ipaexternalmember'},
+ 'default_privileges': {
+ 'Group Administrators', 'Modify Group membership'
+ },
+ },
'System: Modify Groups': {
'ipapermright': {'write'},
'ipapermdefaultattr': {