Ldapscripts
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>