Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Console assets:sync und Clockwork führen zu Fehlermeldung bei Zugriff auch Cache #5756

Open
Koala opened this issue Jul 29, 2023 · 9 comments
Labels
Debug "Debug"-Addon related things

Comments

@Koala
Copy link
Contributor

Koala commented Jul 29, 2023

Fragen

  • Kann der Aufruf von Clockwork bei Verwendung der Console verhindert werden?
  • Könnte in Vorbereitung auf die Ausführung der Kommandos sichergestellt werden, dass der PHP-Prozess mit den Zugriffrechten (z.B. als Benutzer www-data) des Webservers gestartet wurde?

Problembeschreibung

Das Debug-Addon bringt das Vendor-Paket clockwork mit.
Dieses erstellt im Verzeichnis redaxo/cache/addons/debug/clockwork.db/ seine Dateien mit den Zugriffrechten 0644 (Besitzer und Gruppe nach Servervorgabe (bei mir www-data)).
Solange der Zugriff über den Webserver erfolgt, ist das kein Problem.

Beim Aufruf in der Console von php redaxo/bin/console assets:sync wird wohl auch das Debug-Addon (und damit auch Clockwork) mit angesprochen. Dies versucht nun mit den Rechten des PHP-Prozesses (die Rechte des aufrufenden Benutzers) auf die Dateien schreibend im Verzeichnis redaxo/cache/addons/debug/clockwork.db/ zuzugreifen.
Das schlägt aber fehl, da die Dateien dem Benutzer www-data gehören und für die Gruppe www-data keine Schreibrechte, sondern ausschließlich Leserechte vorhanden sind.

Fehlermeldung:

In FileStorage.php line 42:

Path "/usr/local/www/redaxo/redaxo5_x_demoaddon/redaxo/cache/addons/debug/clockwork.db/index" is not writable.

REDAXO: 5.15.1
PHP: 8.2.8
AddOns: Debug-Addon 1.3.0

@gharlan
Copy link
Member

gharlan commented Jul 30, 2023

  • Kann der Aufruf von Clockwork bei Verwendung der Console verhindert werden?

Das ist zurzeit nicht vorgesehen und das Debug-Addon hat bisher auch keine Einstellungsseite, die ich nur dafür auch eher nicht einführen wollen würde.
Vielleicht führt man eine Env-Variable dafür ein, sodass man es so aufrufen kann: REX_CLI_DEBUG_ADDON=0 redaxo/bin/console ... (die Variable könnte man dann optional natürlich auch in die bashrc o.ä. packen, sodass sie immer greift).
@bloep oder hast du noch Ideen?

  • Könnte in Vorbereitung auf die Ausführung der Kommandos sichergestellt werden, dass der PHP-Prozess mit den Zugriffrechten (z.B. als Benutzer www-data) des Webservers gestartet wurde?

Siehe dazu die Diskussion hier: #3287 (comment)
Wir haben also dafür eine Warnung. Verhindern würde ich es aber auf keinen Fall, dass man die cli mit einem anderen User verwenden kann.

@gharlan gharlan added the Debug "Debug"-Addon related things label Jul 30, 2023
@Koala
Copy link
Contributor Author

Koala commented Jul 30, 2023

Noop, die Warnung kam/kommt bei mir definitiv nicht.

Müsste die schon erscheinen, wenn php redaxo/bin/console aufgerufen wird?
Oder wie könnte ich die provozieren?

@gharlan
Copy link
Member

gharlan commented Jul 30, 2023

Die kommt nur, wenn die funktion posix_getuid existiert, siehe hier.

@Koala
Copy link
Contributor Author

Koala commented Jul 30, 2023

Rätzel gelöst.

Es wird geprüft, ob der Aufrufende Benutzer gleich dem Benutzer ist, der den Backend-Ordner redaxo/ angelegt hat. Da ich als Benutzer selbst den Redaxo-Download entpackt und an die entsprechende Stelle für den Webserver kopiert habe, bringt dieser Test keinen Fehler.

Der Test könnte besser auf den Besitzer von redaxo/cache/core oder redaxo/data/core erfolgen. Diese Verzeichnisse und darunter befindliche Dateien werden definitiv vom Webserver angelegt und sind dann (in meinem Fall) der Benutzer www-data.

@Koala
Copy link
Contributor Author

Koala commented Jul 30, 2023

PR: #5760

@bloep
Copy link
Member

bloep commented Jul 31, 2023

Vielleicht führt man eine Env-Variable dafür ein, sodass man es so aufrufen kann: REX_CLI_DEBUG_ADDON=0 redaxo/bin/console ... (die Variable könnte man dann optional natürlich auch in die bashrc o.ä. packen, sodass sie immer greift).

für den Alltagsgebrauch wäre das denke ich gut, wenn man das über eine Env-Variable in der .bashrc o.ä. global für seine Umgebung deaktiveren kann.
Gleichzeitig fände ich (sofern die symfony console sowas kann) eine globale Option oder so gut, sodass man es auch über den normalen help command sehen kann mit zusätzlichen Hinweis auf die Env-Var.

Der Test könnte besser auf den Besitzer von redaxo/cache/core oder redaxo/data/core erfolgen. Diese Verzeichnisse und darunter befindliche Dateien werden definitiv vom Webserver angelegt und sind dann (in meinem Fall) der Benutzer www-data.

Das würde aber auch nicht immer Stand halten. Wenn ich das Setup via CLI machen würde, hätte der redaxo/cache/core Ordner passende Owner, aber die passen dann ggf. für den Webserver nicht.

Wie gehen denn andere Systeme mit unterschiedlichen Usern für CLI / Webserver um?

@Koala
Copy link
Contributor Author

Koala commented Jul 31, 2023

Wenn ich das Setup via CLI machen würde, hätte der redaxo/cache/core Ordner passende Owner, aber die passen dann ggf. für den Webserver nicht.

Oh, ok ... und der Besitzer dieser Ordner ändert sich danach auch nicht mehr. Hmmm ... gibt es denn mind. eine Datei/Verzeichnis, dass ausschließlich und permanent vom Webserver aus angelegt wird?

@skerbis
Copy link
Contributor

skerbis commented Aug 1, 2023

Beim Aufruf in der Console von php redaxo/bin/console assets:sync wird wohl auch das Debug-Addon (und damit auch Clockwork) mit angesprochen.

Warum rufst du PHP nicht als User des Webs auf?

@Koala
Copy link
Contributor Author

Koala commented Aug 1, 2023

Beim Aufruf in der Console von php redaxo/bin/console assets:sync wird wohl auch das Debug-Addon (und damit auch Clockwork) mit angesprochen.

Warum rufst du PHP nicht als User des Webs auf?

Die Möglichkeit, die Redaxoconsole als Benutzer www-data ("User des Webs") aufrufen zu können, habe ich mir nach dem Hinweis ersteinmal eingerichtet. Unabhängig davon, bleibt die Frage, warum wird das Clockwork für die Console überhaupt aufgerufen? Gibt es daraus einen Nutzen?

Wer denkt schon immer daran, die Console als User des Web aufzurufen? Sicher der, der öfter damit arbeitet ... aber wenn es vergessen wird, sollte ein entsprechender Hinweis erscheinen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Debug "Debug"-Addon related things
Development

No branches or pull requests

4 participants