Synology DiskStation: Geht nicht, gibt es nicht!

Gestern hatte ich noch über die verschiedenen Optionen, die Abbildung der Windows SIDs auf Gruppen- und Benutzer-IDs zu beeinflussen, berichtet. Bei näherem Nachdenken haben mir jedoch beide Optionen nicht sonderlich gefallen. Die erste Option (Einschränkungen auf Freigabeebene) ist prinzipiell schon mal langweilig. Die zweite Option (Einträge in /etc/passwd und /etc/group) hat den Nachteil, dass in /etc/group die Benutzerzuordnung immer aktuell gehalten werden müsste. Das ist also auch nicht sonderlich elegant.

Also habe ich mich an Option drei herangewagt: Ich habe einfach WinBind davon überzeugt, die Gruppenzuordnung so vorzunehmen, wie ich es gerne hätte. Dafür habe ich ein Ruby Skript geschrieben, das sich mit dem LDAP-Server verbindet und daraus eine passende winbindd_idmap.tdb Datei generiert. Damit kann ich sicherstellen, dass wenigstens die UIDs und GIDs auf allen Systemen übereinstimmen.

TDB Bilbiothek

Das Ruby Skript baut auf der TDB Bilbiothek von Samba auf. Ich war zu faul, für die Bibliothek Ruby Bindings anzulegen bzw. ein eigenes C Programm dafür zu schreiben, daher wird einfach das tdbtool mit den passenden Eingaben gesteuert. Dieses ist leider normalerweise bei der Binärdistribution von Samba nicht mit dabei, so dass man es selbst kompilieren muss. Der entsprechende Teil von Samba ist relativ klein und kann daher auch eigenständig kompiliert werden.

Man benötigt nur die üblichen Compiler-Tools und das autoconf-Paket. Danach kann man mit autogen.sh die nötigen Dateien anlegen. Nach einem Lauf von configure und make steht dann das tdbtool im Unterverzeichnis bin bereit.

Anmerkungen

Das Skript am Ende dieses Artikels baut auf meinem Remote-Management-Framework auf, das ich nicht mitliefere. Prinzipiell reicht es, einige kleine Änderungen zu machen, um die Adresse der gewünschten Disk Station entweder fest im Quellcode abzulegen oder durch Kommandozeilenparameter zu bestimmen. Das Skript steht unter der BSD Lizenz, die TDB Bibliothek von Samba unter der LGPL

Der UID/GID Bereich, der im LDAP Verzeichnis verwendet wird, muss zum Bereich von WinBind passen. Daher muss ggf. die smb.conf angepasst werden (zu finden in /usr/syno/etc). Dies wird vom Skript bereits automatisch erledigt.

Durch den nötigen Neustart von Samba bzw. Winbind kann es evtl. zu Unterbrechungen der Verbindung kommen. Die bisherige Zuordnung auf der Disk Station wird einfach überschrieben, d.h. wenn vorher bereits Domänenbenutzer auf die Disk Station zugegriffen haben, müssen Besitzer und Gruppe passend korrigiert werden.

Getestet wurde das Skript mit einer Disk Station 209 mit PowerPC CPU. Wird ein System mit einer anderen Byte Order verwendet, müssen Anpassungen vorgenommen werden. Die Verwendung erfolgt vollständig auf eigene Gefahr!

Ach ja: chown auf der Disk Station kann nicht mit Benutzernamen, die einen Punkt enthalten, umgehen. Das kann ungünstig sein, wenn z.B. der Domänenname einen Punkt enthält. Als Notlösung bleibt nur die entsprechenden numerischen Werte zu verwenden.

Anlagen

Ruby Skript und tdb Bibliothek

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.