Viele Pakete, die man auf den NAS-Systemen von Synology installieren kann, legen während der Installation eigene Benutzer an, mit denen die Prozesse dann ausgeführt werden und auf das Dateisystem zugriffen wird. Leider hat man als Anwender während der Installation meist keinen Einfluss darauf, wie die Benutzer angelegt werden. Das ist natürlich so gewollt und schützt vor falschen Entscheidungen, durch die der Dienst anschließend vielleicht nicht richtig läuft, allerdings bringt dieses Vorgehen auch Nachteile mit sich. So ist es zum Beispiel in den meisten Fällen nur mit viel Aufwand möglich, diesen Benutzern Lese-/Schreibrechte für bestimmte Pfade zu erteilen, was dann ebenso dazu führen kann, dass der Dienst nicht fehlerfrei ausgeführt wird.
Ein Beispiel:
Wenn ein Post Processing Script von NZBget Aktionen außerhalb seines Bereiches durchführen soll, so scheitert das meist daran, dass der zugehörige Benutzer keinen Zugriff auf andere Verzeichnisse hat. Es erscheint dann im Log-File permission denied.
Um die Verwaltung solcher Benutzer zu vereinfachen sind nur ein paar Schritte nötig. Wir blenden den Benutzer einfach ein und verwalten ihn dann wie einen normalen Benutzer.
Warum ist das überhaupt nötig?
In Synologys Weboberfläche DSM werden nur Benutzer mit einer UID ab 1024 angezeigt, wobei 1024 für den admin reserviert ist. Viele Benutzer, die von Paketen angelegt werden, erhalten jedoch eine UID im 100er-Bereich und bleiben somit verborgen.
Was ist die UID?
Jeder Benutzer besitzt eine user ID (UID). Diese ist normalerweise eineindeutig. Die UID 0 ist für root reserviert, 1-99 für systemnahe Dienste, 100-999 für andere System-Benutzer.
Die entsprechenden Informationen befinden sich in der Datei /etc/passwd
und sind wie folgt aufgebaut (hier am Beispiel von NZBget und dessen Benutzer):
nzbget:x:101:100:NZBGet User:/usr/local/nzbget/var:/bin/sh ______ _ ___ ___ ___________ _____________________ _______ | | | | | | | | | | | | | +———> 7 | | | | | | | | | | | +————————————————-> 6 | | | | | | | | | +——————————————————————————————————-> 5 | | | | | | | +——————————————————————————————————————————-> 4 | | | | | +———————————————————————————————————————————————> 3 | | | +——————————————————————————————————————————————————> 2 | +——————————————————————————————————————————————————————> 1 1. Benutzername (= der Login-Name) 2. Passwort (x bedeutet, dass ein verschlüsseltes Passwort in der Datei /etc/shadow gespeichert ist) 3. User ID (UID) 4. Group ID (GID) 5. Beschreibung des Benutzers 6. home-Verzeichnis des Benutzers 7. Absoluter Pfad zum command oder shell
Kommen wir also zur Sache
Vorraussetzung: SSH auf der DiskStation muss aktiviert sein.
Per SSH verbinden wir uns auf die DiskStation und lassen uns die vorhanden Benutzer anzeigen:
DS> cat /etc/passwd
Alternativ öffnen wir die Datei direkt in einem Editor (zum Beispiel nano, vi, oder den im Midnight Commander integrierten):
Wir wollen nur bestimmte Benutzer sehen, daher kopieren wir uns die Ausgabe in einen Text-Editor und verbessern die Übersichtlichkeit, indem wir „echte“ Systembenutzer entfernen und die relevanten Informationen als Tabelle darstellen:
couchpotatoserver : x : 100 :100:CouchPotato User:/usr/local/couchpotatoserver/var:/bin/sh headphones : x : 102 :100:Headphones User:/usr/local/headphones/var:/bin/sh nzbget : x : 101 :100:NZBGet User:/usr/local/nzbget/var:/bin/sh nzbmegasearch : x : 103 :100:NZBmegasearcH User:/usr/local/nzbmegasearch/var:/bin/sh plex : x : 1026 :100:daemon user for Plex Media Server:/var/services/homes/plex:/bin/csh pyload : x : 1045 :100:daemon user for pyLoad:/var/services/homes/pyload:/sbin/nologin sickbeard : x : 105 :100:SickBeard User:/usr/local/sickbeard/var:/bin/sh sickbeard-custom : x : 104 :100:SickBeard Custom User:/usr/local/sickbeard-custom/var:/bin/sh
Jetzt sieht man gut: die Benutzer vom Plex Media Server und pyLoad waren schon korrekt angelegt und müssen demzufolge nicht weiter beachtet werden. Konzentrieren wir uns also im Beispiel auf nzbget. Dabei handelt es sich um den Benutzer, der von dem Paket NZBget angelegt und genutzt wird.
Dazu wird NZBget über das Paketzentrum auf der Weboberfläche (DSM) gestoppt.
Zurück im Terminal, editieren wir anschließend die Datei /etc/passwd
mit einem beliebigen Editor (ich benutze gern den im Midnight Commander integrierten) und ändern die UID von 101 nach 1051. Wichtig dabei ist, dass die UID noch nicht vorhanden ist! Unbedingt muss man sich die alte UID merken, denn die brauchen wir gleich noch. Am besten aufschreiben.
Die Änderungen speichern, Editor schließen.
Ab diesem Punkt wird unter Umständen die Benutzerverwaltung im DSM nichts mehr anzeigen, aber das ignorieren wir für den Moment.
Anschließend müssen die Dateien des Benutzers noch der neuen UID zugeordnet werden.
Wer sich vorher einen Überblick verschaffen will, welche Dateien betroffen sein werden, kann dies mit folgendem Befehl tun, wobei 101 der alten UID entspricht:
DS> find / -user 101 -print
Dann führen wir die Änderungen mit folgendem Befehl durch:
DS> find / -user 101 -print -exec chown nzbget {} \;
Das Durchsuchen mit find /...
dauert unter Umständen recht lange, garantiert jedoch, dass auch tatsächlich alle Dateien erwischt werden und somit auch sämtliche Funktionalitäten erhalten bleiben.
Ist der Vorgang abgeschlossen, starten wir die DS neu. Das geschieht entweder über den DSM oder direkt im Terminal mit dem Befehl
DS> reboot
Nach dem erfolgten Neustart zeigt die Benutzerverwaltung nun den zusätzlichen Benutzer nzbget an, der sich wie ein normaler Benutzer verwalten lässt. Lese- und Schreibrechte können ihm nun, wie bei jedem anderen Benutzer auch, zugeteilt oder entzogen werden.
Jetzt noch den NZBget-Dienst im Paketzentrum starten. Das wars.
Das ganze einfach für alle gewünschten Benutzer wiederholen und dabei immer darauf achten, dass Ihr keine UID vergebt, die schon vorhanden ist.
- Proxmox: „Failed to connect to Server“ mit Safari auf MacOS - 28. Januar 2023
- Loxone: Benachrichtigung per Telegram - 15. Januar 2022
- Telegram: Nachrichten per Bot von der Heimautomation aufs Handy - 2. Januar 2022
7 Comments