OpenLDAP » History » Version 1
Joseph Foley, 2015-09-05 02:52
| 1 | 1 | Joseph Foley | h1. OpenLDAP |
|---|---|---|---|
| 2 | |||
| 3 | h2. Guides |
||
| 4 | |||
| 5 | * OpenLDAP http://www.openldap.org/ |
||
| 6 | ** With DHCP config http://wiki.herzbube.ch/index.php/ISCDHCP#Configuration_with_LDAP |
||
| 7 | * http://techpubs.spinlocksolutions.com/dklar/ldap.html |
||
| 8 | * https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html |
||
| 9 | * http://www.rjsystems.nl/en/2100-kerberos-openldap-openafs-client.php |
||
| 10 | * Hacking LDAP for Outlook and Thunderbird http://linuxgazette.net/130/peterson.html |
||
| 11 | h2. DNS autoconfig |
||
| 12 | |||
| 13 | http://www.rjsystems.nl/en/2100-dns-discovery-openldap.php |
||
| 14 | |||
| 15 | <pre> |
||
| 16 | _ldap._tcp.dev.ru.is. IN SRV 10 0 389 ldap.dev.ru.is. |
||
| 17 | </pre> |
||
| 18 | |||
| 19 | |||
| 20 | h2. Installing the server and basic config |
||
| 21 | |||
| 22 | # Install the packages |
||
| 23 | <pre>sudo apt-get install slapd ldap-utils</pre> |
||
| 24 | # Include important schema files |
||
| 25 | <pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif |
||
| 26 | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif |
||
| 27 | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif |
||
| 28 | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif</pre> |
||
| 29 | #Setup ldapsearch defaults so you don't need to keep typing them in. |
||
| 30 | ## Open @/etc/ldap/ldap.conf@ or create if it does not exist and add these lines |
||
| 31 | <pre># This file is mostly for ldapsearch |
||
| 32 | BASE dc=dev,dc=ru,dc=is |
||
| 33 | URI ldapi:/// |
||
| 34 | loglevel 256 |
||
| 35 | </pre> |
||
| 36 | |||
| 37 | # Configure database including root password (notice olcRootPW) |
||
| 38 | <pre># Load dynamic backend modules |
||
| 39 | dn: cn=module,cn=config |
||
| 40 | objectClass: olcModuleList |
||
| 41 | cn: module |
||
| 42 | olcModulepath: /usr/lib/ldap |
||
| 43 | olcModuleload: back_hdb |
||
| 44 | |||
| 45 | # Database settings |
||
| 46 | dn: olcDatabase=hdb,cn=config |
||
| 47 | objectClass: olcDatabaseConfig |
||
| 48 | objectClass: olcHdbConfig |
||
| 49 | olcDatabase: {1}hdb |
||
| 50 | olcSuffix: dc=dev,dc=ru,dc=is |
||
| 51 | olcDbDirectory: /var/lib/ldap |
||
| 52 | olcRootDN: cn=admin,dc=dev,dc=ru,dc=is |
||
| 53 | olcRootPW: devnetsecret |
||
| 54 | olcDbConfig: set_cachesize 0 2097152 0 |
||
| 55 | olcDbConfig: set_lk_max_objects 1500 |
||
| 56 | olcDbConfig: set_lk_max_locks 1500 |
||
| 57 | olcDbConfig: set_lk_max_lockers 1500 |
||
| 58 | olcDbIndex: objectClass eq |
||
| 59 | olcLastMod: TRUE |
||
| 60 | olcDbCheckpoint: 512 30 |
||
| 61 | olcAccess: to attrs=userPassword by dn="cn=admin,dc=dev,dc=ru,dc=is" write by anonymous auth by self\ |
||
| 62 | write by * none |
||
| 63 | olcAccess: to attrs=shadowLastChange by self write by * read |
||
| 64 | olcAccess: to dn.base="" by * read |
||
| 65 | olcAccess: to * by dn="cn=admin,dc=dev,dc=ru,dc=is" write by * read |
||
| 66 | </pre> |
||
| 67 | # Now we load this config into the database |
||
| 68 | <pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.dev.ru.is.ldif</pre> |
||
| 69 | |||
| 70 | h2. Populate the frontend directory |
||
| 71 | |||
| 72 | # Create top-level object in domain |
||
| 73 | <pre># Create top-level object in domain |
||
| 74 | dn: dc=dev,dc=ru,dc=is |
||
| 75 | objectClass: top |
||
| 76 | objectClass: dcObject |
||
| 77 | objectclass: organization |
||
| 78 | o: DevNet at RU |
||
| 79 | dc: Dev |
||
| 80 | description: DevNet at RU |
||
| 81 | |||
| 82 | # Admin user. |
||
| 83 | dn: cn=admin,dc=dev,dc=ru,dc=is |
||
| 84 | objectClass: simpleSecurityObject |
||
| 85 | objectClass: organizationalRole |
||
| 86 | cn: admin |
||
| 87 | description: LDAP administrator |
||
| 88 | userPassword: superuser |
||
| 89 | |||
| 90 | dn: ou=people,dc=dev,dc=ru,dc=is |
||
| 91 | objectClass: organizationalUnit |
||
| 92 | ou: people |
||
| 93 | |||
| 94 | dn: ou=groups,dc=dev,dc=ru,dc=is |
||
| 95 | objectClass: organizationalUnit |
||
| 96 | ou: groups |
||
| 97 | |||
| 98 | dn: uid=john,ou=people,dc=dev,dc=ru,dc=is |
||
| 99 | objectClass: inetOrgPerson |
||
| 100 | objectClass: posixAccount |
||
| 101 | objectClass: shadowAccount |
||
| 102 | uid: john |
||
| 103 | sn: Doe |
||
| 104 | givenName: John |
||
| 105 | cn: John Doe |
||
| 106 | displayName: John Doe |
||
| 107 | uidNumber: 1000 |
||
| 108 | gidNumber: 10000 |
||
| 109 | userPassword: testypassword |
||
| 110 | gecos: John Doe |
||
| 111 | loginShell: /bin/bash |
||
| 112 | homeDirectory: /home/john |
||
| 113 | shadowExpire: -1 |
||
| 114 | shadowFlag: 0 |
||
| 115 | shadowWarning: 7 |
||
| 116 | shadowMin: 8 |
||
| 117 | shadowMax: 999999 |
||
| 118 | shadowLastChange: 10877 |
||
| 119 | mail: john.doe@dev.ru.is |
||
| 120 | postalCode: 31000 |
||
| 121 | l: Toulouse |
||
| 122 | o: Example |
||
| 123 | mobile: +33 (0)6 xx xx xx xx |
||
| 124 | homePhone: +33 (0)5 xx xx xx xx |
||
| 125 | title: System Administrator |
||
| 126 | postalAddress: |
||
| 127 | initials: JD |
||
| 128 | |||
| 129 | dn: cn=example,ou=groups,dc=dev,dc=ru,dc=is |
||
| 130 | objectClass: posixGroup |
||
| 131 | cn: example |
||
| 132 | gidNumber: 10000 |
||
| 133 | |||
| 134 | </pre> |
||
| 135 | # Addd it to the system |
||
| 136 | <pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f frontend.dev.ru.is.ldif</pre> |
||
| 137 | # Now test it. the -xLLL suppresses the schema output |
||
| 138 | <pre>ldapsearch -xLLL -b "dc=dev,dc=ru,dc=is" uid=john sn givenName cn</pre> |
||
| 139 | # Check to see if defaults also work. |
||
| 140 | <pre>ldapsearch -xLLL -b uid=john sn givenName cn</pre> |
||
| 141 | # Permissions testing. Check if the userPassword field is present. It should not be. |
||
| 142 | <pre>ldapsearch -x</pre> |
||
| 143 | # Now we use the offline ldap command @slapcat@, which should see the password</pre> |
||
| 144 | <pre>sudo slapcat</pre> |
||
| 145 | |||
| 146 | h2. Adding users |
||
| 147 | |||
| 148 | # Create a modified version of the information. Change this as appropriate and don't put a password. Save it to file @adduser.ldif@ |
||
| 149 | <pre>dn: uid=john,ou=people,dc=dev,dc=ru,dc=is |
||
| 150 | objectClass: inetOrgPerson |
||
| 151 | objectClass: posixAccount |
||
| 152 | objectClass: shadowAccount |
||
| 153 | uid: john |
||
| 154 | sn: Doe |
||
| 155 | givenName: John |
||
| 156 | cn: John Doe |
||
| 157 | displayName: John Doe |
||
| 158 | uidNumber: 1000 |
||
| 159 | gidNumber: 10000 |
||
| 160 | #userPassword: testypassword |
||
| 161 | gecos: John Doe |
||
| 162 | loginShell: /bin/bash |
||
| 163 | homeDirectory: /home/john |
||
| 164 | shadowExpire: -1 |
||
| 165 | shadowFlag: 0 |
||
| 166 | shadowWarning: 7 |
||
| 167 | shadowMin: 8 |
||
| 168 | shadowMax: 999999 |
||
| 169 | shadowLastChange: 10877 |
||
| 170 | mail: john.doe@dev.ru.is |
||
| 171 | postalCode: 31000 |
||
| 172 | l: Toulouse |
||
| 173 | o: Example |
||
| 174 | mobile: +33 (0)6 xx xx xx xx |
||
| 175 | homePhone: +33 (0)5 xx xx xx xx |
||
| 176 | title: System Administrator |
||
| 177 | postalAddress: |
||
| 178 | initials: JD |
||
| 179 | </pre> |
||
| 180 | # Now add it |
||
| 181 | <pre>sudo ldapadd -Y EXTERNAL -H ldapi:/// -f adduser.ldif</pre> |
||
| 182 | # Hmm, that didn't work. Let's use the ldapscripts instead |
||
| 183 | |||
| 184 | h3. ldapscripts |
||
| 185 | |||
| 186 | # install the packages |
||
| 187 | <pre>sudo apt-get install ldapscripts</pre> |
||
| 188 | # setup the config in @/etc/ldapscripts/ldapscripts.conf@ |
||
| 189 | <pre>BINDDN="cn=admin,dc=dev,dc=ru,dc=is" |
||
| 190 | BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" |
||
| 191 | |||
| 192 | SUFFIX="dc=dev,dc=ru,dc=is" |
||
| 193 | GSUFFIX="ou=Groups" # Groups ou (just under $SUFFIX) |
||
| 194 | USUFFIX="ou=People" # Users ou (just under $SUFFIX) |
||
| 195 | MSUFFIX="ou=Machines" # Machines ou (just under $SUFFIX) |
||
| 196 | |||
| 197 | GIDSTART="10000" # Group ID |
||
| 198 | UIDSTART="10000" # User ID |
||
| 199 | MIDSTART="20000" # Machine ID |
||
| 200 | |||
| 201 | USHELL="/bin/bash" |
||
| 202 | UHOMES="/home/%u" # You may use %u for username here |
||
| 203 | CREATEHOMES="yes" # Create home directories and set rights ? |
||
| 204 | HOMESKEL="/etc/skel" # Directory where the skeleton files are located. Ignored if undefined or none\ |
||
| 205 | xistant. |
||
| 206 | HOMEPERMS="755" # Default permissions for home directories |
||
| 207 | </pre> |
||
| 208 | #Edit @/etc/ldapscripts/ldapscripts.passwd@ |
||
| 209 | <pre>superuser</pre> |
||
| 210 | # Now create a group! Note that you can pick your UID or GID, but you generally don't need to |
||
| 211 | <pre>sudo ldapaddgroup ru 101</pre> |
||
| 212 | # Now create a user with that group |
||
| 213 | <pre> sudo ldapadduser <username> ru</pre> |
||
| 214 | |||
| 215 | |||
| 216 | h2. NSS and PAM setup |
||
| 217 | |||
| 218 | # Install the modules |
||
| 219 | <pre>sudo apt-get install libnss-ldap nscd</pre> |
||
| 220 | ## server: ldap://130.208.209.37 (note that it is @ldap@, not @ldapi@!) |
||
| 221 | ## Version 3 |
||
| 222 | ## local root database admin: no |