Wenn ein Programm eine Schreibberechtigung benötigt, wie soll ich es mit chown einstellen? Welche Berechtigungen hätte das Programm foo, um diesen Fehler zu beheben?
failed to create pid file '/var/run/bar.pid': Permission denied
permissions
el_pup_le
quelle
quelle
/var/run
Allgemeiner Ansatz: Bestimmen Sie den Benutzer und die Gruppe des Prozesses, der versucht, auf die Datei zuzugreifen. Dies ist häufig in der Konfiguration der Software zu finden (z. B. Webserver / Mailserver / ...). Wenn die Software jedoch bereits ausgeführt wird, verwenden Sie Folgendes:
Suchen Sie nach dem Prozess, für den Sie Zugriffsrechte konfigurieren möchten. In der ersten Spalte erfahren Sie, unter welchem Benutzernamen es ausgeführt wird.
Hier erfahren Sie, zu welchen Gruppen der Benutzer gehört.
Ändern Sie den Eigentümer oder die Gruppe der Datei entsprechend dem Dienst.
Hinweis 1: Da die Frage darauf hinweist, dass sich die Datei in / var / run / befindet, gehe ich davon aus, dass nur ein Prozess Zugriff benötigt. Wenn dies nicht der Fall ist, sollten Sie den Eigentümer oder die Gruppe nicht ändern, aber Sie könnten in Betracht ziehen, den Prozess hinzuzufügen 'Benutzer der Gruppe oder Erstellen einer neuen Gruppe für diese Datei / diesen Ordner.
Hinweis 2: Mit Apparmor, einem Sicherheitssystem, können lustige Dinge passieren: Es kann verhindern, dass Prozesse in Dateien und Ordner schreiben, für die sie (auf Dateisystemebene) alle erforderlichen Rechte haben. Mit können
aa-status
Sie sehen, ob eine bestimmte Regel für Ihren Dienst aktiv ist.quelle
Ich habe einfach die Erstellung eines Ordners hinzugefügt, kurz bevor der Start-Stopp-Deamon ausgeführt wird. Dies funktioniert, da das Skript beim Start im Allgemeinen als Root ausgeführt wird. Es wird lediglich der Ordner in / var / run erstellt und der Eigentümer sofort geändert, sodass eine PID geschrieben werden kann.
Im folgenden Beispiel überprüfe ich, ob der Unterordner von / var / run vorhanden ist, in dem ich die PIDs als aktuellen Ausführungsbenutzer angegeben habe, in diesem Fall Benutzer 'pi' (da ich auf einer Himbeere bin).
Überprüfen Sie auch diesen Link, da er für mich sehr lehrreich war: Python-Skript zur Ausführung als Dienst , das hier behandelte Problem wurde jedoch nicht behandelt.
Beispielteil meines Shell-Skripts:
quelle