summaryrefslogtreecommitdiff
path: root/ldap
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2008-09-16 14:35:52 +0200
committerJonas Smedegaard <dr@jones.dk>2008-09-16 14:35:52 +0200
commit65fa4c6f74141e00303f8db3d7fb6a130f85033e (patch)
tree75678feb03dc4293b56d479432ec5175922d6885 /ldap
parenta5a0692af0038463fdf888cc55e1967b966d4b59 (diff)
Make slapd.conf from snippets, and more...
Diffstat (limited to 'ldap')
-rw-r--r--ldap/db/05_slapd.conf.in96
-rw-r--r--ldap/db/10_base.conf.in22
-rw-r--r--ldap/db/30_cipux.conf.in3
-rw-r--r--ldap/db/40_horde.conf.in5
-rw-r--r--ldap/db/50_base.conf.in10
-rw-r--r--ldap/db/50_samba.conf.in4
-rw-r--r--ldap/db/80_base.conf.in3
-rw-r--r--ldap/db/95_slapd.conf.in14
-rw-r--r--ldap/db/base.ldif.in80
-rw-r--r--ldap/db/cipux.ldif.in6
-rw-r--r--ldap/db/core.ldif.in2
-rw-r--r--ldap/db/horde.ldif.in11
-rwxr-xr-xldap/mkldapdb27
13 files changed, 263 insertions, 20 deletions
diff --git a/ldap/db/05_slapd.conf.in b/ldap/db/05_slapd.conf.in
new file mode 100644
index 0000000..dde73b3
--- /dev/null
+++ b/ldap/db/05_slapd.conf.in
@@ -0,0 +1,96 @@
+# This is the main slapd configuration file. See slapd.conf(5) for more
+# info on the configuration options.
+
+#######################################################################
+# Global Directives:
+
+# Features to permit
+#allow bind_v2
+
+# Schema and objectClass definitions
+include /etc/ldap/schema/core.schema
+include /etc/ldap/schema/cosine.schema
+include /etc/ldap/schema/nis.schema
+include /etc/ldap/schema/inetorgperson.schema
+
+# Where the pid file is put. The init.d script
+# will not stop the server if you change this.
+pidfile /var/run/slapd/slapd.pid
+
+# List of arguments that were passed to the server
+argsfile /var/run/slapd/slapd.args
+
+# Read slapd.conf(5) for possible values
+loglevel none
+
+# Where the dynamically loaded modules are stored
+modulepath /usr/lib/ldap
+moduleload back_@BACKEND@
+
+# The maximum number of entries that is returned for a search operation
+sizelimit 500
+
+# The tool-threads parameter sets the actual amount of cpu's that is used
+# for indexing.
+tool-threads 1
+
+#######################################################################
+# Specific Backend Directives for @BACKEND@:
+# Backend specific directives apply to this backend until another
+# 'backend' directive occurs
+backend @BACKEND@
+
+#######################################################################
+# Specific Backend Directives for 'other':
+# Backend specific directives apply to this backend until another
+# 'backend' directive occurs
+#backend <other>
+
+#######################################################################
+# Specific Directives for database #1, of type @BACKEND@:
+# Database specific directives apply to this databasse until another
+# 'database' directive occurs
+database @BACKEND@
+
+# The base of your directory in database #1
+suffix "@SUFFIX@"
+
+# rootdn directive for specifying a superuser on the database. This is needed
+# for syncrepl.
+# rootdn "cn=admin,@SUFFIX@"
+
+# Where the database file are physically stored for database #1
+directory "/var/lib/ldap"
+
+# The dbconfig settings are used to generate a DB_CONFIG file the first
+# time slapd starts. They do NOT override existing an existing DB_CONFIG
+# file. You should therefore change these settings in DB_CONFIG directly
+# or remove DB_CONFIG and restart slapd for changes to take effect.
+
+# For the Debian package we use 2MB as default but be sure to update this
+# value if you have plenty of RAM
+dbconfig set_cachesize 0 2097152 0
+
+# Sven Hartge reported that he had to set this value incredibly high
+# to get slapd running at all. See http://bugs.debian.org/303057 for more
+# information.
+
+# Number of objects that can be locked at the same time.
+dbconfig set_lk_max_objects 1500
+# Number of locks (both requested and granted)
+dbconfig set_lk_max_locks 1500
+# Number of lockers
+dbconfig set_lk_max_lockers 1500
+
+# Indexing options for database #1
+index objectClass eq
+
+# Save the time that the entry gets modified, for database #1
+lastmod on
+
+# Checkpoint the BerkeleyDB database periodically in case of system
+# failure and to speed slapd shutdown.
+checkpoint 512 30
+
+# Where to store the replica logs for database #1
+# replogfile /var/lib/ldap/replog
diff --git a/ldap/db/10_base.conf.in b/ldap/db/10_base.conf.in
new file mode 100644
index 0000000..0781b3d
--- /dev/null
+++ b/ldap/db/10_base.conf.in
@@ -0,0 +1,22 @@
+# Ensure read access to the base for things like
+# supportedSASLMechanisms. Without this you may
+# have problems with SASL not knowing what
+# mechanisms are available and the like.
+# Note that this is covered by the 'access to *'
+# ACL below too but if you change that as people
+# are wont to do you'll still need this if you
+# want SASL (and possible other things) to work
+# happily.
+access to dn.base=""
+ by * read
+
+access to dn.subtree="cn=monitor"
+ by * read
+
+# The admin dn has full write access, everyone else
+# needs further checking
+access to dn.subtree="@SUFFIX@"
+ by dn.exact="cn=admin,@SUFFIX@" write
+ by group/groupOfUniqueNames/uniqueMember="cn=DSA,ou=Administrators,ou=Groups,ou=Access Control,@SUFFIX@" write
+ by group/groupOfUniqueNames/uniqueMember="cn=Replicants,ou=Groups,ou=Access Control,@SUFFIX@" write
+ by * break
diff --git a/ldap/db/30_cipux.conf.in b/ldap/db/30_cipux.conf.in
new file mode 100644
index 0000000..f20751f
--- /dev/null
+++ b/ldap/db/30_cipux.conf.in
@@ -0,0 +1,3 @@
+access to dn.subtree="ou=CipUX,ou=SubSystems,@SUFFIX@"
+ by dn.exact=”uid=cipux,ou=System,ou=Entities,ou=SAM,@SUFFIX@" write
+ by * none break
diff --git a/ldap/db/40_horde.conf.in b/ldap/db/40_horde.conf.in
new file mode 100644
index 0000000..bbae52a
--- /dev/null
+++ b/ldap/db/40_horde.conf.in
@@ -0,0 +1,5 @@
+# Horde
+access to dn.sub="ou=People,ou=Entities,ou=SAM,@SUFFIX@" attrs=@hordePerson
+ by group="cn=DSA,ou=Administrators,ou=Access Control,@SUFFIX@" write
+ by group="cn=Horde,ou=Administrators,ou=Access Control,@SUFFIX@" write
+ by * none
diff --git a/ldap/db/50_base.conf.in b/ldap/db/50_base.conf.in
new file mode 100644
index 0000000..b7cd9ae
--- /dev/null
+++ b/ldap/db/50_base.conf.in
@@ -0,0 +1,10 @@
+# The userPassword by default can be changed
+# by the entry owning it if they are authenticated.
+# Others should not be able to see it, except the
+# admin entry below
+access to dn.subtree="ou=SAM,@SUFFIX@" attrs=userpassword,shadowLastChange
+ by dn.exact="@ADMIN@" write
+ by dn.exact=”uid=cifsdc,ou=Entities,ou=Access Control,@SUFFIX@" write
+ by anonymous auth
+ by self write
+ by * none
diff --git a/ldap/db/50_samba.conf.in b/ldap/db/50_samba.conf.in
new file mode 100644
index 0000000..4eee5cd
--- /dev/null
+++ b/ldap/db/50_samba.conf.in
@@ -0,0 +1,4 @@
+# Samba
+access to dn.subtree="ou=SAM,@SUFFIX@" attrs=sambantpassword,sambalmpassword,sambapasswordhistory,sambabadpasswordcount,sambabadpasswordtme,sambapwdcanchange,sambapwdmustchange
+ by dn.exact=”uid=cifsdc,ou=Entities,ou=Access Control,@SUFFIX@" write
+ by * none
diff --git a/ldap/db/80_base.conf.in b/ldap/db/80_base.conf.in
new file mode 100644
index 0000000..2e7b571
--- /dev/null
+++ b/ldap/db/80_base.conf.in
@@ -0,0 +1,3 @@
+# Read access by default
+access to *
+ by * read
diff --git a/ldap/db/95_slapd.conf.in b/ldap/db/95_slapd.conf.in
new file mode 100644
index 0000000..861511c
--- /dev/null
+++ b/ldap/db/95_slapd.conf.in
@@ -0,0 +1,14 @@
+# For Netscape Roaming support, each user gets a roaming
+# profile for which they have write access to
+#access to dn=".*,ou=Roaming,o=morsnet"
+# by dn="@ADMIN@" write
+# by dnattr=owner write
+
+#######################################################################
+# Specific Directives for database #2, of type 'other' (can be @BACKEND@ too):
+# Database specific directives apply to this databasse until another
+# 'database' directive occurs
+#database <other>
+
+# The base of your directory for database #2
+#suffix "dc=debian,dc=org"
diff --git a/ldap/db/base.ldif.in b/ldap/db/base.ldif.in
index 31624a6..88f4eaa 100644
--- a/ldap/db/base.ldif.in
+++ b/ldap/db/base.ldif.in
@@ -1,14 +1,78 @@
-dn: ou=DSA, @SUFFIX@
+dn: ou=Customers,@SUFFIX@
objectclass: organizationalUnit
-ou: DSA
-description: Directory System Agent
+ou: Customers
+description: Customers at @ORG@
-dn: ou=people, @SUFFIX@
+dn: ou=SubSystems,@SUFFIX@
+objectclass: organizationalUnit
+ou: SubSystems
+
+dn: ou=Mail,ou=SubSystems,@SUFFIX@
+objectclass: organizationalUnit
+ou: Mail
+
+dn: ou=SAM,@SUFFIX@
+objectclass: organizationalUnit
+ou: SAM
+description: Samba and NSS stuff
+
+dn: ou=Groups,ou=SAM,@SUFFIX@
+objectClass: organizationalUnit
+ou: Groups
+description: Groups at @ORG@
+
+dn: ou=Hosts,ou=SAM,@SUFFIX@
+objectClass: organizationalUnit
+ou: Hosts
+description: Hosts at @ORG@
+
+dn: ou=Services,ou=SAM,@SUFFIX@
+objectClass: organizationalUnit
+ou: Hosts
+description: System services at @ORG@
+
+dn: ou=idMap,ou=SAM,@SUFFIX@
+objectClass: organizationalUnit
+ou: idMap
+description: Samba idmap subsystem
+
+dn: ou=Entities,ou=SAM,@SUFFIX@
objectClass: organizationalUnit
-ou: people
+ou: Entities
+description: Human and non-human entities
+
+dn: ou=People,ou=Entities,ou=SAM,@SUFFIX@
+objectClass: organizationalUnit
+ou: People
description: Users in @ORG@
-dn: ou=group, @SUFFIX@
+dn: ou=System,ou=Entities,ou=SAM,@SUFFIX@
objectClass: organizationalUnit
-ou: group
-description: Groups at @ORG@
+ou: System
+description: Non-human entities in @ORG@
+
+dn: ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+ou: Access Control
+
+dn: ou=Groups,ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+ou: Groups
+
+dn: cn=Replicants,ou=Groups,ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+cn: Replicants
+
+dn: ou=Administrators,ou=Groups,ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+ou: Administrators
+
+dn: cn=DSA,ou=Administrators,ou=Groups,ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+cn: DSA
+description: Directory System Agent administrators
+
+dn: ou=Entities,ou=Access Control,@SUFFIX@
+objectClass: organizationalUnit
+ou: Entities
+description: DSA-only entities
diff --git a/ldap/db/cipux.ldif.in b/ldap/db/cipux.ldif.in
new file mode 100644
index 0000000..cec5396
--- /dev/null
+++ b/ldap/db/cipux.ldif.in
@@ -0,0 +1,6 @@
+dn: uid=cipux,ou=System,ou=Entities,ou=SAM,@SUFFIX@
+objectClass: top
+objectclass: account
+objectClass: simpleSecurityObject
+uid: cipux
+userPassword: superSecretPassword
diff --git a/ldap/db/core.ldif.in b/ldap/db/core.ldif.in
index 38fbdbc..75ec4c6 100644
--- a/ldap/db/core.ldif.in
+++ b/ldap/db/core.ldif.in
@@ -5,7 +5,7 @@ objectClass: organization
o: @DOMAIN@
dc: @ORG@
-dn: cn=admin, @SUFFIX@
+dn: cn=admin,@SUFFIX@
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
diff --git a/ldap/db/horde.ldif.in b/ldap/db/horde.ldif.in
index 0e1bab0..0c28f79 100644
--- a/ldap/db/horde.ldif.in
+++ b/ldap/db/horde.ldif.in
@@ -1,6 +1,11 @@
-dn: cn=horde, ou=DSA, @SUFFIX@
-objectclass: organizationalRole
+dn: uid=horde,ou=System,ou=Entities,ou=SAM,@SUFFIX@
objectClass: top
+objectclass: account
objectClass: simpleSecurityObject
+uid: horde
userPassword: superSecretPassword
-cn: horde
+
+dn: cn=Horde,ou=Administrators,ou=Groups,ou=Access Control,@SUFFIX@
+objectClass: groupOfUniqueNames
+cn: Horde
+uniqueMember: uid=horde,ou=System,ou=Entities,ou=SAM,@SUFFIX@
diff --git a/ldap/mkldapdb b/ldap/mkldapdb
index 833827a..697f7cd 100755
--- a/ldap/mkldapdb
+++ b/ldap/mkldapdb
@@ -23,16 +23,19 @@ for var in basedn dnsdomain orgname backend; do
fi
done
-confskel=/usr/share/slapd/slapd.conf
masterdir=/etc/local-COMMON/ldap/db
tempdir=`mktemp -dt slapd.XXXXXX`
-sed <"$confskel" >"$tempdir/slapd.conf" \
- -e "s/@BACKEND@/$backend/g" \
- -e "s/@SUFFIX@/$basedn/g" \
- -e "s/@ADMIN@/cn=admin,$basedn/g"
+snippets="$(LANG=C find "$masterdir" -type f -name '*.conf.in' | sort)"
+# concatenate files with an additional newline in between
+# (perl could replace sed too, but multiline perl inside shell is ugly)
+perl -e 'foreach (@ARGV) {print "\n" if $n; $n++; open (FH, $_); print while(<FH>); close FH;}' $snippets \
+ | sed >>"$tempdir/slapd.conf" \
+ -e "s/@BACKEND@/$backend/g" \
+ -e "s/@SUFFIX@/$basedn/g" \
+ -e "s/@ADMIN@/cn=admin,$basedn/g"
-for section in core base horde; do
+for section in core base cipux horde; do
sed <"$masterdir/$section.ldif.in" >"$tempdir/$section.ldif" \
-e "s/@SUFFIX@/$basedn/g" \
-e "s/@DOMAIN@/$dnsdomain/g" \
@@ -48,7 +51,15 @@ done
#slapadd -l "$tempdir/core.ldif"
#invoke-rc.d slapd start
#ldappasswd -x -h localhost -D "cn=admin,$basedn" -S -w supersecretpassword "cn=admin,$basedn"
-for section in base horde; do
+for section in base cipux horde; do
ldapadd -x -h localhost -D "cn=admin,$basedn" -f "$tempdir/$section.ldif" -W
done
-ldappasswd -x -h localhost -D "cn=admin,$basedn" -S -W "cn=horde,ou=DSA,$basedn"
+for section in cipux horde; do
+ ldappasswd -x -h localhost -D "cn=admin,$basedn" -S -W "uid=$section,ou=System,ou=Entities,ou=SAM,$basedn"
+done
+ldapmodify -x -h localhost -D "cn=admin,$basedn" -W <<EOF
+dn: cn=DSA,ou=Administrators,ou=Groups,ou=Access Control,$basedn
+changetype: modify
+add: uniqueMember
+uniqueMember: uid=cipux,ou=System,ou=Entities,ou=SAM,$basedn
+EOF