<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://datorhandbok.lysator.liu.se/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Net4all</id>
	<title>Datorhandbok - Användarbidrag [sv]</title>
	<link rel="self" type="application/atom+xml" href="https://datorhandbok.lysator.liu.se/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Net4all"/>
	<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php/Special:Bidrag/Net4all"/>
	<updated>2026-04-13T10:40:27Z</updated>
	<subtitle>Användarbidrag</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rouk&amp;diff=5512</id>
		<title>Rouk</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rouk&amp;diff=5512"/>
		<updated>2017-03-29T13:56:09Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Tjänsteserver&lt;br /&gt;
|-&lt;br /&gt;
! Specialfunktion&lt;br /&gt;
| Head / management for Procurve 5412 router&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:Debian 8]]&lt;br /&gt;
|-&lt;br /&gt;
! Arkitektur&lt;br /&gt;
| x86_64&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; | SSH-fingeravtryck&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[FOO-hallen]]&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| net4all&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;br /&gt;
[[Kategori:Tjänsteservrar]]&lt;br /&gt;
[[Kategori:Debian 8.0]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Testmachine&amp;diff=5494</id>
		<title>Testmachine</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Testmachine&amp;diff=5494"/>
		<updated>2017-03-13T19:05:52Z</updated>

		<summary type="html">&lt;p&gt;Net4all: Skapade sidan med &amp;#039;{| style=&amp;quot;border: 0px&amp;quot; ! Funktion | CPU-server |- ! Specialfunktion | Testklient för LDAP konfiguration. Det är normalt att denna maskin är offline. |- ! Operativsystem | [...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| CPU-server&lt;br /&gt;
|-&lt;br /&gt;
! Specialfunktion&lt;br /&gt;
| Testklient för LDAP konfiguration. Det är normalt att denna maskin är offline.&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:Debian 8.0| Debian 8.0]]&lt;br /&gt;
|-&lt;br /&gt;
! SSH-fingeravtryck&lt;br /&gt;
|-&lt;br /&gt;
! Modell&lt;br /&gt;
| Virtuell Proxmox kluster.&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[Proxmox]]&lt;br /&gt;
|-&lt;br /&gt;
! Foto&lt;br /&gt;
|- &lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| [[Användare:net4all|Jon Dybeck][Användare:baafen|Joakim Baafen]&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift till och från.&lt;br /&gt;
|-&lt;br /&gt;
! Nagios-status&lt;br /&gt;
| {{Nagios}}&lt;br /&gt;
|-&lt;br /&gt;
! LysINV&lt;br /&gt;
| {{LysINV}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Debian]]&lt;br /&gt;
[[Kategori:Debian 8.0]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5490</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5490"/>
		<updated>2017-03-09T18:22:34Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Importing data from NIS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert&lt;br /&gt;
 chmod 0500 /etc/ldap/cert&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert/*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: Double check if schema uses ou People or users. If users is used then replace People with users bellow.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow chsh, chfn and root to modify anything ==&lt;br /&gt;
&lt;br /&gt;
In order to allow users to change their shell, an acl rule is required.&lt;br /&gt;
&lt;br /&gt;
Place the following text in shell.ldif:&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcAccess&lt;br /&gt;
 olcAccess: {0}to attrs=loginShell&lt;br /&gt;
   by self write&lt;br /&gt;
   by * read&lt;br /&gt;
 olcAccess: {1}to *&lt;br /&gt;
   by set=&amp;quot;[cn=root,ou=Group,dc=lysator,dc=liu,dc=se]/memberUid &amp;amp; user/uid&amp;quot; manage&lt;br /&gt;
   by * read&lt;br /&gt;
&lt;br /&gt;
Then run the following:&lt;br /&gt;
&lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f shell_access.ldif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Verify by running:&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcAccess&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  # extended LDIF&lt;br /&gt;
  #&lt;br /&gt;
  # LDAPv3&lt;br /&gt;
  # base &amp;lt;olcDatabase={1}mdb,cn=config&amp;gt; with scope subtree&lt;br /&gt;
  # filter: (objectclass=*)&lt;br /&gt;
  # requesting: olcAccess &lt;br /&gt;
  #&lt;br /&gt;
  # {1}mdb, config&lt;br /&gt;
  dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
  olcAccess: {0}to attrs=loginShell,gecos by self write by * read&lt;br /&gt;
  olcAccess: {1}to * by set=&amp;quot;[cn=root,ou=Group,dc=lysator,dc=liu,dc=se]/memberUi&lt;br /&gt;
   d &amp;amp; user/uid&amp;quot; manage by * read&lt;br /&gt;
  # search result&lt;br /&gt;
  search: 2&lt;br /&gt;
  result: 0 Success&lt;br /&gt;
  # numResponses: 2&lt;br /&gt;
  # numEntries: 1&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
&lt;br /&gt;
== Add uid counter ==&lt;br /&gt;
&lt;br /&gt;
Place the following in nextUid.ldif:&lt;br /&gt;
&lt;br /&gt;
  dn: cn=nextUid,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  changetype: add&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: organizationalRole&lt;br /&gt;
  objectClass: uidObject&lt;br /&gt;
  cn: nextUid&lt;br /&gt;
  uid: 10000&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f nextUid.ldif&lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
  TODO&lt;br /&gt;
&lt;br /&gt;
To verify run:&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -ZZ -H ldap://ldap.lysator.liu.se -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=uidObject)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/GSSAPI authentication started&lt;br /&gt;
  SASL username: net4all@LYSATOR.LIU.SE&lt;br /&gt;
  SASL SSF: 56&lt;br /&gt;
  SASL data security layer installed.&lt;br /&gt;
  # extended LDIF&lt;br /&gt;
  #&lt;br /&gt;
  # LDAPv3&lt;br /&gt;
  # base &amp;lt;dc=lysator,dc=liu,dc=se&amp;gt; with scope subtree&lt;br /&gt;
  # filter: (objectClass=uidObject)&lt;br /&gt;
  # requesting: ALL&lt;br /&gt;
  #&lt;br /&gt;
  # nextUid, lysator.liu.se&lt;br /&gt;
  dn: cn=nextUid,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: organizationalRole&lt;br /&gt;
  objectClass: uidObject&lt;br /&gt;
  cn: nextUid&lt;br /&gt;
  uid: 10000&lt;br /&gt;
  # search result&lt;br /&gt;
  search: 5&lt;br /&gt;
  result: 0 Success&lt;br /&gt;
  # numResponses: 2&lt;br /&gt;
  # numEntries: 1&lt;br /&gt;
&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.\&lt;br /&gt;
&lt;br /&gt;
=== Database config change doesn&#039;t take effetct ===&lt;br /&gt;
Try restarting slapd. Some changes doesn&#039;t take effect immediately.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5489</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5489"/>
		<updated>2017-03-09T18:14:00Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Allow chsh and chfn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert&lt;br /&gt;
 chmod 0500 /etc/ldap/cert&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert/*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: Double check if schema uses ou People or users. If users is used then replace People with users bellow.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow chsh, chfn and root to modify anything ==&lt;br /&gt;
&lt;br /&gt;
In order to allow users to change their shell, an acl rule is required.&lt;br /&gt;
&lt;br /&gt;
Place the following text in shell.ldif:&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcAccess&lt;br /&gt;
 olcAccess: {0}to attrs=loginShell&lt;br /&gt;
   by self write&lt;br /&gt;
   by * read&lt;br /&gt;
 olcAccess: {1}to *&lt;br /&gt;
   by set=&amp;quot;[cn=root,ou=Group,dc=lysator,dc=liu,dc=se]/memberUid &amp;amp; user/uid&amp;quot; manage&lt;br /&gt;
   by * read&lt;br /&gt;
&lt;br /&gt;
Then run the following:&lt;br /&gt;
&lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f shell_access.ldif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Verify by running:&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcAccess&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  # extended LDIF&lt;br /&gt;
  #&lt;br /&gt;
  # LDAPv3&lt;br /&gt;
  # base &amp;lt;olcDatabase={1}mdb,cn=config&amp;gt; with scope subtree&lt;br /&gt;
  # filter: (objectclass=*)&lt;br /&gt;
  # requesting: olcAccess &lt;br /&gt;
  #&lt;br /&gt;
  # {1}mdb, config&lt;br /&gt;
  dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
  olcAccess: {0}to attrs=loginShell,gecos by self write by * read&lt;br /&gt;
  olcAccess: {1}to * by set=&amp;quot;[cn=root,ou=Group,dc=lysator,dc=liu,dc=se]/memberUi&lt;br /&gt;
   d &amp;amp; user/uid&amp;quot; manage by * read&lt;br /&gt;
  # search result&lt;br /&gt;
  search: 2&lt;br /&gt;
  result: 0 Success&lt;br /&gt;
  # numResponses: 2&lt;br /&gt;
  # numEntries: 1&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.\&lt;br /&gt;
&lt;br /&gt;
=== Database config change doesn&#039;t take effetct ===&lt;br /&gt;
Try restarting slapd. Some changes doesn&#039;t take effect immediately.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Fia&amp;diff=5487</id>
		<title>Fia</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Fia&amp;diff=5487"/>
		<updated>2017-03-09T10:03:30Z</updated>

		<summary type="html">&lt;p&gt;Net4all: Skapade sidan med &amp;#039;{| style=&amp;quot;border: 0px&amp;quot; ! Funktion |  Inhysning FIA (Föreningen för Intelligenta Autonoma System). |  Webbserver för fiarobotics.se och robocupjunior.se. |- ! Operativsystem...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
|  Inhysning FIA (Föreningen för Intelligenta Autonoma System).&lt;br /&gt;
|  Webbserver för fiarobotics.se och robocupjunior.se.&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:CentOS 7| CentOS 7.3]]&lt;br /&gt;
|-&lt;br /&gt;
! Arkitektur&lt;br /&gt;
| x86-64&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; | SSH-fingeravtryck&lt;br /&gt;
| &amp;lt;pre&amp;gt;PLACEHOLDER&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| Proxmoxklustret &lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| net4all&lt;br /&gt;
|-&lt;br /&gt;
! Kontaktperson&lt;br /&gt;
| Jon Dybeck (net4all@lysator.liu.se)&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Inhysningar]]&lt;br /&gt;
[[Kategori:CentOS 7]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;br /&gt;
[[Kategori:Virtuella servrar]]&lt;br /&gt;
[[Kategori:Proxmox]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5372</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5372"/>
		<updated>2017-02-02T19:48:36Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Allow chsh and chfn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert&lt;br /&gt;
 chmod 0500 /etc/ldap/cert&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert/*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: Double check if schema uses ou People or users. If users is used then replace People with users bellow.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=People,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
In order to allow users to change their shell, an acl rule is required.&lt;br /&gt;
&lt;br /&gt;
Place the following text in shell.ldif:&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcAccess&lt;br /&gt;
 olcAccess: {0}to attrs=loginShell&lt;br /&gt;
   by self write&lt;br /&gt;
   by * read&lt;br /&gt;
 olcAccess: {1}to *&lt;br /&gt;
   by * read&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run the following:&lt;br /&gt;
&lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f shell_access.ldif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Verify by running:&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcAccess&lt;br /&gt;
&lt;br /&gt;
It should print:&lt;br /&gt;
&lt;br /&gt;
  SASL/EXTERNAL authentication started&lt;br /&gt;
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
  SASL SSF: 0&lt;br /&gt;
  # extended LDIF&lt;br /&gt;
  #&lt;br /&gt;
  # LDAPv3&lt;br /&gt;
  # base &amp;lt;olcDatabase={1}mdb,cn=config&amp;gt; with scope subtree&lt;br /&gt;
  # filter: (objectclass=*)&lt;br /&gt;
  # requesting: olcAccess &lt;br /&gt;
  #&lt;br /&gt;
  # {1}mdb, config&lt;br /&gt;
  dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
  olcAccess: {0}to attrs=loginShell,gecos by self write by * read&lt;br /&gt;
  olcAccess: {1}to * by * read&lt;br /&gt;
  # search result&lt;br /&gt;
  search: 2&lt;br /&gt;
  result: 0 Success&lt;br /&gt;
  # numResponses: 2&lt;br /&gt;
  # numEntries: 1&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.\&lt;br /&gt;
&lt;br /&gt;
=== Database config change doesn&#039;t take effetct ===&lt;br /&gt;
Try restarting slapd. Some changes doesn&#039;t take effect immediately.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5348</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5348"/>
		<updated>2016-11-22T18:20:57Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert&lt;br /&gt;
 chmod 0500 /etc/ldap/cert&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert/*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5347</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5347"/>
		<updated>2016-11-22T18:17:16Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Certficates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert&lt;br /&gt;
 chmod 0500 /etc/ldap/cert&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert/*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL v2 ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5346</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5346"/>
		<updated>2016-11-22T18:09:29Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import AUTOFS schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL v2 ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5345</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5345"/>
		<updated>2016-11-22T18:08:50Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import AUTOFS schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=organizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 # auto.master, automount, lysator.liu.se&lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL v2 ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5344</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5344"/>
		<updated>2016-11-22T18:07:46Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import AUTOFS schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=aorganizationalUnit)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 # auto.master, automount, lysator.liu.se&lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL v2 ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5343</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5343"/>
		<updated>2016-11-22T17:56:10Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import NIS User schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
https://bobcares.com/blog/kerberos-and-ldap-so-strong-together/&lt;br /&gt;
&lt;br /&gt;
http://www.lichteblau.com/ldapvi/manual/ &amp;lt;-- Super useful for editing&lt;br /&gt;
&lt;br /&gt;
https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using-starttls&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
Make sure puppet is updated and ran. Our puppet configuration will install some needed schemas and software needed to follow this installation process.&lt;br /&gt;
&lt;br /&gt;
= Create certs and keytabs =&lt;br /&gt;
&lt;br /&gt;
== Certficates ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
== Kerberos ==&lt;br /&gt;
&lt;br /&gt;
The ldap server needs two keytabs, one for the server itself and one specific to ldap.&lt;br /&gt;
&lt;br /&gt;
The host principal should be located under /etc as with all other machines.&lt;br /&gt;
&lt;br /&gt;
The ldap/ldap.lysator.liu.se principal should be located at /etc/ldap/ldap.keytab and have 440 openldap:openldap.&lt;br /&gt;
&lt;br /&gt;
/etc/default/slapd should be updated with (should already have been configured by puppet)&lt;br /&gt;
&lt;br /&gt;
  export KRB5_KTNAME=/etc/ldap/ldap.keytab&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing (To be removed)==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
Modify NIS schema, change NetgroupTriple SYNTAX to 1.3.6.1.4.1.1466.115.121.1.26 using ldapvi&lt;br /&gt;
&lt;br /&gt;
 ldapvi -h ldapi:/// -D cn=config -Y EXTERNAL -b cn=config&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add top ou for automount to automount.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
Import using&lt;br /&gt;
 ldapadd -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f automount.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(objectClass=automountMap)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Following should be in the output&lt;br /&gt;
 # auto.master, automount, lysator.liu.se&lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
== Kerberos Auth ==&lt;br /&gt;
&lt;br /&gt;
Make ldap use kerberos for auth against ldap (e.g database access). This does not cover using kerberos for login.&lt;br /&gt;
&lt;br /&gt;
Add the following to kerb.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcAuthzRegexp&lt;br /&gt;
 olcAuthzRegexp: uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslHost&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
 &lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcSaslRealm&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f kerb.ldif&lt;br /&gt;
&lt;br /&gt;
Verify by running&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcAuthzRegexp=*)&amp;quot; olcAuthzRegexp&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcAuthzRegexp: {0}uid=(.*),cn=lysator.liu.se,cn=gssapi,cn=auth uid=$1,ou=users,dc=lysator,dc=liu,dc=se&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslHost=*)&amp;quot; olcSaslHost&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslHost: ldap.lysator.liu.se&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSaslRealm=*)&amp;quot; olcSaslRealm&lt;br /&gt;
&lt;br /&gt;
Should output&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcSaslRealm: LYSATOR.LIU.SE&lt;br /&gt;
&lt;br /&gt;
Verify that the output matches the same as configured above&lt;br /&gt;
&lt;br /&gt;
Next, add &#039;export KRB5_KTNAME=/etc/ldap/ldap.keytab&#039; to /etc/default/slapd (there should be a similar entry where you can put this line)&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL v2 ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Specify certificate and change verify client to allow (does the default (never) work? (note, dashes between lines should be included)&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: allow&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
Only allow encrypted connections when accessing the database&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
== Check top tree nodes in ldap database ==&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
== Configure migrationtools ==&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Importing into ldap database ==&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
=== Migrating autofs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Migration tools provides a tool to migrate from nis but ueses other objectClasses. Some manuall work is needed to match the schema we use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Data should be in utf-8 before importing. Don&#039;t forget to convert.&lt;br /&gt;
&lt;br /&gt;
Following needs to be converted:&lt;br /&gt;
auto.master&lt;br /&gt;
auto.home&lt;br /&gt;
auto.pkg&lt;br /&gt;
auto.lysator&lt;br /&gt;
&lt;br /&gt;
==== auto.master ====&lt;br /&gt;
Add &lt;br /&gt;
 dn: ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 ou: auto.master&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Indirect mounts ====&lt;br /&gt;
Next is to add entries for /home, /mp and /pkg&lt;br /&gt;
Template follows:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=/&amp;lt;dir&amp;gt;,ou=auto.master,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 cn: /&amp;lt;dir&amp;gt;&lt;br /&gt;
 automountInformation: auto.&amp;lt;file&amp;gt; &amp;lt;mount info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where dir is mount point e.g /home. File is home for auto.home&lt;br /&gt;
&lt;br /&gt;
For each indirect mount you also have to add a &amp;quot;top&amp;quot; for that &amp;quot;file&amp;quot;&lt;br /&gt;
  dn: ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
  ou: auto.&amp;lt;file&amp;gt;&lt;br /&gt;
  objectClass: top&lt;br /&gt;
  objectClass: automountMap&lt;br /&gt;
&lt;br /&gt;
==== Entry Template ====&lt;br /&gt;
&lt;br /&gt;
 dn: cn=&amp;lt;name&amp;gt;,ou=auto.&amp;lt;file&amp;gt;,ou=automount,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 cn: &amp;lt;name&amp;gt;&lt;br /&gt;
 objectClass: automount&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 automountInformation: -fstype=nfs,rw &amp;lt;additional mount options&amp;gt; &amp;lt;server&amp;gt;:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rouk&amp;diff=5342</id>
		<title>Rouk</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rouk&amp;diff=5342"/>
		<updated>2016-11-22T17:08:58Z</updated>

		<summary type="html">&lt;p&gt;Net4all: Skapade sidan med &amp;#039;{| style=&amp;quot;border: 0px&amp;quot; ! Funktion | Tjänsteserver |- ! Specialfunktion | Head / management for Procurve 5412 router |- ! Operativsystem | :Kategori:Debian 8 |- ! Arkitekt...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Tjänsteserver&lt;br /&gt;
|-&lt;br /&gt;
! Specialfunktion&lt;br /&gt;
| Head / management for Procurve 5412 router&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:Debian 8]]&lt;br /&gt;
|-&lt;br /&gt;
! Arkitektur&lt;br /&gt;
| x86_64&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; | SSH-fingeravtryck&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[FOO-hallen]]&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| net4all&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Tjänsteservrar]]&lt;br /&gt;
[[Kategori:Debian 8.0]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Ldap&amp;diff=5341</id>
		<title>Ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Ldap&amp;diff=5341"/>
		<updated>2016-11-21T17:21:30Z</updated>

		<summary type="html">&lt;p&gt;Net4all: Skapade sidan med &amp;#039;{| style=&amp;quot;border: 0px&amp;quot; ! Funktion | Tjänsteserver |- ! Specialfunktion | LDAP Master |- ! Operativsystem |  Debian 8 |- ! Arkitektur | x86/PC |- ! SSH...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Tjänsteserver&lt;br /&gt;
|-&lt;br /&gt;
! Specialfunktion&lt;br /&gt;
| LDAP Master&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:Debian 8 | Debian 8]]&lt;br /&gt;
|-&lt;br /&gt;
! Arkitektur&lt;br /&gt;
| x86/PC&lt;br /&gt;
|-&lt;br /&gt;
! SSH-fingeravtryck&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
PLACEHOLDER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[FOO-hallen]], [[:Kategori:Rack B10 | rack B10]]&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| [[User:net4all|net4all]] [[User:baafen|baafen]]&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tjänsteservrar]]&lt;br /&gt;
[[Category:Maskiner i drift]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5255</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5255"/>
		<updated>2016-09-07T16:35:22Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure slapd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
http://techiezone.rottigni.net/2011/12/change-root-dn-password-on-openldap/&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure debug logging ==&lt;br /&gt;
&lt;br /&gt;
Put this in debug.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcLogLevel&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
Run this to change log level.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f debug.ldif&lt;br /&gt;
&lt;br /&gt;
Verify using this.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcLogLevel=*)&amp;quot; olcLogLevel&lt;br /&gt;
&lt;br /&gt;
Borde skriva ut.&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcLogLevel: -1&lt;br /&gt;
&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
=== Importing into ldap database ===&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5205</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5205"/>
		<updated>2016-02-12T15:41:16Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
=== Importing into ldap database ===&lt;br /&gt;
&lt;br /&gt;
Remember to convert the output of the migration scripts.&lt;br /&gt;
Then run this.&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Z -H ldapi:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W -f nis-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
It will display many lines similar to this:&lt;br /&gt;
&lt;br /&gt;
 adding new entry &amp;quot;uid=&amp;lt;user&amp;gt;,ou=&amp;lt;thing&amp;gt;,dc=lysator,dc=liu,dc=se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the command may take several seconds to complete (depending on the dataset size).&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5204</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5204"/>
		<updated>2016-02-12T15:37:59Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
== Character conversion ==&lt;br /&gt;
&lt;br /&gt;
Check encoding from output when converting from nis to ldap&lt;br /&gt;
  file -bi &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert to utf-8&lt;br /&gt;
  iconv -f &amp;lt;current-encoding&amp;gt; -t utf-8  &amp;lt;file&amp;gt; &amp;gt; &amp;lt;file&amp;gt;-utf8.ldif&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Importing into ldap database =&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5202</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5202"/>
		<updated>2016-02-12T14:47:52Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Check top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Z -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
Should display:&lt;br /&gt;
&lt;br /&gt;
 # admin, lysator.liu.se&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword:: &amp;lt;password-hash&amp;gt;&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 3&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 3&lt;br /&gt;
 # numEntries: 2&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5196</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5196"/>
		<updated>2016-02-05T17:57:26Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Check that admin can login using tls:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -ZZ -W -H ldap:/// -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; &amp;quot;(cn=admin)&amp;quot; description&lt;br /&gt;
&lt;br /&gt;
Should first query for password, like so:&lt;br /&gt;
&lt;br /&gt;
 Enter LDAP Password:&lt;br /&gt;
&lt;br /&gt;
It is the password entered during package configuration.&lt;br /&gt;
&lt;br /&gt;
Then it should print the following:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5195</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5195"/>
		<updated>2016-02-05T17:46:45Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin24/sasl.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check it using:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcTLSCACertificateFile=*)&amp;quot; olcTLSCACertificateFile olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5193</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5193"/>
		<updated>2016-02-05T17:41:57Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
Add using:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f certs.ldif&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5192</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5192"/>
		<updated>2016-02-05T17:36:10Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Add it like so:&lt;br /&gt;
&lt;br /&gt;
 ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif &lt;br /&gt;
&lt;br /&gt;
Should print:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 modifying entry &amp;quot;olcDatabase={1}mdb,cn=config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; &amp;quot;(olcSecurity=*)&amp;quot; olcSecurity | grep olcSecurity&lt;br /&gt;
&lt;br /&gt;
Should output:&lt;br /&gt;
&lt;br /&gt;
 SASL/EXTERNAL authentication started&lt;br /&gt;
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth&lt;br /&gt;
 SASL SSF: 0&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5191</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5191"/>
		<updated>2016-02-05T17:19:37Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Add top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, we should verify that some structures exist.&lt;br /&gt;
Also, that admin can login.&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -H ldapi:/// -b &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot; -D &amp;quot;cn=admin,dc=lysator,dc=liu,dc=se&amp;quot; -W&lt;br /&gt;
&lt;br /&gt;
Use the password specified during the package configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5190</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5190"/>
		<updated>2016-02-05T17:11:02Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Purgin the database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm -r /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword: {SHA}hash&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5189</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5189"/>
		<updated>2016-02-05T17:08:04Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Add top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword: {SHA}hash&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5188</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5188"/>
		<updated>2016-02-05T17:07:07Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Add top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 userPassword: {SHA}wUE4VnZMBzNid4wQkUBl1cFSpfo=&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5187</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5187"/>
		<updated>2016-02-05T17:03:34Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Add top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: organizationalRole&lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5186</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5186"/>
		<updated>2016-02-05T16:42:28Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Add top tree nodes in ldap database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se &lt;br /&gt;
 objectClass: organizationalRole &lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
= Errors &amp;amp; Hell =&lt;br /&gt;
&lt;br /&gt;
=== Implementation Specific Error (80) ===&lt;br /&gt;
This can be due to incorrect indentation or possibly that a path to a file specified in the ldif is incorrect. We got this error while trying to add the encryption keys. The path was correct but the files had not been moved there yet.&lt;br /&gt;
Implementation Specific Error seems to be a catch all kind of error.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5181</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5181"/>
		<updated>2016-02-05T15:23:03Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Importing data from NIS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
Add the following:&lt;br /&gt;
&lt;br /&gt;
 dn: dc=lysator,dc=liu,dc=se&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectclass: dcObject&lt;br /&gt;
 objectclass: organization&lt;br /&gt;
 structuralObjectClass: organization&lt;br /&gt;
 o: Lysator&lt;br /&gt;
 dc: lysator&lt;br /&gt;
&lt;br /&gt;
 dn: cn=admin,dc=lysator,dc=liu,dc=se &lt;br /&gt;
 objectclass: organizationalRole &lt;br /&gt;
 objectClass: simpleSecurityObject&lt;br /&gt;
 cn: admin&lt;br /&gt;
 description: LDAP administrator&lt;br /&gt;
 structuralObjectClass: organizationalRole&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5170</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5170"/>
		<updated>2016-01-29T17:12:30Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import AUTOFS schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5168</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5168"/>
		<updated>2016-01-29T17:03:59Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import NIS User schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5167</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5167"/>
		<updated>2016-01-29T17:02:47Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Check that it is in the config:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | egrep&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5166</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5166"/>
		<updated>2016-01-29T16:42:07Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
First, generate official certificates.&lt;br /&gt;
There should be three files, in our case:&lt;br /&gt;
&lt;br /&gt;
 /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
&lt;br /&gt;
Make sure that the openldap user has the rights to read these files.&lt;br /&gt;
&lt;br /&gt;
 chown -R openldap:openldap /etc/ldap/cert/*&lt;br /&gt;
 chmod -R 0400 /etc/ldap/cert*&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5164</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5164"/>
		<updated>2016-01-29T15:47:41Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Purgin the database =&lt;br /&gt;
&lt;br /&gt;
To start from scratch:&lt;br /&gt;
&lt;br /&gt;
 service slapd stop&lt;br /&gt;
 rm -r /var/lib/ldap/*&lt;br /&gt;
 rm /etc/ldap/slapd.d/*&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find automount&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep automount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: Make sure this file is installed by puppet&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5162</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5162"/>
		<updated>2016-01-29T15:33:32Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure more extensive indexing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import NIS User schema ==&lt;br /&gt;
&lt;br /&gt;
Import nis schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif&lt;br /&gt;
&lt;br /&gt;
Verify that you can find posixAccount&lt;br /&gt;
&lt;br /&gt;
  ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot; | grep posixAccount&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Import autofs schema &lt;br /&gt;
  ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/autofs-ldap.ldif&lt;br /&gt;
&lt;br /&gt;
TODO: Make sure this file is installed by puppet&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5159</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5159"/>
		<updated>2016-01-29T15:13:19Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcTLSCACertificateFile&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateFile&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSCertificateKeyFile&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 -&lt;br /&gt;
 add: olcTLSVerifyClient&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5158</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5158"/>
		<updated>2016-01-29T15:09:16Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}mdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5137</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5137"/>
		<updated>2015-12-11T19:34:15Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Useful documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/MigrationTools&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: replace&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5136</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5136"/>
		<updated>2015-12-11T19:33:39Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: replace&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5135</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5135"/>
		<updated>2015-12-11T19:32:17Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Import POSIX User schema ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: replace&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
=== Add top tree nodes in ldap database ===&lt;br /&gt;
&lt;br /&gt;
Before we import data into the database, some structures must be constructed inside the database.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Configure migrationtools ===&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 apt-get install migrationtools&lt;br /&gt;
&lt;br /&gt;
This installs a number of scripts and configuration tools for converting NIS to ldap.&lt;br /&gt;
&lt;br /&gt;
Configuration files can be found here:&lt;br /&gt;
&lt;br /&gt;
 /usr/share/migrationtools&lt;br /&gt;
&lt;br /&gt;
Cruically in :&lt;br /&gt;
&lt;br /&gt;
 /etc/migrationtools/migrate_common.ph&lt;br /&gt;
&lt;br /&gt;
Change to the following:&lt;br /&gt;
&lt;br /&gt;
 $DEFAULT_MAIL_DOMAIN = &amp;quot;lysator.liu.se&amp;quot;;&lt;br /&gt;
 $DEFAULT_BASE = &amp;quot;[[&amp;quot;dc=lysator,dc=liu,dc=se&amp;quot;]]&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5134</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5134"/>
		<updated>2015-12-11T19:17:32Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure SASL/SSL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
Put the following in ldif files and apply.&lt;br /&gt;
&lt;br /&gt;
Only use tls.&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: replace&lt;br /&gt;
 replace: olcSecurity&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
&lt;br /&gt;
Specify certificate.&lt;br /&gt;
&lt;br /&gt;
 dn: cn=config&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
(Also install the certificates.)&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5133</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5133"/>
		<updated>2015-12-11T19:10:32Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* Configure slapd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
 olcSecurity: tls=1&lt;br /&gt;
 olcTLSCACertificateFile: /etc/ldap/cert/chain-lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateFile: /etc/ldap/cert/ldap.lysator.liu.se.pem&lt;br /&gt;
 olcTLSCertificateKeyFile: /etc/ldap/cert/ldap.lysator.liu.se.key&lt;br /&gt;
 olcTLSVerifyClient: never&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
== Allow chsh and chfn ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5132</id>
		<title>Rootmanual:ldap</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootmanual:ldap&amp;diff=5132"/>
		<updated>2015-12-11T19:00:26Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Useful documentation =&lt;br /&gt;
&lt;br /&gt;
https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;br /&gt;
&lt;br /&gt;
http://www.openldap.org/doc/admin22/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html&lt;br /&gt;
&lt;br /&gt;
= Bootstrap slapd =&lt;br /&gt;
&lt;br /&gt;
First install debian, configure the network and run puppet.&lt;br /&gt;
Please see ldap-server in the lysator puppet git repo.&lt;br /&gt;
&lt;br /&gt;
Now, slapd needs to be reconfigured (mainly to set ldap admin password).&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure -plow slapd&lt;br /&gt;
&lt;br /&gt;
Example answers, note the password &amp;lt;ldap-admin&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Omit OpenLDAP server configuration? no&lt;br /&gt;
 DNS nomain name: lysator.liu.se&lt;br /&gt;
 Organization name: lysator.liu.se&lt;br /&gt;
 Administrator password: &amp;lt;ldap-admin&amp;gt;&lt;br /&gt;
 Database backend to use: MDB&lt;br /&gt;
 Remove database when slapd is purged: no&lt;br /&gt;
 Move old database: yes&lt;br /&gt;
 Allow ldapv2 protocol: no&lt;br /&gt;
&lt;br /&gt;
Last, make sure slapd is running:&lt;br /&gt;
&lt;br /&gt;
 service slapd start&lt;br /&gt;
&lt;br /&gt;
You should see this in /var/log/syslog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;date&amp;gt; ldap slapd[XXX]: slapd starting&lt;br /&gt;
 &amp;lt;data&amp;gt; ldap slapd[XXX]: Starting OpenLDAP: slapd.&lt;br /&gt;
&lt;br /&gt;
= Configure slapd =&lt;br /&gt;
&lt;br /&gt;
The OpenLDAP server (slapd) is configured by making changes to a database call&lt;br /&gt;
ed &amp;quot;cn=config&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We need to make a number of changes before we are ready to initialize the normal database with user data.&lt;br /&gt;
&lt;br /&gt;
We make the changes by writing so called ldif files and applying them to the database with the ldapmodify tool.&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f diff.ldif&lt;br /&gt;
&lt;br /&gt;
For viewing changes we use the following:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -Y EXTERNAL -H ldapi:/// -b &amp;quot;cn=config&amp;quot;&lt;br /&gt;
== Configure more extensive indexing ==&lt;br /&gt;
&lt;br /&gt;
Configure slapd to use more indexing to improve performance.&lt;br /&gt;
Put this into indexing.ldif&lt;br /&gt;
&lt;br /&gt;
 dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: cn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: sn pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uid pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: displayName pres,sub,eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: default sub&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: uidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: gidNumber eq&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: mail,givenName eq,subinitial&lt;br /&gt;
 -&lt;br /&gt;
 add: olcDbIndex&lt;br /&gt;
 olcDbIndex: dc eq&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
 ldapmodify -Y EXTERNAL -H ldapi:/// -f indexing.ldif&lt;br /&gt;
&lt;br /&gt;
== Configure SASL/SSL ==&lt;br /&gt;
&lt;br /&gt;
== Import POSIX User schema ? ==&lt;br /&gt;
&lt;br /&gt;
== Import AUTOFS schema ==&lt;br /&gt;
&lt;br /&gt;
= Importing data from NIS =&lt;br /&gt;
&lt;br /&gt;
* Import from nis scripts.&lt;br /&gt;
* Autofs conversion.&lt;br /&gt;
* Character conversion.&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootgruppen&amp;diff=5125</id>
		<title>Rootgruppen</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootgruppen&amp;diff=5125"/>
		<updated>2015-11-10T12:52:04Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* net4all */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rootgruppen är de som administrerar Lysators datorsystem. Här följer en kort presentation av dem, i den mån de vill avslöja sig själva.&lt;br /&gt;
&lt;br /&gt;
Vill du kontakta rootgruppen kan du skicka ett inlägg till LysKOM-mötet &amp;lt;code&amp;gt;Root (@) Lysator&amp;lt;/code&amp;gt; eller ett e-brev till &amp;lt;code&amp;gt;root (hos) lysator.liu.se&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== [[User:pettson|pettson]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Andreas Pettersson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2005&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Pettson.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ur drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Senior sysadmin på Klarna AB&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2008-2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Spelar {Net, Free, Open}BSD och Solaris&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: pettson@{IRCNet, Freenode, EFNet, GIMPNet}&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: pettson@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   LysLysKOM: Andreas Petersson, Lysator/Klarna&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Telefon: 070-565 93 86&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:derfian|derfian]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Karl Mikaelsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2004&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Derfian.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ur drift.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Utvecklare/tekniker, Cendio AB&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Använder Gentoo, Fedora och RHEL/CentOS. Linux, alltså.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Mycket, men föredrar Python.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
| Epost: derfian@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysKOM: derfian (Karl Mikaelsson)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 070-320 84 44&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[User:blambi|blambi]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Patrik Lembke &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| På drift i exil, eller något sådant&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Allt som smakar GNU:ish och ibland annat som är fritt.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| {e,c}Lisp, C (då helst C99 alt GNU99), Python, Ruby, Bash, GNU Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: blambi@{Freenode, Mythos}&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: blambi@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:joakim_tosteberg|joakim_tosteberg]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Joakim Tosteberg&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2008&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:joakim.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2009-2010&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: joakim_tosteberg@Freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: joakim_tosteberg@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   LysLysKOM: Joakim Tosteberg&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Telefon: 0702 - 253 153&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:busk|busk]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Johan Busk Eriksson &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| På drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Systemförvaltare, teknisk webmaster, Liu-IT&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| GNU/Linux, om katten själv får välja&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Java, C#&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: kodein@freenode (och EFNet)&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Epost: &amp;lt;användarnamn&amp;gt; at lysator liu se&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|  PGP/GPG-nyckel: 75079558&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tobbez|tobbez]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Torbjörn Lönnemark&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2006&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2010&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tobbez @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tobbez@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:zeising|zeising]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Niclas Zeising&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2010&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Spelar helst {Free,Open}BSD men även Linux och Solaris kan gå.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontakt&lt;br /&gt;
| IRC: Erandir @ EFnet, IRCnet samt Zeising @ freenode&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysLysKOM: zeising&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 070-532 10 11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tias|tias]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Mattias Dandanell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2011&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tias @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tias@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:sebth|sebth]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Sebastian Thorarensen&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Driver på alla hjul&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2014-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Har prövat på diverse GNU/Linux, FreeBSD, NetBSD och Solaris&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, Java, Lisp och diverse skalverktyg, m.m&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontakt&lt;br /&gt;
| E-post: sebth@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysLysKOM: Sebastian Thorarensen&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| IRC: Sebban @ Freenode&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 0733-56 78 50&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:baafen|baafen]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Joakim Braaf&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2011&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: baafen @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: baafen@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:petterl|petterl]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Petter Larsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2000&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I långsam drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| De flesta linuxsmaker.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Erlang, Pike, C, Lisp, Java, C++, Bash etc.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Petter Larsson&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: petterl@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:pen|pen]] ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Namn    &lt;br /&gt;
| Peter Eriksson       &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Medlem sedan    &lt;br /&gt;
| 1989       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Root sedan    &lt;br /&gt;
| 1990       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Foto    &lt;br /&gt;
| [[Bild:Peter2003.jpg|none|thumb]] &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Jobb    &lt;br /&gt;
| IT-chef, IFM.         &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Rum     &lt;br /&gt;
| Fysikhuset, rum F203 &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Telefon &lt;br /&gt;
| 0705-182786          &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:bellman|bellman]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Thomas Bellman&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 1988&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 1990&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Avdankad gammelroot; ägnar sig mest åt att klaga på ungrötterna.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Låter handdockor blåsa rökringar i bunkern.  Borde även valla LHC- och iskubsdata.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Gentoo, CentOS&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Python, C, Puppet, sh, GNU Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Bellman -- The Recursive Hacker&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:poj|poj]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Per Jonsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2006&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Poj_datorhandbok.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Sporadiskt.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Ja&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Det mesta, men vissa saker bara när jag får betalt för det. Men gärna lite OpenBSD&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Python om jag får välja, det mesta mot betalning&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Favoriteditor&lt;br /&gt;
| Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Per O Jonsson&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
| Epost: inses lätt!&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:zino|zino]] ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Namn    &lt;br /&gt;
| Peter Bortas       &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Medlem sedan    &lt;br /&gt;
| 1994       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Root sedan    &lt;br /&gt;
| 1995       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Selektiv&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Jobb    &lt;br /&gt;
| Utvecklare, Opera.         &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Rum     &lt;br /&gt;
| Övre tornrummet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:grubba|grubba]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Henrik Grubbström&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 1991&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 1993&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Selektiv, mestadels Xenofarm.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Utvecklare, Roxen Internet Software.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| De flesta SVR4 och POSIX, ju obskyrare desto bättre. Undviker dock gärna OpenBSD.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Pike, C, sh, m4, assembler&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Henrik Grubbström&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;grubba@grubba.org&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:hx|hx]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Henrik Henriksson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2013&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ganska hög uptime.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Manjaro&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Haskell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;hx@hx.ax&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;hx@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[User:net4all|net4all]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Jon Dybeck&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| &amp;quot;Aktiv&amp;quot;, besöker ~ och fixar med LDAP.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Systemadministratör, Liu-IT / TUS.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Mest Arch Linux och Debian (derivat).&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, Scheme, Common Lisp, C++.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;net4all@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;jon.dybeck@liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;jon@dybeck.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   IRC: net4all @ Freenode&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:knase|knase]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Rasmus Holm&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| FreeBSD och diverse Debian derivat.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, C++, Bash.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;knase@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   IRC: knase @ freenode&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:dandan|dandan]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Daniel Dandanell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: dandan @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: dandan@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:jiffe|jiffe]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Johan Frisk&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2013&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Debian, men allt går.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Valet av pensel är oviktigt vid skapandet av tavlan.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: jiffe__ @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: jiffe@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tokkugawa|tokkugawa]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Tony Magnusson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| LiU-IT&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| OSX, Debian, FreeBSD.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C++, Python, perl, Swift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tokkugawa @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tokkugawa@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:miiza|miiza]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Simon Keisala&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Diverse Debian derivat.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C-familjen, Python, Bash.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;miiza@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   IRC: miiza @ freenode&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Rootgruppen&amp;diff=5124</id>
		<title>Rootgruppen</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Rootgruppen&amp;diff=5124"/>
		<updated>2015-11-10T12:51:17Z</updated>

		<summary type="html">&lt;p&gt;Net4all: /* net4all */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rootgruppen är de som administrerar Lysators datorsystem. Här följer en kort presentation av dem, i den mån de vill avslöja sig själva.&lt;br /&gt;
