Jump to content

RED Dateisystem schreiben?!


Recommended Posts

Bei meinem aktuellen Projektchen würde ich gern die Daten meiner JS-Anwendung speichern. Dafür nutze ich eine einfache WebService Schnittstelle, wo ich JSON austausche. Diese würde ich gern auf dem RED zum Laufen bringen, aber wenn ich dort von PHP aus die JSON-Daten in eine Datei ablegen möchte, meckert er, dass er keine Berechtigungen hat.

 

Ist das so und wenn ja wie/wo kann man das ändern?

 

Ziel..neben den JSON-Daten würde ich gern auch bei Zeiten einen Updatemechanismus implementieren, der dann die PHP-Dateien überschreibt. Auch das geht derzeit nicht.

Link zu diesem Kommentar
Share on other sites

Das Skript wird über den brickv hochgeladen und dort kann man doch gar keine User einstellen? Und wie würde ich über den brickv die Berechtigungen für das Verzeichnis ändern?

 

Ich könnte das über die Shell, aber mir geht es ganz bewusst um einen konfigurativen Weg, weil das die Endanwender ja später selber machen müssen und die sind eben keine Informatiker.

Link zu diesem Kommentar
Share on other sites

Je mehr Anforderungen die Anwendungen haben, umso mehr muss sich der Anwender auch mit der Umgebung auskennen. Selbst wenn das über brickv ginge: mal einfach globale Schreibrechte auf's "bin" Verzeichnis vergeben ist eine ganz schlechte Idee ...

 

Die Anwendung sollte selber gezielt steuern, wohin sie die Daten schreibt. Ggf. beim Einrichten des Dienstes das Arbeitsverzeichnis explizit setzen auf das HOME Verzeichnis des Dienste Users (ich habe keine RED, kann darum nicht prüfen, welches User das ist). Dann müsste es schon gehen, wenn die Anwendung einfach ins Arbeitsverzeichnis schreibt.

 

Letzteres (einfach ins Arbeitsverzeichnis schreiben) ist kein empfehlenswertes Vorgehen für Dienste. Da verliert man schnell die Kontrolle und sucht verzweifelt, wo denn der Output gelandet ist. Lieber mit einem Parameter arbeiten, der das Zielverzeichnis explizit festlegt.

Link zu diesem Kommentar
Share on other sites

Nicht das wir hier aneinander vorbeireden.

 

Beim RED-Brick lädt man - in meinem Fall PHP - die PHP Dokumente hoch und hat dann sehr sehr wenige Parameter. Die Anwendung "richtet" hier gar nichts ein, sondern wird ausgeführt (entweder per BrowserCall oder per AutoRun).

 

Es wäre der Hammer, wenn jetzt diese PHP-Anwendung einfach Berechtigungen manipulieren könnte, besonders von "Keine" auf "Alle". Das geht meines Wissens nach nicht und das sollte auch gut so sein.

 

Die RED Brick .. so scheint mir .. ist so berechtigt, dass nur der brickv schreiben darf und eben wenn man per Shell drauf gehen würde.

 

Meine Frage zielt also ganz konkret darauf ab, dass ich vom brickv aus für dieses Verzeichnis (nicht für mehr) die Berechtigungen öffnen kann.

 

Mit einem Raspberry läuft es, aber den muss man halt selber verwalten. Allerdings fände ich es wesentlich charmanter mit dem REDbrick, allein wegen der baulichen Vorzüge.

Link zu diesem Kommentar
Share on other sites

Die Anwendung sollte zum Zeitpunkt der Ausführung keine Rechte setzen müssen, das ist klar.

 

Das

ich vom brickv aus für dieses Verzeichnis (nicht für mehr) die Berechtigungen öffnen kann
geht eben nur bedingt: wenn "dieses Verzeichnis" per Default ein bin Verzeichnis ist sollte man das eben nicht ändern und da fängt es dann doch an, dass man etwas mehr Wissen über die Ablaufumgebung braucht, weil man die Skripte je nach Funktion anders einrichten oder starten muss.

 

Ich habe in der Doku gesehen, dass beim Hochladen das Arbeitsverzeichnis angezeigt wird (im Beispiel war es "." was wohl == "/" ist): kannst Du das beim Hochladen auch vorgeben/ändern im brickv?

 

Vielleicht reicht es ja, das Arbeitsverzeichnis auf das HOME-Verzeichnis des RED Users zu setzen.

 

Link zu diesem Kommentar
Share on other sites

. (Punkt) steht für das aktuelle Verzeichnis, da sich die Angabe des Arbeitsverzeichnis (da wo es angegeben werden kann) immer relative auf das bin Verzeichnis des Programms bezieht.

 

Der absolute Pfad des bin Verzeichnis leitet sich so her:

 

/home/tf/programs/<program-id>/bin

 

 

Jetzt zum eigentlichen Problem. Wenn du jetzt dein PHP Programm im Web Interface Modus über

 

http://<red-brick>/programs/<program-id>/bin/index.php

 

aufrufst führt Apache das PHP Skript aus. Dabei ist das aktuelle Verzeichnis das bin Verzeichnis des Programms.

 

Das Problem dabei ist jetzt das Apache als User www-data läuft und damit auch das PHP Skript. Das bin Verzeichnis gehört aber dem User tf und www-data hat da keine Schreibrechte.

 

Das werde ich für die nächste RED Brick Image Version per ACL beheben, so das www-data auch im bin Verzeichnis schreiben kann.

 

Bis dahin kannst du den User www-data zur tf Group hinzufügen und dann der tf Group im bin Verzeichnis Schreibrechte geben. Dazu folgende Befehle auf dem RED Brick ausführen (<program-id> durch den Namen deines Programms ersetzen):

 

sudo usermod -a -G tf www-data
chmod 0775 /home/tf/programs/<program-id>/bin

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...