So gehts: Anleitung
Ich hab mich jetzt mal intensiv damit auseinander gesetzt und möchte Euch daran teilhaben lassen.
Änderungen auf eigene Gefahr!
Hintergrund
Ziel dieser Anleitung ist es, Benutzern, die von beliebigen Paketen angelegt worden sind, auf einfache Art und Weise Lese- und Schreibrechte auf verschiedene Freigaben zu gewähren oder zu entziehen, und das mittels der Benutzerverwaltung des DSM.
Dies ist zum Beispiel nötig, wenn ein Post Processing Script von
NZBget Aktionen außerhalb seines Bereiches durchführen soll. Oft erscheint dann im Log-File
permission denied, da dem Benutzer vorher nicht die nötigen Rechte eingeräumt wurden.
Um dies 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?
Im 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 sind normalerweise eineindeutig. Die UID 0 ist für root reserviert. 1-99 sind für systemnahe Dienste reserviert, 100-999 für andere System-Benutzer.
Aufbau der Einträge in der
passwd-Datei:
Rich (BBCode):
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 Users
6. home-Verzeichnis des Benutzers
7. Absoluter Pfad zum command oder shell
Kommen wir also zur Sache.
Wie verbinden uns als root via SSH auf die DiskStation und lassen uns die vorhanden Benutzer anzeigen:
So sieht das Ergebnis bei mir aus:
Rich (BBCode):
admin:x:1024:100:System default user:/var/services/homes/admin:/bin/sh
anonymous:x:21:21:Anonymous FTP User:/nonexist:/sbin/nologin
couchpotatoserver:x:100:100:CouchPotato User:/usr/local/couchpotatoserver/var:/bin/sh
dovecot:x:143:143:Dovecot User:/nonexist:/sbin/nologin
ftp:x:21:21:Anonymous FTP User:/nonexist:/sbin/nologin
guest:x:1025:100:Guest:/nonexist:/bin/sh
headphones:x:102:100:Headphones User:/usr/local/headphones/var:/bin/sh
http:x:1023:1023::/var/services/web:/bin/false
iMac:x:1030:100:Time Machine user:/var/services/homes/iMac:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
MacBookPro:x:1031:100:Time Machine user:/var/services/homes/MacBookPro:/sbin/nologin
Manu:x:1032:100::/var/services/homes/Manu:/sbin/nologin
mysql:x:66:66::/var/services/mysql:/bin/false
nobody:x:99:99::/:/bin/false
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
postfix:x:125:125:Postfix User:/nonexist:/sbin/nologin
postgres:x:55:55::/var/services/pgsql:/bin/sh
pyload:x:1045:100:daemon user for pyLoad:/var/services/homes/pyload:/sbin/nologin
root:x:0:0:root:/root:/bin/ash
SamsungTV:x:1028:100::/var/services/homes/SamsungTV:/sbin/nologin
Sebastian:x:1029:100::/var/services/homes/Sebastian:/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
smmsp:x:25:25:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
spamfilter:x:783:99:Spamassassin User:/var/spool/postfix:/sbin/nologin
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:
Rich (BBCode):
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
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 in 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 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:
Rich (BBCode):
DS> find / -user 101 -print
Dann führen wir die Änderungen durch, mit folgendem Befehl:
Rich (BBCode):
DS> find /volume1/ -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
Nach dem erfolgten Neustart zeigt die Benutzerverwaltung nun den zusätzlichen Benutzer
nzbget an, der sich wie ein normaler Benutzer verwalten lässt.
Jetzt noch den
NZBget-Dienst im Paketzentrum starten. Fertig.
Das ganze einfach für alle gewünschten Benutzer wiederholen und dabei immer darauf achten, dass Ihr keine UID vergebt, die schon vorhanden ist.