summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2011-01-19 15:17:25 -0500
committerSimo Sorce <ssorce@redhat.com>2011-01-20 15:49:30 -0500
commit861aa9c1b8ddf757b358f3a66e3ca57d4cc05b4c (patch)
tree50e0025b2cdc32721bca357102daf4935e712c01
parent5af80a7583edfd0061a70abde4868d4582247608 (diff)
downloadfreeipa-861aa9c1b8ddf757b358f3a66e3ca57d4cc05b4c.tar.gz
freeipa-861aa9c1b8ddf757b358f3a66e3ca57d4cc05b4c.tar.xz
freeipa-861aa9c1b8ddf757b358f3a66e3ca57d4cc05b4c.zip
Allow SASL/EXTERNAL authentication for the root user
This gives the root user low privileges so that when anonymous searches are denied the init scripts can still search the directory via ldapi to get the list of serevices to start. Fixes: https://fedorahosted.org/freeipa/ticket/795
-rw-r--r--install/share/Makefile.am1
-rw-r--r--install/share/root-autobind.ldif24
-rwxr-xr-xinstall/tools/ipactl5
-rw-r--r--ipaserver/install/dsinstance.py5
4 files changed, 34 insertions, 1 deletions
diff --git a/install/share/Makefile.am b/install/share/Makefile.am
index 0fb5c8961..4527a922c 100644
--- a/install/share/Makefile.am
+++ b/install/share/Makefile.am
@@ -47,6 +47,7 @@ app_DATA = \
uuid-ipauniqueid.ldif \
modrdn-krbprinc.ldif \
entryusn.ldif \
+ root-autobind.ldif \
$(NULL)
EXTRA_DIST = \
diff --git a/install/share/root-autobind.ldif b/install/share/root-autobind.ldif
new file mode 100644
index 000000000..e7bbc8dbe
--- /dev/null
+++ b/install/share/root-autobind.ldif
@@ -0,0 +1,24 @@
+# root-autobind, config
+dn: cn=root-autobind,cn=config
+changetype: add
+objectClass: extensibleObject
+objectClass: top
+cn: root-autobind
+uidNumber: 0
+gidNumber: 0
+
+dn: cn=config
+changetype: modify
+replace: nsslapd-ldapiautobind
+nsslapd-ldapiautobind: on
+
+dn: cn=config
+changetype: modify
+replace: nsslapd-ldapimaptoentries
+nsslapd-ldapimaptoentries: on
+
+dn: cn=config
+changetype: modify
+replace: nsslapd-ldapientrysearchbase
+nsslapd-ldapientrysearchbase: cn=config
+
diff --git a/install/tools/ipactl b/install/tools/ipactl
index 0254a2762..fc652c975 100755
--- a/install/tools/ipactl
+++ b/install/tools/ipactl
@@ -26,6 +26,7 @@ try:
from ipalib import api, errors
import logging
import ldap
+ import ldap.sasl
import socket
except ImportError:
print >> sys.stderr, """\
@@ -36,6 +37,8 @@ error was:
""" % sys.exc_value
sys.exit(1)
+SASL_EXTERNAL = ldap.sasl.sasl({}, 'EXTERNAL')
+
def parse_options():
usage = "%prog start|stop|restart|status\n"
parser = config.IPAOptionParser(usage=usage,
@@ -60,7 +63,7 @@ def get_config():
try:
con = ldap.initialize(api.env.ldap_uri)
- con.simple_bind()
+ con.sasl_interactive_bind_s('', SASL_EXTERNAL)
res = con.search_st(base,
ldap.SCOPE_SUBTREE,
filterstr=srcfilter,
diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py
index 859d5c8ff..378e01234 100644
--- a/ipaserver/install/dsinstance.py
+++ b/ipaserver/install/dsinstance.py
@@ -207,6 +207,7 @@ class DsInstance(service.Service):
self.step("creating indices", self.__create_indices)
self.step("configuring ssl for ds instance", self.__enable_ssl)
self.step("configuring certmap.conf", self.__certmap_conf)
+ self.step("configure autobind for root", self.__root_autobind)
self.step("restarting directory server", self.__restart_instance)
def __common_post_setup(self):
@@ -728,3 +729,7 @@ class DsInstance(service.Service):
def __tuning(self):
self.tune_nofile(8192)
+
+ def __root_autobind(self):
+ self._ldap_mod("root-autobind.ldif")
+