4.11. Kommandozeilenschnittstelle der Domänenverwaltung (Univention Directory Manager)#
Der Univention Directory Manager ist die Kommandozeilenschnittstelle-Alternative zur webbasierten Schnittstelle der UMC-Module für die Domänenverwaltung. Es dient als mächtiges Werkzeug für die Automatisierung von administrativen Vorgängen in Skripten und zur Integration in andere Programme.
Univention Directory Manager wird als Benutzer root
auf dem Primary Directory Node mit dem Befehl univention-directory-manager (Kurzform udm) aufgerufen.
UMC-Module und Univention Directory Manager verwenden dieselben Domänen-Verwaltungsmodule, d.h. alle Funktionen der Webschnittstelle stehen auch im Kommandozeilen-Interface zur Verfügung.
4.11.1. Aufrufparameter der Kommandozeilenschnittstelle#
Eine komplette Liste der verfügbaren Module wird angezeigt, wenn udm mit dem Parameter modules
aufgerufen wird:
$ univention-directory-manager modules
Available Modules are:
computers/computer
computers/domaincontroller_backup
computers/domaincontroller_master
computers/domaincontroller_slave
[...]
Für jedes Modul existieren bis zu fünf Operationen:
- list
führt alle existierenden Objekte dieses Typs auf.
- create
legt ein neues Objekt an.
- modify
oder bearbeitet existierende Objekte.
- remove
löscht ein Objekt.
- move
zum Verschieben an eine andere Position im LDAP-Verzeichnis.
Die mögliche Optionen eines UDM-Moduls und den darauf anwendbaren Operationen können durch Angabe des Operationsnamens ausgegeben werden, z.B.,
$ univention-directory-manager users/user move
[...]
general options:
--binddn bind DN
--bindpwd bind password
--bindpwdfile file containing bind password
[...]
create options:
--position Set position in tree
--set Set variable to value, e.g. foo=bar
[...]
modify options:
--dn Edit object with DN
--set Set variable to value, e.g. foo=bar
[...]
remove options:
--dn Remove object with DN
--superordinate Use superordinate module
[...]
list options:
--filter Lookup filter
--position Search underneath of position in tree
[...]
move options:
--dn Move object with DN
--position Move to position in tree
[...]
Nähere Informationen, Operationen und Optionen zu jedem Modul gibt der folgende Befehl aus:
$ univention-directory-manager [category/modulename]
Dabei werden auch die Attribute des Moduls angezeigt. Bei der Operation create
werden mit *
die Attribute markiert, die beim Anlegen eines neuen Objektes zwingend angegeben werden müssen.
Einigen Attributen können mehrere Werte zugewiesen werden (z.B. Mailadressen an Benutzerobjekten). Diese Mehrfachwert-Felder sind mit []
hinter dem Attributnamen markiert. Einige Attribute können nur gesetzt werden, wenn für das Objekt bestimmte Optionen gesetzt werden. Dies ist bei den einzelnen Attributen durch Angabe des Optionsnamens aufgeführt:
users/user variables:
General:
username (*) Username
[...]
Contact:
e-mail (person,[]) E-Mail Address
Hier bezeichnet username (*)
, dass dieses Attribut beim Anlegen von Benutzerobjekten immer gesetzt werden muss. Wird für das Benutzerkonto die Option person gesetzt (dies ist standardmäßig der Fall), können eine oder mehrere E-Mail-Adressen zu den Kontaktinformationen hinzugefügt werden.
Eine Reihe von Standard-Parametern sind für jedes Modul definiert:
- --dn#
Der Parameter wird verwendet, um bei Modifikationen oder beim Entfernen die LDAP-Position des Objektes anzugeben. Dabei muss die komplette DN angegeben werden, z.B,
$ univention-directory-manager users/user remove \ --dn "uid=ldapadmin,cn=users,dc=company,dc=example"
- --position#
Um anzugeben, an welcher LDAP-Position ein Objekt angelegt werden soll, wird der Parameter verwendet. Ohne den
--position
-Parameter wird das Objekt unterhalb der LDAP-Basis angelegt! Bei der Operationmove
wird mit diesem Parameter angegeben, an welche Stelle ein Objekt verschoben werden soll, z.B:$ univention-directory-manager computers/ipmanagedclient move \ --dn "cn=desk01,cn=management,cn=computers,dc=company,dc=com" \ --position "cn=finance,cn=computers,dc=company,dc=example"
- --set#
Der Parameter gibt an, dass dem darauf folgenden Attribut der angegebene Wert zugewiesen wird. Der Parameter muss je Attribut-Wert-Paar verwendet werden, z.B:
$ univention-directory-manager users/user create \ --position "cn=users,dc=compaby,dc=example" \ --set username="jsmith" \ --set firstname="John" \ --set lastname="Smith" \ --set password="12345678"
- --option#
Der Parameter definiert die LDAP-Objektklassen eines Objekts. Wird bei einem Benutzerobjekt beispielsweise nur
pki
als Option übergeben, so kann für diesen Benutzer keinemailPrimaryAddress
angegeben werden, da dieses Attribut Teil der Optionmail
ist.
- --superordinate#
--superordinate
wird zur Angabe von abhängigen, übergeordneten Modulen verwendet. Ein DHCP-Objekt beispielsweise benötigt ein DHCP-Service-Objekt, unter dem es angelegt werden kann. Dieses wird mit der Option--superordinate
übergeben.
- --policy-reference#
Mit dem Parameter
--policy-reference
lässt sich Objekten Richtlinien zuweisen (und analog mit--policy-dereference
entfernen). Wird eine Richtlinie an ein Objekt geknüpft, so werden die Einstellungen aus der Richtlinie für das Objekt angewendet, z.B:$ univention-directory-manager [category | modulename] [Operation] \ --policy-reference "cn=sales,cn=pwhistory," \ "cn=users,cn=policies,dc=company,dc=example"
- --ignore-exists#
Der Parameter
--ignore_exists
überspringt bereits vorhandene Objekte. Sollte ein Objekt nicht angelegt werden können, da es bereits existiert, wird trotzdem der Fehlercode0
(kein Fehler) zurückgegeben.
- --append#
Mit
--append
und--remove
wird einem Mehrfachwert-Feld ein Wert hinzugefügt/entfernt, z.B:$ univention-directory-manager groups/group modify \ --dn "cn=staff,cn=groups,dc=company,dc=example" \ --append users="uid=smith,cn=users,dc=company,dc=example" \ --remove users="uid=miller,cn=users,dc=company,dc=example"
4.11.2. Beispielaufrufe für die Kommandozeilenschnittstelle#
Die folgenden Beispielaufrufe des Kommandozeilen-Frontend von Univention Directory Manager können als Vorlagen für eigene Skripte verwendet werden.
4.11.2.1. Benutzer#
Anlegen eines Benutzers im Standard-Benutzer-Container:
$ univention-directory-manager users/user create \
--position "cn=users,dc=example,dc=com" \
--set username="user01" \
--set firstname="Random" \
--set lastname="User" \
--set organisation="Example company LLC" \
--set mailPrimaryAddress="mail@example.com" \
--set password="secretpassword"
Nachträgliches Hinzufügen der postalischen Adresse zum gerade angelegten Benutzer:
$ univention-directory-manager users/user modify \
--dn "uid=user01,cn=users,dc=example,dc=com" \
--set street="Exemplary Road 42" \
--set postcode="28239" \
--set city="Bremen"
Mit diesem Befehl werden alle Benutzer angezeigt, deren Benutzername mit user beginnt:
$ univention-directory-manager users/user list \
--filter uid='user*'
Die Suche nach Objekten mit --filter
kann auch auf eine Position im LDAP-Verzeichnis eingeschränkt werden, in diesem Fall auf alle Benutzer im Container cn=bremen,cn=users,dc=example,dc=com
:
$ univention-directory-manager users/user list \
--filter uid="user*" \
--position "cn=bremen,cn=users,dc=example,dc=com"
Dieser Aufruf entfernt einen Benutzer user04
:
$ univention-directory-manager users/user remove \
--dn "uid=user04,cn=users,dc=example,dc=com"
Eine Firma hat zwei Standorte mit eigens dafür angelegten Containern. Mit dem folgenden Befehl wird ein Benutzer aus dem Container für den Standort „Hamburg“ in den Container für den Standort „Bremen“ verschoben:
$ univention-directory-manager users/user move \
--dn "uid=user03,cn=hamburg,cn=users,dc=example,dc=com" \
--position "cn=bremen,cn=users,dc=example,dc=com"
4.11.2.2. Gruppen#
Anlegen einer Gruppe Example Users
und Hinzufügen des Benutzers user01
in diese Gruppe:
$ univention-directory-manager groups/group create \
--position "cn=groups,dc=example,dc=com" \
--set name="Example Users" \
--set users="uid=user01,cn=users,dc=example,dc=com"
Nachträgliches Hinzufügen des Benutzers user02
zur gerade angelegten Gruppe:
$ univention-directory-manager groups/group modify \
--dn "cn=Example Users,cn=groups,dc=example,dc=com" \
--append users="uid=user02,cn=users,dc=example,dc=com"
Vorsicht
Ein --set
des Attributs users
überschreibt im Gegensatz zu --append
die Liste der Gruppenmitglieder.
Nachträgliches Entfernen des Benutzers user01
aus der Gruppe:
$ univention-directory-manager groups/group modify \
--dn "cn=Example Users,cn=groups,dc=example,dc=com" \
--remove users="uid=user01,cn=users,dc=example,dc=com"
4.11.2.3. Container / Richtlinien#
Dieser Aufruf legt unterhalb des Standard-Containers cn=computers
einen Container cn=Bremen
für die Rechnerobjekte am Firmenstandort „Bremen“ an. Durch die zusätzliche Option computerPath
wird dieser Container auch direkt als Standardcontainer für Rechnerobjekte registriert (siehe Strukturierung der Domäne durch angepasste LDAP-Strukturen):
$ univention-directory-manager container/cn create \
--position "cn=computers,dc=example,dc=com" \
--set name="bremen" \
--set computerPath=1
Dieser Befehl legt eine Speicherplatzbegrenzungsrichtlinie mit dem Namen Default quota mit Soft- und Hard-Limit an:
$ univention-directory-manager policies/share_userquota create \
--position "cn=policies,dc=example,dc=com" \
--set name="Default quota" \
--set softLimitSpace=5GB \
--set hardLimitSpace=10GB
Diese Richtlinie wird nun an den Benutzer-Container cn=users
gebunden:
$ univention-directory-manager container/cn modify \
--dn "cn=users,dc=example,dc=com" \
--policy-reference "cn=Default quota,cn=policies,dc=example,dc=com"
Anlegen einer Univention Configuration Registry-Richtlinie, mit der die Vorhaltezeit der Logdateien auf ein Jahr eingestellt wird. Als Trennzeichen zwischen Name und Wert der Variable wird ein Leerzeichen verwendet:
$ univention-directory-manager policies/registry create \
--position "cn=config-registry,cn=policies,dc=example,dc=com" \
--set name="default UCR settings" \
--set registry="logrotate/rotate/count 52"
Mit diesem Befehl wird an die angelegte Richtlinie ein weiterer Wert angehängt:
$ univention-directory-manager policies/registry modify \
--dn "cn=default UCR settings,cn=config-registry,cn=policies,dc=example,dc=com" \
--append registry='"logrotate/compress" "no"'
4.11.2.4. Rechner#
In folgendem Beispiel wird ein Windows-Client angelegt. Tritt dieser Client später der Samba-Domäne bei (siehe Windows-Domänenbeitritt), wird dieses Rechnerkonto dann automatisch verwendet:
$ univention-directory-manager computers/windows create \
--position "cn=computers,dc=example,dc=com" \
--set name=WinClient01 \
--set mac=aa:bb:cc:aa:bb:cc \
--set ip=192.0.2.10
4.11.2.6. Drucker#
Anlegen einer Druckerfreigabe LaserPrinter01
auf dem Druckserver printserver.example.com
. Die Eigenschaften des Druckers sind in der PPD-Datei spezifiziert, deren Name relativ zum Verzeichnis /usr/share/ppd/
angegeben wird. Der angebundene Drucker ist netzwerkfähig und wird über das IPP-Protokoll angebunden.
$ univention-directory-manager shares/printer create \
--position "cn=printers,dc=example,dc=com" \
--set name="LaserPrinter01" \
--set spoolHost="printserver.example.com" \
--set uri="ipp:// 192.0.2.100" \
--set model="foomatic-rip/HP-Color_LaserJet_9500-Postscript.ppd" \
--set location="Head office" \
--set producer="producer: cn=HP,cn=cups,cn=univention,dc=example,dc=com"
Bemerkung
Zwischen dem Druckprotokoll und dem URL Zielpfad im Parameter uri
muss ein Leerzeichen stehen. Eine Liste der Druckprotokolle befindet sich in Konfiguration von Druckerfreigaben.
Drucker können zur einfacheren Verwaltung in einer Druckergruppe zusammengefasst werden. Weitere Informationen zu Druckergruppen finden sich in Konfiguration von Druckergruppen.
$ univention-directory-manager shares/printergroup create \
--set name=LaserPrinters \
--set spoolHost="printserver.example.com" \
--append groupMember=LaserPrinter01 \
--append groupMember=LaserPrinter02
4.11.2.7. DNS/DHCP#
Um eine IP-Vergabe über DHCP zu konfigurieren, muss ein DHCP-Rechner-Eintrag für die MAC-Adresse registriert werden. Weitere Informationen zu DHCP finden sich in IP-Vergabe über DHCP.
$ univention-directory-manager dhcp/host create \
--superordinate "cn=example.com,cn=dhcp,dc=example,dc=com" \
--set host="Client222" \
--set fixedaddress="192.0.2.110" \
--set hwaddress="ethernet 00:11:22:33:44:55"
Soll ein Rechnername über DNS auflösbar sein, kann mit den folgenden Befehlen eine Vorwärts- (host record) und Reverse-Auflösung (PTR record) konfiguriert werden.
$ univention-directory-manager dns/host_record create \
--superordinate "zoneName=example.com,cn=dns,dc=example,dc=com" \
--set name="Client222" \
--set a="192.0.2.110"
$ univention-directory-manager dns/ptr_record create \
--superordinate "zoneName=0.168.192.in-addr.arpa,cn=dns,dc=example,dc=com" \
--set address="110" \
--set ptr_record="Client222.example.com."
Weitere Informationen zu DNS finden sich in Verwaltung von DNS-Daten mit BIND.
4.11.2.8. Erweiterte Attribute#
Mit erweiterten Attributen lässt sich der Funktionsumfang von UMC-Modulen flexibel erweitern, siehe Erweiterung von UMC-Modulen mit erweiterten Attributen. Im folgenden Beispiel wird ein neues Attribut eingefügt, an dem pro Benutzer das KFZ-Kennzeichen des Dienstwagens gespeichert wird. Die Werte werden in einer extra für diesen Zweck vorgesehenen Objektklasse univentionFreeAttributes
verwaltet:
$ univention-directory-manager settings/extended_attribute create \
--position "cn=custom attributes,cn=univention,dc=example,dc=com" \
--set name="CarLicense" \
--set module="users/user" \
--set ldapMapping="univentionFreeAttribute1" \
--set objectClass="univentionFreeAttributes" \
--set longDescription="License plate number of the company car" \
--set tabName="Company car" \
--set multivalue=0 \
--set syntax="string" \
--set shortDescription="Car license"