Ldapscripts

Aus ConfigWiki
Wechseln zu: Navigation, Suche

Die ldapscripts sind Kommandozeilentools für die Verwaltung von Unix-Benutzern im LDAP.

Konfiguration

Nach der Installation muß die Konfiguration angepaßt werden.

/etc/ldapscripts (gekürzt):

## Server name
SERVER=localhost

## Bind DN
BINDDN='cn=admin,dc=debian,dc=local'

## Bind Password or file
BINDPWDFILE="/etc/ldap.secret"

## Default suffix
SUFFIX='dc=debian,dc=local'

## Group/User(aka People)/Machines (aka Hosts) Organizational Unit
GSUFFIX='ou=group'
USUFFIX='ou=people'
MSUFFIX='ou=hosts'

## log everything that is performed by those scripts
LOGFILE="/var/log/ldapscripts.log"

## Start with these IDs *if no entry found in LDAP*
GIDSTART=1000
UIDSTART=1000
MIDSTART=10000

## Default Shell
USHELL=/bin/bash

## default homes (%u is the user name)
UHOMES="/home/%u"

## Ask for user's gecos (full name) ?
ASKGECOS="yes"

## Does the script should create homes ?
CREATEHOMES="yes"

## Directory where the skeleton files are located.
HOMESKEL="/etc/skel"
## Default permissions for home directories
HOMEPERMS="700"

# You can specify custom LDIF templates here
# Leave empty to use default templates
# See *.template.sample for default templates
GTEMPLATE="/etc/ldapscripts/ldapaddgroup.template"
UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
MTEMPLATE="/etc/ldapscripts/ldapaddmachine.template"

Da unter Debian von den ldapscripts direkt auf /etc/ldap.secrets zugegriffen wird, passen wir BINDPWDFILE entsprechend an und ersetzen /etc/ldap.secret durch einen Link auf /etc/pam_ldap.secret. Das vermeidet spätere Inkonsistenzen bei einer Änderung.

Die Templates werden entsprechend kopiert und im Usertemplate werden 'dn' und 'description' angepaßt:

/etc/ldapscripts# diff ldapadduser.template.sample ldapadduser.template
1c1
< dn: uid=<user>,<usuffix>,<suffix>
---
> dn: cn=<user>,<usuffix>,<suffix>
11c11
< description: User account
---
> description: <gecos>

Description kann später im LDAP-Verzeichnis mit einem sinnvollerem Wert belegt werden, mit den Kommandozeilentools ist das leider nicht möglich. (Das Erzeugen des Homeverzeichnisses funktionierte später im Test leider trotzdem nicht, sodaß auf pam_mkhomedir ausgewichen werden mußte.)

ldapadduser erzeugt einen LDAP-Eintrag mit den Objektklassen 'account' und 'posixAccount'. Besser wäre jedoch 'inetOrgPerson' statt 'account', in Hinsicht auf die Nutzung der Daten für weitere Zwecke. Dies kann zwar im Usertemplate angepaßt werden, hat jedoch den Nachteil, daß ldapadduser Vor- und Nachnamen nicht getrennt abruft und somit keine passende Information für das Attribut 'sn' (surname = Familienname) hat. Mit Änderung von /usr/bin/ldapadduser (siehe ASKGECOS) für die Abfrage der korrekten Daten und /usr/share/ldapscripts/runtime (bei _filterldif) für die Ersetzung der neuen Platzhalter im Template ist dieses Problem für die Kommandozeile lösbar.

Alternativ kann phpldapadmin zum Anlegen der Benutzer verwendet werden oder eigene Skripte erstellt werden.

Benutzer/Gruppen anlegen, ändern oder löschen

Dem Debian-Schema folgend, wird (zuerst) für jeden Benutzer eine gleichnamige Gruppe angelegt, wobei auf die Angabe der GID i.a. verzichtet werden kann:

ldapaddgroup <groupname> [gid]

Daraufhin kann der Benutzer hinzugefügt werden, wobei auch hier auf die UID verzichtet werden kann:

ldapadduser <username> <groupname> [uid]

Den Benutzer zu weiteren Gruppen hinzufügen:

ldapaddusertogroup <username | uid> <groupname | gid>

Die primäre Gruppe ändern:

ldapsetprimarygroup <username | uid> <groupname | gid>

Den Benutzer umbenennen (das Homeverzeichnis bleibt dabei unverändert!):

ldaprenameuser <old username | uid> <new username>

Und die entsprechenden Kommandos zum löschen:

ldapdeletegroup <groupname | gid>
ldapdeleteuser <username | uid>
ldapdeleteuserfromgroup <username> <groupname | gid>
Meine Werkzeuge