LET'S CONNECT
Univention Summit 2026 – 28. & 29. Januar in Bremen
Jetzt Ticket sichern
Blog Erweiterte Attribute UDM in UCS

Neulich beim Helpdesk:

„Du, Manfred, Frau Hermann hat gerade angerufen. Sie meint, auf ihrem Laptop sind schon seit Wochen keine Updates mehr installiert worden. Kannst Du Dir das bitte mal in der Softwareverteilung ansehen?“

„Klar, kann ich machen. Hat sie gesagt, um welchen Laptop es geht?“

„Nein. Leider nicht und ich habe vergessen, danach zu fragen.“

„Macht nichts, ich kann ja jetzt in der UMC nachsehen.“

Dieses Szenario ist natürlich ausgedacht, aber durchaus in der Praxis denkbar. Das Thema „1:1 Ausstattung„, also die dauerhafte Bereitstellung von Geräten für Personen, ist aktuell bei vielen Organisationen – Schulträger und Firmen gleichermaßen – ein relevantes Thema.

Wer sich schon mal näher mit Univention Corporate Server (UCS) beschäftigt hat, kennt dessen Management-Oberfläche UMC. Die UMC bietet auf den Systemrollen Primary Directory Node und Backup Directory Node Zugang zu den im LDAP-Verzeichnisdienst gespeicherten Informationen. Die Module des Univention Directory Manager (UDM) bieten aber weit mehr Möglichkeiten als es herkömmliche LDAP-Werkzeuge vermögen. Eine dieser hilfreichen Erweiterungen, die wir für UCS entwickelt haben, möchte ich in diesem Artikel anhand des oben genannten Beispiels näher vorstellen.

Praktischer Einsatz der UDM-Erweiterungen: Seriennummern an Computerobjekten hinterlegen

Je nach Objekttyp bietet Univention Directory Manager Speichermöglichkeiten für verschiedenste im Produkt konfigurierte Eigenschaften, z.B. Namen und andere persönliche Informationen bei Benutzerkonten oder Hostnamen und IP-Adresse bei Computerkonten. Was aber kann man tun, wenn die von Univention vordefinierten Eigenschaften für den eigenen Einsatzzweck nicht ausreichen?

In der Dokumentation von UCS finden Sie eine ausführliche Beschreibung, wie Sie die UMC mit erweiterten Attributen funktional aufwerten können. Eigentlich ist die Überschrift des verlinkten Artikels „Erweiterung von UMC-Modulen mit erweiterten Attributen“ sogar etwas untertrieben. Diese „erweiterten Attribute“ ergänzen neben der UMC auch die UDM-Kommandozeile und die UDM REST-API. In UCS@school kann auch die Kelvin REST-API mit beliebigen UDM-Eigenschaften und somit auch den Erweiterungen umgehen.

In unserem Beispiel für den praktischen Einsatz der UDM-Erweiterungen wollen wir zunächst die Möglichkeit schaffen, an Computer-Objekten zusätzlich die Seriennummer des Gerätes speichern zu können. Hier erwähnt die Dokumentation lediglich eine „Inventarnummer“. Wir könnten zwar die Seriennummer auch in das Feld „Beschreibung“ eintragen, aber solche Zweckentfremdungen könnten später kleinere Probleme bereiten.

Grundsätzlich können „erweiterte Attribute“ auch über das LDAP-Modul der UMC administriert werden. Ich verwende der Übersichtlichkeit halber aber die UDM-Kommandozeile.

 

univention-directory-manager settings/extended_attribute create \
--position "cn=custom attributes,cn=univention,$(ucr get ldap/base)" \
--set name="serialnumber" \
--append module="computers/ipmanagedclient" \
--append module="computers/windows" \
--append module="computers/linux" \
--append module="computers/ubuntu" \
--append module="computers/macos" \
--set tabName="General" \
--set translationTabName='"de_DE" "Allgemein"' \
--set groupName="Information" \
--set tabPosition=1 \
--set shortDescription="serialnumber" \
--set translationShortDescription='"de_DE" "Seriennummer"' \
--set longDescription="serial number of the device" \
--set translationLongDescription='"de_DE" "Seriennummer des Gerätes"' \
--set syntax="string" \
--set multivalue=0 \
--set mayChange=1 \
--set objectClass="univentionFreeAttributes" \
--set ldapMapping="univentionFreeAttribute1"

 

