+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Rechte und Gruppen von hochgeladenen Dateien

  1. #1
    Neu an Board
    Registriert seit
    22.10.2010
    Beiträge
    3
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Rechte und Gruppen von hochgeladenen Dateien

    Hallo!

    Ich verwende Version 1.5.18 im Legacy-Modus: 1.0 und Debian Linux mit Apache 2.2 und php5. Der Webserver bzw. php laufen im module mode (also nicht cgi oder sonstwas) mit dem user www-data und der group www-data.

    Wenn ich unter Site->Medien ein Bild hochlade, dann landet das im Verzeichnis /mysite/htdocs/images. Damit ich die Datei später auch noch per FTP ändern kann, möchte ich, dass die Datei der Gruppe ftpgroup gehört und die Rechte 664 hat. In der Gruppe ftpgroup sind die Mitglieder www-data und ftpuser.

    Ich habe also dem Verzeichnis /mysite/htdocs/images mit "chmod g+s" und "chgrp ftpgroup" die richtigen Rechte gesetzt, damit neu angelegte Dateien eigentlich der Gruppe ftpgroup gehören sollten, aber wenn ich mit Joomla die Datei hochlade gehört sie immer dem user www-data und der Gruppe www-data. Weiters hat sie nur die Rechte 644 und nicht das benötigte 664.

    Wo kann ich einstellen mit welcher Gruppe und mit welchen Rechten Joomla neue Dateien anlegt?

    viele Grüße,
    Andi

  2. #2
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.639
    Bedankte sich
    112
    Erhielt 935 Danksagungen
    in 711 Beiträgen

    Standard

    Hi,

    die Antwort zu Deiner Frage steckt bereits in Deiner Frage.

    ...Der Webserver bzw. php laufen im module mode (also nicht cgi oder sonstwas) mit dem user www-data und der group www-data...
    Also mit anderen Worten läuft Dein PHP Script (in diesem Fall Joomla) unter dem gleichen Benutzer wie Dein Webserver und legt logischerweise die Dateien auch als dieser an. Soll nun Joomla also Dateien als FTP user hochladen gibt es zwei (evtl. auch mehr) Wege um das zu lösen.

    1.) Joomla FTP Modus: sprich joomla verbindet sich selber per FTP mit dem Webspace nach dem Upload und spielt die Datei dann ein... Da nicht jede Erweiterung auch der Joomla API folgt funktioniert das also nicht unbedingt immer gut...

    2.) Besserer Weg: PHP als FCGI einsetzten und mittels SuPHP den User automatisch auf Basis des Dateieigentümers setzen lassen...

    3.) Bester Weg: PHP als FCGI einbinden und mittels SuExec den entsprechenden User setzen.

    Anleitungen hierzu gehören hier nicht rein sondern erfordern gutes Wissen im Umgang mit einem eigenen Server.

    Gruß Dennis
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

  3. #3
    Neu an Board
    Registriert seit
    22.10.2010
    Beiträge
    3
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo,

    danke für die Antwort. 2 und 3 kommen für mich leider nicht in Frage, weil der Webserver nun mal so konfiguriert ist wie er es ist und ich das nicht beeinflussen kann. 1 werde ich auf jeden Fall mal in Betracht ziehen und ausprobieren, aber ich möchte eigentlich das grundsätzliche Problem lösen:

    Mir ist schon klar, dass neu angelegte Dateien grundsätzlich dem User und dessen primärer Gruppe gehören, der die Datei angelegt hat. Aber da ich das s bit für die Gruppe für das images Verzeichnis gesetzt habe, müsste eigentlich eine neue Datei darin zwar dem User gehören, der die Datei anlegt (also www-data), aber nicht dessen primärer Gruppe, sondern der Gruppe der das images Verzeichnis gehört.

    Und wenn ich es auf der shell probiere funktioniert das auch:
    myhost$ whoami
    www-data

    myhost$ id www-data
    uid=33(www-data) gid=33(www-data) groups=33(www-data),15009(ftpgroup)

    myhost$ ls -ld images
    drwxrwsr-x 6 www-data ftpgroup 4096 2010-10-01 15:34 images

    myhost$ cd images/

    myhost$ touch testfile

    myhost$ ls -l testfile
    -rw-r--r-- 1 www-data ftpgroup 0 2010-10-22 15:47 testfile
    wie man sieht gehört das testfile dann zur Gruppe ftpgroup, obwohl www-data eigentlich die primäre Gruppe www-data hat.

    Wenn ich nun mit Joomla eine Datei hochlade, dann sieht das so aus:
    myhost$ ls -l testimg.png
    -rw-r--r-- 1 www-data www-data 6425 2010-10-22 15:49 testimg.png
    Für mich sieht das so aus, als ob Joomla nach dem Upload die Gruppe auf www-data setzt, da das Betriebsystem ja eigentlich die Gruppe ftpgroup hätte verwenden müssen.

    Testweise habe ich noch ein kleines PHP Programm geschrieben und damit eine Datei im images Verzeichnis mit file_put_contents() erstellt und diese gehört auch wie erwartet der Gruppe ftpgroup. D.h. php und apache funktionieren wie sie sollen, nur irgendwo in Joomla wird die Gruppe auf www-data gestellt.

    Diese Stelle muss ich finden. Und dann wäre da auch noch die Sache mit den Rechten, denn die sollen ja auch nicht 644, sondern 664 sein, sonst bringt es mir am Ende gar nichts, wenn ich es schaffen sollte die Datei der richtigen Gruppe zuzuordnen.

    viele Grüße,
    Andi

  4. #4
    Pöser Moderator Avatar von SniperSister
    Registriert seit
    23.09.2005
    Ort
    /home/köln
    Alter
    22
    Beiträge
    2.506
    Bedankte sich
    77
    Erhielt 680 Danksagungen
    in 465 Beiträgen

    Standard

    Zitat Zitat von andibrun Beitrag anzeigen
    D.h. php und apache funktionieren wie sie sollen, nur irgendwo in Joomla wird die Gruppe auf www-data gestellt.
    Glaube mir wenn ich dir sage: Joomla KANN das nicht. Genau aus diesem Grunde hast du kein Joomla!-Problem, sondern ein Problem mit deiner Serverkonfiguration. Wenn du auf deinem Standpunkt "ich ändere nichts an der Konfiguration" beharrst, wirst du auf den FTP-Modus ausweichen müssen.

    Beste Grüße
    Snipy

  5. #5
    Neu an Board
    Registriert seit
    22.10.2010
    Beiträge
    3
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Zitat Zitat von SniperSister Beitrag anzeigen
    Joomla KANN das nicht.
    Wunderbar, dann kann ich ja aufhören zu suchen und werde mir das mit dem FTP Modus anschauen.

    Oder ich patche Joomla, denn meiner Meinung nach sollte es das können ;-)

    UPDATE: Es funktioniert

    Ich habe herausgefunden, dass die Rechte von neu hochgeladenen Dateien in libraries/joomla/filesystem/path.php in dieser Zeile eingestellt werden:

    function setPermissions($path, $filemode = '0664', $foldermode = '0775') {

    und ein paar

    @chgrp($path, 'ftpgroup');

    an den richtigen Stellen von JPath::setPermissions in path.php haben bewirkt, dass die hochgeladenen Dateien nun der richtigen Gruppe gehören und die richtigen Rechte 664 haben.

    Das war jetzt ein schmutziger hack und evtl. kann das einer, der besser als ich programmieren kann, so einbauen, dass man das dann auch in der config einstellen kann.
    Ende UPDATE


    Danke an alle für die Antworten,
    Andi
    Geändert von andibrun (22.10.2010 um 16:54 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein