Synology DiskStation: Daemon-user im DSM sichtbar machen

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):

Inhalt von /etc/passwd

Inhalt von /etc/passwd

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.

Sebastian

...ist staatlich geprüfter Techniker für Elektrotechnik, Schwerpunkt Prozessautomatisierung und Energietechnik. Die Themen Automatisierung und Programmierung haben es ihm besonders angetan.
Außerdem ist er für jede technische Spielerei zu haben 😉
Sebastian

7 Comments

  1. Avatar
    Antworten Pascal

    Guten Tag
    Danke für die Anleitung, leider sehe ich nicht alle User. Ich sehe nicht mal die „normalen“ die ich in der Benutzerverwaltung sehe, geschweige den den ich sichtbar machen möchte :-(.

    An was kann das liegen?
    Vielen Dank

    • Sebastian
      Antworten Sebastian

      Bitte teile doch mal ein paar Details mit.
      Wie bist Du vorgegangen?
      Hast Du die richtige Datei im richtigen Verzeichnis erwischt?
      Wie sieht der Inhalt der Datei aus, oder ist sie komplett leer?
      Welche DSM-Version benutzt Du?

  2. Avatar
    Antworten Pascal

    Hallo

    Du rsache war die, ich war nicht mit dem root bez. dem Admin User angemeldet. Als ich mich mit dem Admin User angemeldet habe konnte ich alle User sehen.
    Danke für Deine Unterstützung.

  3. Avatar
    Antworten Karl

    Leider wird bei dem „Benutzer“ der jetzt im >1024 Bereich liegt die Parameter immer fest auf /var/services/homes/:/sbin/nologin gesetzt! Das ist leider schlecht für meinen Btsync Benutzer. Blöde Synology Kiste hätte ich mal nicht nach DSM6 geupdatet seit dem ist das so. Wenn jemand eine Lösung hat immer her damit!

  4. Avatar
    Antworten Thorsten

    Hallo!
    Ich habe den Tipp ausgeführt.
    Allerdings für alle Benutzer die ich ändern wollte auf einmal… 🙁
    Jetzt läßt sich keiner der Dienste starten.
    Kann ich das wieder beheben?

    Danke!
    Thorsten

    • Sebastian
      Antworten Sebastian

      Hallo Thorsten,
      im Prinzip spricht nichts dagegen, mehrere Nutzer auf einmal anzupassen, das ist also nicht das Problem.
      Wenn Du Dir den alten Stand irgendwo zwischengespeichert hast, kannst Du den einfach wiederherstellen. Falls nicht, müsstest Du nochmal checken, ob sich da auch kein Fehler eingeschlichen hat. Das wichtigste dabei: keine UID doppelt vergeben!

      • Avatar
        Antworten Thorsten

        Nochmal Hallo!
        Nach einigem hin un her habe ich jetzt in der Userverwaltung die Berechtigungen aktualisiert…
        Läuft alles wie es soll!
        Vielen Dank!
        Thorsten

Hinterlasse eine Antwort

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