&lt;br /&gt;
Vill du kontakta rootgruppen kan du skicka ett inlägg till LysKOM-mötet &amp;lt;code&amp;gt;Root (@) Lysator&amp;lt;/code&amp;gt; eller ett e-brev till &amp;lt;code&amp;gt;root (hos) lysator.liu.se&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== [[User:pettson|pettson]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Andreas Pettersson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2005&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Pettson.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ur drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Senior sysadmin på Klarna AB&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2008-2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Spelar {Net, Free, Open}BSD och Solaris&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: pettson@{IRCNet, Freenode, EFNet, GIMPNet}&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: pettson@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   LysLysKOM: Andreas Petersson, Lysator/Klarna&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Telefon: 070-565 93 86&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:derfian|derfian]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Karl Mikaelsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2004&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Derfian.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ur drift.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Utvecklare/tekniker, Cendio AB&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Använder Gentoo, Fedora och RHEL/CentOS. Linux, alltså.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Mycket, men föredrar Python.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
| Epost: derfian@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysKOM: derfian (Karl Mikaelsson)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 070-320 84 44&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[User:blambi|blambi]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Patrik Lembke &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| På drift i exil, eller något sådant&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Allt som smakar GNU:ish och ibland annat som är fritt.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| {e,c}Lisp, C (då helst C99 alt GNU99), Python, Ruby, Bash, GNU Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: blambi@{Freenode, Mythos}&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: blambi@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:joakim_tosteberg|joakim_tosteberg]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Joakim Tosteberg&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2008&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:joakim.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2009-2010&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: joakim_tosteberg@Freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Jabber: joakim_tosteberg@lysator.liu.se&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   LysLysKOM: Joakim Tosteberg&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Telefon: 0702 - 253 153&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:busk|busk]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Johan Busk Eriksson &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| På drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Systemförvaltare, teknisk webmaster, Liu-IT&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| GNU/Linux, om katten själv får välja&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Java, C#&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: kodein@freenode (och EFNet)&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Epost: &amp;lt;användarnamn&amp;gt; at lysator liu se&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|  PGP/GPG-nyckel: 75079558&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tobbez|tobbez]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Torbjörn Lönnemark&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2006&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2010&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tobbez @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tobbez@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:zeising|zeising]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Niclas Zeising&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2007&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2010&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Spelar helst {Free,Open}BSD men även Linux och Solaris kan gå.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontakt&lt;br /&gt;
| IRC: Erandir @ EFnet, IRCnet samt Zeising @ freenode&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysLysKOM: zeising&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 070-532 10 11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tias|tias]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Mattias Dandanell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2011&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tias @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tias@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:sebth|sebth]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Sebastian Thorarensen&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Driver på alla hjul&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
| Superroot 2014-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Har prövat på diverse GNU/Linux, FreeBSD, NetBSD och Solaris&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, Java, Lisp och diverse skalverktyg, m.m&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontakt&lt;br /&gt;
| E-post: sebth@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| LysLysKOM: Sebastian Thorarensen&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| IRC: Sebban @ Freenode&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
| Telefon: 0733-56 78 50&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:baafen|baafen]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Joakim Braaf&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2011&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: baafen @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: baafen@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:petterl|petterl]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Petter Larsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2000&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I långsam drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Övrigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| De flesta linuxsmaker.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Erlang, Pike, C, Lisp, Java, C++, Bash etc.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Petter Larsson&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: petterl@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:pen|pen]] ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Namn    &lt;br /&gt;
| Peter Eriksson       &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Medlem sedan    &lt;br /&gt;
| 1989       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Root sedan    &lt;br /&gt;
| 1990       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Foto    &lt;br /&gt;
| [[Bild:Peter2003.jpg|none|thumb]] &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Jobb    &lt;br /&gt;
| IT-chef, IFM.         &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Rum     &lt;br /&gt;
| Fysikhuset, rum F203 &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Telefon &lt;br /&gt;
| 0705-182786          &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:bellman|bellman]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Thomas Bellman&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 1988&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 1990&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Avdankad gammelroot; ägnar sig mest åt att klaga på ungrötterna.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Låter handdockor blåsa rökringar i bunkern.  Borde även valla LHC- och iskubsdata.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Gentoo, CentOS&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Python, C, Puppet, sh, GNU Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Bellman -- The Recursive Hacker&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:poj|poj]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Per Jonsson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2003&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2006&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Foto&lt;br /&gt;
| | [[Bild:Poj_datorhandbok.jpg|none|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Sporadiskt.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Ja&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Det mesta, men vissa saker bara när jag får betalt för det. Men gärna lite OpenBSD&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Python om jag får välja, det mesta mot betalning&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Favoriteditor&lt;br /&gt;
| Emacs&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Per O Jonsson&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
| Epost: inses lätt!&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:zino|zino]] ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Namn    &lt;br /&gt;
| Peter Bortas       &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Medlem sedan    &lt;br /&gt;
| 1994       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Root sedan    &lt;br /&gt;
| 1995       &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Selektiv&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Jobb    &lt;br /&gt;
| Utvecklare, Opera.         &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| Rum     &lt;br /&gt;
| Övre tornrummet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:grubba|grubba]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Henrik Grubbström&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 1991&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 1993&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Selektiv, mestadels Xenofarm.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Utvecklare, Roxen Internet Software.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| De flesta SVR4 och POSIX, ju obskyrare desto bättre. Undviker dock gärna OpenBSD.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Pike, C, sh, m4, assembler&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   LysLysKOM: Henrik Grubbström&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;grubba@grubba.org&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:hx|hx]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Henrik Henriksson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2013&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| Ganska hög uptime.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Manjaro&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Haskell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;hx@hx.ax&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;hx@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[User:net4all|net4all]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Jon Dybeck&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| &amp;quot;Aktiv&amp;quot;, besöker ~ och fixar med LDAP.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Systemadministratör, Liu-IT / TUS.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Mest Arch Linux och Debian (derivat).&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, Scheme, Common Lisp, C++.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;net4all@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;jon.dybeck@liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   Epost: &amp;lt;jon@dybeck.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:knase|knase]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Rasmus Holm&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| FreeBSD och diverse Debian derivat.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C, Python, C++, Bash.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;knase@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   IRC: knase @ freenode&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:dandan|dandan]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Daniel Dandanell&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2009&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: dandan @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: dandan@lysator...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:jiffe|jiffe]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Johan Frisk&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2013&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Debian, men allt går.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| Valet av pensel är oviktigt vid skapandet av tavlan.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: jiffe__ @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: jiffe@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:tokkugawa|tokkugawa]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Tony Magnusson&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| LiU-IT&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| OSX, Debian, FreeBSD.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C++, Python, perl, Swift&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   IRC: tokkugawa @ freenode&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|  Mail: tokkugawa@lysator.liu.se&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[User:miiza|miiza]] ==&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Namn&lt;br /&gt;
| Simon Keisala&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Medlem sedan&lt;br /&gt;
| 2014&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Root sedan&lt;br /&gt;
| 2015&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Jobb&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | OS&lt;br /&gt;
| Diverse Debian derivat.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Hackar i&lt;br /&gt;
| C-familjen, Python, Bash.&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | Kontaktinfo&lt;br /&gt;
|   Epost: &amp;lt;miiza@lysator.liu.se&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
|   IRC: miiza @ freenode&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Sharelatex&amp;diff=5073</id>
		<title>Sharelatex</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Sharelatex&amp;diff=5073"/>
		<updated>2015-09-12T20:55:40Z</updated>

		<summary type="html">&lt;p&gt;Net4all: Skapade sidan med &amp;#039;{| style=&amp;quot;border: 0px&amp;quot; ! Funktion | Sharelatex-server | Sharelatex är en webbplatform för att redigera latex dokument. | Liknande Google docs. |- ! Operativsystem | [[:Kateg...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Sharelatex-server&lt;br /&gt;