Mit diesem Kommando wird in dem Container cn=custom attributes,cn=univention unterhalb der jeweiligen LDAP-Basis ein erweitertes Attribut mit dem Namen serialnumber erstellt. Wir sollen die Seriennummern nur an bestimmten Computerobjekten speichern. Das sind aber mehrere, die wir als Liste angeben müssen. Diese Liste definieren wir mit –append da mit –set nur ein Element definiert werden kann. In der UMC soll die Erweiterung im Tab „Allgemein“ bzw. „General“ in einer neuen Gruppe „Information“ als Textfeld erscheinen. Da die eingegebenen Informationen letztendlich im LDAP gespeichert werden sollen, müssen wir ein LDAP-Attribut mit seiner Objektklasse angeben. Wenn in den Standard-Attibuten nicht Passendes zu finden ist und man keine eigene Schema-Erweiterung erstellen möchte, kann man die Objektklasse univentionFreeAttributes nehmen.

1:1 Ausstattung mit einem zusätzlichen Attribut kennzeichnen

Mit einem zweiten erweiterten Attribut wollen wir jetzt noch die Möglichkeit einbauen, Geräte als „1:1 Ausstattung“ zu kennzeichnen.

univention-directory-manager settings/extended_attribute create \
--position "cn=custom attributes,cn=univention,$(ucr get ldap/base)" \
--set name="1on1" \
--append module="computers/ipmanagedclient" \
--append module="computers/windows" \
--append module="computers/linux" \
--append module="computers/ubuntu" \
--append module="computers/macos" \
--set tabName="General" \
--set translationTabName='"de_DE" "Allgemein"' \
--set groupName="Information" \
--set tabPosition=2 \
--set shortDescription="1:1 device" \
--set translationShortDescription='"de_DE" "1:1 Gerät"' \
--set longDescription="device will be assigned to a person" \
--set translationLongDescription='"de_DE" "Gerät wird einer Person zugeordnet"' \
--set syntax="boolean" \
--set multivalue=0 \
--set mayChange=1 \
--set objectClass="univentionFreeAttributes" \
--set ldapMapping="univentionFreeAttribute2"

 

Das mit diesem Kommando erzeugte Attribut „1on1“ nutzt ebenfalls ein LDAP-Attribut aus univentionFreeAttributes und wird in der UMC neben der Seriennummer zu finden sein. Wegen der Syntax boolean erscheint in der UMC eine Checkbox. Wird diese aktiviert, erscheint im LDAP-Attribut univentionFreeAttribute2 eine „1“.

 

 

root@dn1:~# udm computers/windows list --filter cn=wingymnkop101 | grep -E "name|1on1|serialnumber"
  1on1: 1
  name: wingymnkop101
  serialnumber: AABB1231


root@dn1:~# univention-ldapsearch -LLL "(&(objectClass=ucsschoolComputer)(cn=wingymnkop101))" cn univentionFreeAttribute1 univentionFreeAttribute2
dn: cn=wingymnkop101,cn=computers,ou=gym_nkop,dc=training,dc=ucs
cn: wingymnkop101
univentionFreeAttribute1: AABB1231
univentionFreeAttribute2: 1

Eigene UDM-Syntax für persönliche Geräte erstellen

Damit hätten wir schon mal die Erweiterungen für die Computer. Um Informationen über die 1:1-Geräte bei den Benutzern zu speichern, reicht uns ebenfalls ein „univentionFreeAttribute“, in dem wir das Computerobjekt hinterlegen. Damit wir in der UMC eine zielführende Auswahl bestehender UDM-Objekte finden, erstellen wir uns eine eigene Syntaxklasse. In der Entwicklerdokumentation finden sich dazu Hinweise. Unsere Syntax könnte nun so aussehen:

 

