
Ich verwende archlinux
systemd und transmission.service
lade Torrents herunter. Ich habe eine ext4
Festplattenpartition, die automatisch mit eingebunden ist fstab
. /var/lib/transmission
Dort speichere ich alle abgeschlossenen Downloads und teile dieses Verzeichnis mit einem Samba-Server im lokalen Netzwerk.
Das Problem ist, dass ich bei jedem Booten des Computers sehe, /var/lib/transmission
dass nicht jeder Leseberechtigungen hat. Das bedeutet, dass der Samba-Server den vollständigen Pfad zu diesem Verzeichnis nicht lesen kann und ich letztendlich nicht mit einem Samba-Client auf die Dateien zugreifen kann. Nach dem Booten kann ich es ausführen sudo chmod a+rX /var/lib/transmission
und erst dann ist das Verzeichnis zugänglich. Es scheint, als würden die Berechtigungen bei jedem Booten transmission
neu geschrieben .drwxr-x---
Gibt es eine elegante Möglichkeit, einige systemd-Dateien zu bearbeiten und das Problem zu beheben? Vielleicht mithilfe von sudo systemctl edit transmission.service
?
Antwort1
Die Lösung ergänzt /etc/systemd/system/multi-user.target.wants/transmission.service
das Folgendeoderverwenden sudo systemctl edit transmission.service
und schreiben:
[Service]
ExecStartPost=/bin/chmod a+rX /var/lib/transmission
systemctl edit
öffnet einen Texteditor, mit dem Sie die Einträge für die ursprüngliche Servicedatei überschreiben können, ohne die vom Paketmanager bereitgestellte Originaldatei zu ändern.
Nach dem Hinzufügen erfolgte ein Neustart und das Problem wurde behoben.
Notiz:Es könnte mehr seinpragmatischzu verwenden
systemctl edit
, da dieser Befehl vermutlich erstellt wurde, damit Sie die vom Paketmanager bereitgestellten ursprünglichen Servicedateien nicht bearbeiten.Notiz:
chmod
Möglicherweise müssen Sie den Pfad zur ausführbaren Datei entsprechend Ihren Verteilungspfaden anpassen .
Bearbeiten:
Ganz ähnlich wie bei Verzeichnissen in /var/run
habe ich herausgefunden, warum systemd bei jedem Systemstart sicherstellt, dass dieses Verzeichnis über diese Berechtigungen verfügt. Die ursprüngliche Erklärung hierzu finden Sie hier:https://serverfault.com/questions/824393/var-run-directory-creation-even-though-service-is-disabled/824394#824394
Zitat:
Mit systemd gibt es eine neue Funktionalität namens ,
tmpfiles.d(5)
mit der beim Booten Dateien oder Verzeichnisse außerhalb der Datei erstellt werden können.service
.Openvpn
undejabberd
verwenden diese beide, weshalb die Verzeichnisse in/var/run
trotzdem erstellt werden, auch wenn sie beim Booten nicht gestartet werden.Die Konfigurationsdateien tmpfiles werden gespeichert in
/usr/lib/tmpfiles.d/
Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, die Umask-Nummer wie /usr/lib/tmpfiles.d/transmission.conf
folgt zu bearbeiten:
d /var/lib/transmission 0755 transmission transmission