| Sharelatex är en webbplatform för att redigera latex dokument.&lt;br /&gt;
| Liknande Google docs.&lt;br /&gt;
|-&lt;br /&gt;
! Operativsystem&lt;br /&gt;
| [[:Kategori:Ubuntu 14.04| Ubuntu 14.04]]&lt;br /&gt;
|-&lt;br /&gt;
! Arkitektur&lt;br /&gt;
| Virtuell&lt;br /&gt;
|-&lt;br /&gt;
! CPU&lt;br /&gt;
| 2 cores&lt;br /&gt;
|-&lt;br /&gt;
! Minne&lt;br /&gt;
| 2048 - 4096 MB&lt;br /&gt;
|-&lt;br /&gt;
! Ip&lt;br /&gt;
| 130.236.254.52&lt;br /&gt;
|-&lt;br /&gt;
! SSH-fingeravtryck&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| Jon Dybeck (&amp;lt;tt&amp;gt;net4all&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Ubuntu]]&lt;br /&gt;
[[Kategori:Ubuntu 14.04]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=SOF_fysisk&amp;diff=4958</id>
		<title>SOF fysisk</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=SOF_fysisk&amp;diff=4958"/>
		<updated>2015-04-01T07:14:32Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maskinen har lämnats över till Kårservice.&lt;br /&gt;
&lt;br /&gt;
SOF agerade tidigare server åt studentorkesterfestivalen.&lt;br /&gt;
&lt;br /&gt;
SOFs webb har flyttat till Sarin5. (Även nagios övervakningen av SOF.)&lt;br /&gt;
&lt;br /&gt;
Kobra (Kårservice medlemsregister) körs fortfarande här.&lt;br /&gt;
&lt;br /&gt;
Villervallas webb och mail körs inte längre här.&lt;br /&gt;
&lt;br /&gt;
Både Kobra och Villervalla bör kunna flyttas till virtuella maskiner,&lt;br /&gt;
antingen hos Lysator eller LiTHeBlås.&lt;br /&gt;
&lt;br /&gt;
Villervalla har flyttat ut från Lysator (molnlösning).&lt;br /&gt;
&lt;br /&gt;
Kobra och den fysiska maskinen kommer lämnas ut till Kårservice.&lt;br /&gt;
&lt;br /&gt;
(Kobra flyttas alltså ut ur Lysator.)&lt;br /&gt;
&lt;br /&gt;
Maskinen bör pensioneras efter det.&lt;br /&gt;
&lt;br /&gt;
Ansvarig root är inte [mailto:emil@lysator.liu.se Emil Styrke].&lt;br /&gt;
&lt;br /&gt;
Foto: [[Bild:lisse,sof,nazgul.jpg|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Nagiosövervakning: {{Nagios}}.  {{Hosted}}.&lt;br /&gt;
&lt;br /&gt;
Ansvarig kontaktperson på SOF-sidan var i alla fall 2014-04-22 avhandlad i inlägg 20782369&lt;br /&gt;
&lt;br /&gt;
Absvarig kontaktperson hos sof 2015-02-11 är (Olle Vidner, oller120, 070-7306376, olle@vidner.se).&lt;br /&gt;
&lt;br /&gt;
Kontaktperson för Villervalla saknas.&lt;br /&gt;
&lt;br /&gt;
Kontaktperson för Kårservice 2015-03-26 är (Erik Eklöv, 073-3455902, it@karservice.se)&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Maskiner ur drift]]&lt;br /&gt;
[[Kategori:Inhysningar]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=SOF_fysisk&amp;diff=4957</id>
		<title>SOF fysisk</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=SOF_fysisk&amp;diff=4957"/>
		<updated>2015-03-26T13:43:57Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SOF agerade tidigare server åt studentorkesterfestivalen.&lt;br /&gt;
&lt;br /&gt;
SOFs webb har flyttat till Sarin5.&lt;br /&gt;
&lt;br /&gt;
Kobra (Kårservice medlemsregister) körs fortfarande här.&lt;br /&gt;
&lt;br /&gt;
Villervallas webb och mail körs inte längre här.&lt;br /&gt;
&lt;br /&gt;
Både Kobra och Villervalla bör kunna flyttas till virtuella maskiner,&lt;br /&gt;
antingen hos Lysator eller LiTHeBlås.&lt;br /&gt;
&lt;br /&gt;
Villervalla har flyttat ut från Lysator (molnlösning).&lt;br /&gt;
&lt;br /&gt;
Kobra och den fysiska maskinen kommer lämnas ut till Kårservice.&lt;br /&gt;
&lt;br /&gt;
(Kobra flyttas alltså ut ur Lysator.)&lt;br /&gt;
&lt;br /&gt;
Maskinen bör pensioneras efter det.&lt;br /&gt;
&lt;br /&gt;
Ansvarig root är inte [mailto:emil@lysator.liu.se Emil Styrke].&lt;br /&gt;
&lt;br /&gt;
Foto: [[Bild:lisse,sof,nazgul.jpg|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Nagiosövervakning: {{Nagios}}.  {{Hosted}}.&lt;br /&gt;
&lt;br /&gt;
Ansvarig kontaktperson på SOF-sidan var i alla fall 2014-04-22 avhandlad i inlägg 20782369&lt;br /&gt;
&lt;br /&gt;
Absvarig kontaktperson hos sof 2015-02-11 är (Olle Vidner, oller120, 070-7306376, olle@vidner.se).&lt;br /&gt;
&lt;br /&gt;
Kontaktperson för Villervalla saknas.&lt;br /&gt;
&lt;br /&gt;
Kontaktperson för Kårservice 2015-03-26 är (Erik Eklöv, 073-3455902, it@karservice.se)&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Rack B9]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;br /&gt;
[[Kategori:Inhysningar]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Sarin5&amp;diff=4935</id>
		<title>Sarin5</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Sarin5&amp;diff=4935"/>
		<updated>2015-02-14T12:37:27Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sarin5 är host för [[SOF]]s biljettsystem (kör proxmox).&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Proxmox / Webb / Databas&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[FOO-hallen]], [[:Kategori: Rack B3|rack B3]]&lt;br /&gt;
|- &lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
! Nagios-status&lt;br /&gt;
| Ej i Nagios&lt;br /&gt;
|-&lt;br /&gt;
! LysINV&lt;br /&gt;
| {{Hosted}}&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! Kontaktperson&lt;br /&gt;
| Olle Vidner, oller120, 070-7306376, olle@vidner.se (2015-02-11)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ipv6: 2001:6b0:17:f0a0:1::5&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Rack B3]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;br /&gt;
[[Kategori:Inhysningar]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
	<entry>
		<id>https://datorhandbok.lysator.liu.se/index.php?title=Sarin4&amp;diff=4934</id>
		<title>Sarin4</title>
		<link rel="alternate" type="text/html" href="https://datorhandbok.lysator.liu.se/index.php?title=Sarin4&amp;diff=4934"/>
		<updated>2015-02-14T12:37:08Z</updated>

		<summary type="html">&lt;p&gt;Net4all: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sarin4 är en av [[LiTHeBlås]] maskiner som kör proxmox men var tom vid skrivande stund.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 0px&amp;quot;&lt;br /&gt;
! Funktion&lt;br /&gt;
| Proxmox&lt;br /&gt;
|-&lt;br /&gt;
! Placering&lt;br /&gt;
| [[FOO-hallen]], [[:Kategori: Rack B3|rack B3]]&lt;br /&gt;
|- &lt;br /&gt;
! Driftstatus&lt;br /&gt;
| I drift&lt;br /&gt;
|-&lt;br /&gt;
! Nagios-status&lt;br /&gt;
| Ej i Nagios&lt;br /&gt;
|-&lt;br /&gt;
! LysINV&lt;br /&gt;
| {{Hosted}}&lt;br /&gt;
|-&lt;br /&gt;
! Ansvarig root&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! Kontaktperson&lt;br /&gt;
| Olle Vidner, oller120, 070-7306376, olle@vidner.se (2015-02-11)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ipv6: 2001:6b0:17:f0a0:1::4&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Rack B3]]&lt;br /&gt;
[[Kategori:Maskiner i drift]]&lt;br /&gt;
[[Kategori:Inhysningar]]&lt;/div&gt;</summary>
		<author><name>Net4all</name></author>
	</entry>
</feed>