mchott Geschrieben July 2, 2015 at 11:04 Geschrieben July 2, 2015 at 11:04 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. Zitieren
remotecontrol Geschrieben July 3, 2015 at 05:54 Geschrieben July 3, 2015 at 05:54 Wie wird das Skript gestartet? Wenn das als Dienst läuft, dann ist das Arbeitsverzeichnis meist "/" und da hat nur root Schreibrechte. Du solltest sicher stellen, dass Du einen absoluten Pfad verwendest und der Dienste-User Schreibrechte darin hat. Zitieren
mchott Geschrieben July 3, 2015 at 06:00 Autor Geschrieben July 3, 2015 at 06:00 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. Zitieren
remotecontrol Geschrieben July 3, 2015 at 09:41 Geschrieben July 3, 2015 at 09:41 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. Zitieren
mchott Geschrieben July 3, 2015 at 10:44 Autor Geschrieben July 3, 2015 at 10:44 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. Zitieren
remotecontrol Geschrieben July 3, 2015 at 12:49 Geschrieben July 3, 2015 at 12:49 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. Zitieren
mchott Geschrieben July 3, 2015 at 22:25 Autor Geschrieben July 3, 2015 at 22:25 Im brickv kann man, wenn man ein neues Programm anlegt und dort wegen der Verwendung "WebInterface" auswählt keinen weiteren Parameter einstellen. Andernfalls steht "." als Verzeichnis in den Parametern. Das Skript lässt sich dann unter "http://IP-Addredd/programs/Programmname/bin/index.php" aufrufen. Zitieren
photron Geschrieben July 8, 2015 at 09:33 Geschrieben July 8, 2015 at 09:33 . (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 Zitieren
mchott Geschrieben July 16, 2015 at 18:59 Autor Geschrieben July 16, 2015 at 18:59 Es hat fast funktioniert (sorry für das lange warten) nur musste ich 777 setzen, damit er schreiben durfte, also: chmod 0777 /home/tf/programs/<program-id>/bin Damit ging es dann. Zitieren
photron Geschrieben July 17, 2015 at 09:00 Geschrieben July 17, 2015 at 09:00 Hm, da fehlt wohl ein Neustart nach dem "sudo usermod -a -G tf www-data" denke ich. Anyway, mit dem nächsten RED Brick Image wird das automatisch richtig funktionieren. Zitieren
mchott Geschrieben July 17, 2015 at 11:59 Autor Geschrieben July 17, 2015 at 11:59 ?!?!! Also Neustart hatte ich gemacht..?!! Zitieren
photron Geschrieben July 17, 2015 at 12:10 Geschrieben July 17, 2015 at 12:10 Dann ist mir nicht klar warum das so nicht ging. Ist auch nicht bedeutend: chmod 0777 /home/tf/programs/<program-id>/bin funktioniert ja auch. Auch wenn jetzt dadurch jeder dahin schreiben kann, was aber nicht kritisch ist auf dem RED Brick. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.