summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/providers/ldap/ldap_options.c20
-rw-r--r--src/providers/ldap/ldap_opts.h31
-rw-r--r--src/providers/ldap/sdap.h35
3 files changed, 86 insertions, 0 deletions
diff --git a/src/providers/ldap/ldap_options.c b/src/providers/ldap/ldap_options.c
index 7ad607150..c5af1f551 100644
--- a/src/providers/ldap/ldap_options.c
+++ b/src/providers/ldap/ldap_options.c
@@ -394,6 +394,26 @@ int ldap_get_sudo_options(TALLOC_CTX *memctx,
return ret;
}
+ /* attrs map for IPA SUDO Provider */
+ ret = sdap_get_map(opts, cdb, conf_path,
+ ipa_sudorule_map,
+ SDAP_OPTS_IPA_SUDO,
+ &opts->ipa_sudorule_map);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, "Could not get IPA SUDO attribute map\n");
+ return ret;
+ }
+
+ /* attrs map for IPA SUDO commands */
+ ret = sdap_get_map(opts, cdb, conf_path,
+ ipa_sudocmds_map,
+ SDAP_OPTS_SUDO_CMD,
+ &opts->ipa_sudocmds_map);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, "Could not get IPA SUDO commnads attribute map\n");
+ return ret;
+ }
+
/* host filter */
*use_host_filter = dp_opt_get_bool(opts->basic, SDAP_SUDO_USE_HOST_FILTER);
*include_netgroups = dp_opt_get_bool(opts->basic, SDAP_SUDO_INCLUDE_NETGROUPS);
diff --git a/src/providers/ldap/ldap_opts.h b/src/providers/ldap/ldap_opts.h
index 9f58db5bd..0e961dbee 100644
--- a/src/providers/ldap/ldap_opts.h
+++ b/src/providers/ldap/ldap_opts.h
@@ -338,6 +338,37 @@ struct sdap_attr_map native_sudorule_map[] = {
SDAP_ATTR_MAP_TERMINATOR
};
+struct sdap_attr_map ipa_sudorule_map[] = {
+ { "ipa_sudorule_object_class", "ipasudorule", "ipasudorule", NULL },
+ { "ldap_sudorule_name", "cn", SYSDB_SUDO_CACHE_AT_CN, NULL },
+ { "ldap_sudorule_usercategory", "userCategory", "userCategory", NULL },
+ { "ldap_sudorule_memberuser", "memberUser", "memberUser", NULL },
+ { "ldap_sudorule_externaluser", "externalUser", SYSDB_SUDO_CACHE_AT_USER, NULL },
+ { "ldap_sudorule_hostcategory", "hostCategory", "hostCategory", NULL },
+ { "ldap_sudorule_memberhost", "memberHost", "memberHost", NULL },
+ { "ldap_sudorule_externalhost", "externalHost", SYSDB_SUDO_CACHE_AT_HOST, NULL },
+ { "ldap_sudorule_cmdcategory", "cmdCategory", "cmdCategory", NULL },
+ { "ldap_sudorule_memberallowcmd", "memberAllowCmd", "memberAllowCmd", NULL },
+ { "ldap_sudorule_memberdenycmd", "memberDenyCmd", "memberDenyCmd", NULL },
+ { "ldap_sudorule_ipasudoopt", "ipaSudoOpt", SYSDB_SUDO_CACHE_AT_OPTION, NULL },
+ { "ldap_sudorule_ipasudorunasusercategory", "ipaSudoRunAsUserCategory", "ipaSudoRunAsUserCategory", NULL },
+ { "ldap_sudorule_ipasudorunas", "ipaSudoRunAs", "ipaSudoRunAs", NULL },
+ { "ldap_sudorule_ipasudorunasextuser", "ipaSudoRunAsExtUser", SYSDB_SUDO_CACHE_AT_RUNASUSER, NULL },
+ { "ldap_sudorule_ipasudorunasgroupcategory", "ipaSudoRunAsGroupCategory", "ipaSudoRunAsGroupCategory", NULL },
+ { "ldap_sudorule_ipasudorunasgroup", "ipaSudoRunAsGroup", "ipaSudoRunAsGroup", NULL },
+ { "ldap_sudorule_ipasudorunasextgroup", "ipaSudoRunAsExtGroup", SYSDB_SUDO_CACHE_AT_RUNASGROUP, NULL },
+ { "ldap_sudorule_entry_usn", "entryUSN", SYSDB_USN, NULL },
+ SDAP_ATTR_MAP_TERMINATOR
+};
+
+struct sdap_attr_map ipa_sudocmds_map[] = {
+ { "ipa_sudocmd_object_class", "ipasudocmd", "ipasudocmd", NULL },
+ { "ipa_sudocmd_ipauniqueid", "ipaUniqueID", "ipaUniqueID", NULL },
+ { "ipa_sudocmd_command", "sudoCmd", "sudoCmd", NULL },
+ { "ipa_sudocmd_memberof", "memberOf", "memberOf", NULL },
+ SDAP_ATTR_MAP_TERMINATOR
+};
+
struct sdap_attr_map service_map[] = {
{ "ldap_service_object_class", "ipService", SYSDB_SVC_CLASS, NULL },
{ "ldap_service_name", "cn", SYSDB_NAME, NULL },
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index edfbf229b..e6f8c22ed 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -335,6 +335,39 @@ enum sdap_sudorule_attrs {
SDAP_OPTS_SUDO /* attrs counter */
};
+enum sdap_ipa_sudorule_attrs {
+ SDAP_OC_IPA_SUDORULE = 0,
+ SDAP_AT_IPA_SUDO_NAME,
+ SDAP_AT_IPA_SUDO_USER_CAT,
+ SDAP_AT_IPA_SUDO_MEM_USER,
+ SDAP_AT_IPA_SUDO_EXT_USER,
+ SDAP_AT_IPA_SUDO_HOST_CAT,
+ SDAP_AT_IPA_SUDO_MEM_HOST,
+ SDAP_AT_IPA_SUDO_EXT_HOST,
+ SDAP_AT_IPA_SUDO_CMD_CAT,
+ SDAP_AT_IPA_SUDO_MEM_ALLOW_CMD,
+ SDAP_AT_IPA_SUDO_MEM_DENY_CMD,
+ SDAP_AT_IPA_SUDO_OPT,
+ SDAP_AT_IPA_SUDO_RUN_AS_USER_CAT,
+ SDAP_AT_IPA_SUDO_RUN_AS,
+ SDAP_AT_IPA_SUDO_RUN_AS_EXT_USER,
+ SDAP_AT_IPA_SUDO_RUN_AS_GROUP_CAT,
+ SDAP_AT_IPA_SUDO_RUN_AS_GROUP,
+ SDAP_AT_IPA_SUDO_RUN_AS_EXT_GROUP,
+ SDAP_AT_IPA_SUDO_USN,
+
+ SDAP_OPTS_IPA_SUDO /* attrs counter */
+};
+
+enum sdap_ipa_sudocmds_attrs {
+ SDAP_OC_SUDO_CMD = 0,
+ SDAP_OC_SUDO_CMD_CMD,
+ SDAP_OC_SUDO_CMD_MEMBEROF,
+ SDAP_OC_SUDO_CMD_IPAUNIQUEID,
+
+ SDAP_OPTS_SUDO_CMD /* attrs counter */
+};
+
enum sdap_service_attrs {
SDAP_OC_SERVICE = 0,
SDAP_AT_SERVICE_NAME,
@@ -435,6 +468,8 @@ struct sdap_options {
/* FIXME - should this go to a special struct to avoid mixing with name-service-switch maps? */
struct sdap_attr_map *sudorule_map;
+ struct sdap_attr_map *ipa_sudorule_map; /* map for IPA SUDO scheme */
+ struct sdap_attr_map *ipa_sudocmds_map; /* map for IPA SUDO commands */
struct sdap_attr_map *autofs_mobject_map;
struct sdap_attr_map *autofs_entry_map;