cat > /usr/lib/python3/dist-packages/univention/admin/syntax.d/personaldevice.py <<EOF
from univention.admin.syntax import UDM_Objects
class personal_device(UDM_Objects):
udm_modules = (
'computers/windows',
'computers/linux',
'computers/ubuntu',
'computers/ipmanagedclient',
'computers/macos',
)
label = '%(name)s - INV:%(inventoryNumber)s - SN:%(serialnumber)s'
udm_filter = 'univentionFreeAttribute2=1'
EOF
pkill -f univention-cli-server && systemctl restart univention-management-c*

 

Diese Prozedur ergänzt und aktiviert die für die UMC verfügbare Syntax. Bitte beachten Sie bei eigenen Experimenten, dass Python bei den Einrückungen etwas sensibel ist. Zwischenablagen, die eigenmächtig die Anzahl der Leerzeichen korrigieren, wären hier kontraproduktiv.

Unsere neue Syntaxklasse personal_device findet bei den in Frage kommenden Computerobjekten diejenigen, bei denen in univentionFreeAttribute2 die Information hinterlegt ist, ob das Gerät für eine 1:1 Ausstattung vorgesehen ist.
In der UMC sehen wir den Namen und – wenn vorhanden – die Inventar- sowie die Seriennummer.
Bei der Definition unserer Erweiterung verwenden wir nun die neue Syntax.

 

univention-directory-manager settings/extended_attribute create \
--position "cn=custom attributes,cn=univention,$(ucr get ldap/base)" \
--set name="1on1device" \
--set module="users/user" \
--set tabName="General" \
--set translationTabName='"de_DE" "Allgemein"' \
--set groupName="Devices" \
--set groupPosition=2 \
--set translationGroupName='"de_DE" "Geräte"' \
--set tabPosition=1 \
--set shortDescription="personal devices" \
--set translationShortDescription='"de_DE" "persönliche Geräte"' \
--set longDescription="devices assigned to this user" \
--set translationLongDescription='"de_DE" "dem Benutzerkonto zugewiesene Geräte"' \
--set syntax="personal_device" \
--set multivalue=1 \
--set mayChange=1 \
--set objectClass="univentionFreeAttributes" \
--set ldapMapping="univentionFreeAttribute3"

 

Die Option multivalue=1 ermöglicht es, mehrere Geräte zuzuordnen.

Damit können wir jetzt bei den Benutzern passende Geräte auswählen und am Benutzerobjekt hinterlegen. Unsere eingangs erwähnte Aufgabe lässt sich nunmehr einfach erledigen.

 

 

Die erweiterte Suche in der UMC gibt uns nun auch die Möglichkeit, nach Benutzern zu suchen, denen persönliche Geräte zugeordnet sind.

 

Und was noch so möglich wäre – erweiterte Attribute für ''Hook-Klassen''

In der vorliegenden Lösung werden die DN (distinguished name) der Computerobjekte im univentionFreeAttribute3 gespeichert. Wird allerdings das Computerobjekt selbst gelöscht oder verschoben, würden sich die Geräteinformationen bei den Benutzern nicht ändern. Ebenfalls nicht implementiert ist die Information am Computerobjekt, welchem Benutzer es zugeordnet wurde. Um dies zu erreichen, sehen erweiterte Attribute die Möglichkeit vor, „Hook-Klassen“ anzugeben mit denen Änderungen am Rechnerobjekt auch am jeweiligen Benutzerobjekt (oder umgekehrt) durchgeführt werden. Dies jedoch sprengt den Rahmen dieses Artikels und das Wissen des Autors. Ich hoffe aber, dass ich Ihnen dennoch einige interessante und nützliche Handreichungen für die Inventarisierung Ihrer IT-Umgebung habe geben können und freue mich auf Ihr Feedback oder Ihre eigenen Erfahrungen bei dem Thema.

UCS Core Edition jetzt kostenfrei einsetzen!
Zum Downloadbereich

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert