Richtiger Owner für Verzeichnisse und Dateien!

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Richtiger Owner für Verzeichnisse und Dateien!

Beitrag von timo » Di 1. Jul 2003, 11:43

Die häufigste Ursache für Probleme mit Contenido scheint zu sein, daß die Dateien und Verzeichnisse falsche Berechtigungen und Besitzer haben.

Es ist wichtig, daß derselbe Benutzer konsistent das gesamte Contenido-Verzeichnis besitzt. Beispiel:

Es kommt oftmals vor, daß Contenido den Besitzer "A" hat, die Dateien, die jedoch durch das Contenido bearbeitet werden, den Besitzer "B" haben. Sofern der SAFE_MODE in PHP ausgeschaltet ist, ist das kein Problem, sofern die Dateiberechtigungen stimmen, aber da in den meisten Fällen der SAFE_MODE an ist, darf Contenido als "A" nicht auf Dateien von "B" zugreifen, obwohl die Berechtigungen stimmen. Wichtig ist daher, daß sämtliche Verzeichnisse und Dateien denselben Besitzer haben!

Nachfolgendes kleines Script prüft, ob irgendwelche Verzeichnisse und/oder Dateien einen unterschiedlichen Besitzer haben. Einfach in eine Textdatei (z.b. permissioncheck.php) kopieren, hochladen und auf dem Webserver über einen Browser aufrufen.

Code: Alles auswählen

<?php

echo "<pre>";
checkOwnerDir(getcwd()."/");
echo "checkPerms beendet.";
echo "</pre>";

function checkOwnerDir ($from_path)
{
        $old_path = $from_path;
    if (is_dir($from_path))
    {
        chdir($from_path);
        $myhandle=opendir('.');

        while (($myfile = readdir($myhandle))!==false)
        {
            if (($myfile != ".") && ($myfile != ".."))
            {
                if (fileowner($myfile) != getmyuid())
                {
                        $ownerInfo = posix_getpwuid(fileowner($myfile));

                        echo "<font color=\"red\">Fehler:</font> Der Besitzer \"".$ownerInfo["name"]."\" der Datei ".$from_path.$myfile." ist unterschiedlich zu dem Besitzer (\"".get_current_user()."\") des aktuellen Scriptes. Stellen Sie sicher, daß die Datei den gleichen Besitzer (owner) erhält wie das Script.\n";
                }

                if (is_dir($myfile))
                {
                    checkOwnerDir ($from_path.$myfile."/");
                    chdir($from_path);
                }

            }
        }
        closedir($myhandle);
    }

    chdir($old_path);
    return;
}


?>

suupamuh
Beiträge: 23
Registriert: Mi 2. Jul 2003, 14:38
Kontaktdaten:

Beitrag von suupamuh » Mi 2. Jul 2003, 15:03

OK gut bei mir kommen ungefähr 1.2 millionen Fehlermeldungen. Nun können die macher des Scripts bestimmt auch sagen, wie ich das wieder gerade biegen kann. :D Ich weiss ja das ich die Rechte umstellen muss, nur wie ? Mit gut zureden werde ich da wohl keine Chance haben oder ?

supercondor
Beiträge: 43
Registriert: Do 19. Jun 2003, 11:55
Kontaktdaten:

Beitrag von supercondor » Mi 2. Jul 2003, 15:54

Wenn du Shellzugang hast dann mir Chmod. Wenn nicht über dein FTP-Programm oder zur Not auch mit Hilfe von www2ftp.de

suupamuh
Beiträge: 23
Registriert: Mi 2. Jul 2003, 14:38
Kontaktdaten:

Beitrag von suupamuh » Mi 2. Jul 2003, 16:05

Je nee is klar, das ich die chmods mit ftp progs machen kann. Soviel ich weiss oder gerade gelernt hab, brauch ich chowns oder sowat. Dabei weiss ich halt nich wie oder woher und wie ich das machen kann.

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 2. Jul 2003, 16:12

supercondor hat geschrieben:Wenn du Shellzugang hast dann mir Chmod. Wenn nicht über dein FTP-Programm oder zur Not auch mit Hilfe von www2ftp.de
Es geht nicht um die Rechte, sondern um den Besitzer.

Ownage

Beitrag von Ownage » Do 3. Jul 2003, 01:30

Des Rätsels Lösung auf der Spur:

Irgendwie scheints hier ein ganz großes Kommunikationsproblem zu geben. Ich habe jetzt schon 10 Threads zum Thema SAFE_MODE in PHP gelesen. Aber keiner dieser Beiträge gibt eine richtige und verständliche Handlunsanweisung.

Fakt: Bilder können nicht hochgeladen und Verzeichnisse nicht erstellt werden.

Wie aus allen Beiträgen hervorgeht ist nicht der chmod entscheidend, sondern der Besitzer (Owner).

Und genau hier sitzt das Problem. Wer oder was ist der Owner? WO und WIE stelle ich den Owner in welchen Dateien ein? Hat das überhaupt was mit der dem CHMOD zu tun?

Bitte beschreibt doch mal ganz genau, was zu tun ist. Dann ist die Kiste auch aus der Welt.

Vielen Dank

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 3. Jul 2003, 10:39

In der Unix-Welt gibt es zu jeder Datei einen Besitzer und die Rechte für diese Datei. Mit chmod hat das nichts zu tun, sondern mit chown. Ein Beispiel für ein übliches Directory Listing unter Linux:

Code: Alles auswählen

drwxr-xr-x   10 alek202  users         600 Jul  2 11:37 .
drwxr-xr-x    5 wwwrun   wwwrun        120 Jun 23 12:59 ..
drwxr-xr-x    2 alek202  users         112 Jun 26 15:53 css
drwxr-xr-x    5 alek202  users         120 Jun 26 15:53 upload
Obiges Beispiel zeigt folgendes:

Der Besitzer für das aktuelle Verzeichnis (.) und die Verzeichnisse css sowie upload ist der Benutzer alek202 in der Gruppe users. Das "drwxr-xr-x" gibt die Rechte für diese Datei an. Mit chmod beeinflusst man die Rechte, mit chown den Besitzer sowie die Gruppe.

Folgende Annahme: Ein Script mit dem Benutzer "alek202" versucht auf eine Datei, die dem Benutzer "klaus303" gehört, zuzugreifen. Dies wird jedoch durch den SAFE_MODE verhindert, sodaß "alek202" trotz voller Zugriffsrechte auf dem Dateisystem nicht auf die Datei von "klaus303" zugreifen darf. Genau das passiert bei einem Upload: Die Datei wird hochgeladen, und technisch sieht es so aus, daß PHP die Datei in ein temporäres Verzeichnis legt. Genau DAS passiert aber mit den Rechten des Webservers: Die Datei, die hochgeladen wurde und jetzt in einem temporären Verzeichnis liegt, gehört z.b. "wwwrun" (Der Benutzer, unter dem der Webserver läuft). Das Script, welches die Datei aber bearbeiten muß, gehört "alek202" - und das geht durch den SAFE_MODE in die Hose. Laut PHP-Manual sollte die Funktion "move_uploaded_file" zwar die UID-Checks übergehen, in der Praxis geht das aber leider doch nicht.

Was ist also jetzt zu tun?
Die einfachste Möglichkeit ist sicherlich, den SAFE_MODE abzuschalten. Wer dies nicht möchte oder kann, muß entweder Contenido komplett als Benutzer "wwwrun" (so heißt der Benutzer des Webservers meistens) laufen lassen (z.b. chown -R wwwrun contenido-4.3.1b) oder in der Datei php.ini die Direktive "safe_mode_gid" auf "on" zu setzen. "safe_mode_gid" ist dann nicht mehr ganz so streng, und auf obiges Beispiel angewandt würde das bedeuten: Wenn "alek202" und "klaus303" zu derselben Gruppe (z.b. "users") gehören würden, dürfte "alek202" auf die Dateien von "klaus303" zugreifen.[/u]

Emanuele

Beitrag von Emanuele » Do 3. Jul 2003, 10:46

Timo, ich liebe Dich und werde das direkt heute Abend ausprobieren. Schön, dass endlich mal der Begriff CHOWN gefallen ist.

SehrGestresst

Beitrag von SehrGestresst » Do 3. Jul 2003, 19:56

Langsam bin ich mit meinem Latain am Ende. Habe mich schon durch andere Foren gewuselt, damit ich dieses f*** Prob in den Griff bekomme.

Liebe Leute, ich connecte mit meiner Windows-Kiste mit WS_FTP PRO auf den Server eine Pups-normalen Providers (per FTP). Erstens hat man überhaupt keinen Zugriff auf die php.ini, also kann ich SAFE_MODE auch nicht "off" schalten. Und zweitens gibts in WS_FTP keine Möglichkeit die CHOWN-Einstellungen zu ändern. Zumindest habe ich sie nicht gefunden.

- Welches Windows-Tool gestattet mir denn, den Owner zu ändern?
- Wie lässt sich das auf ALLE Dateien anwenden?
- Wenn man mit FTP connected ist man doch schon irgendein anderer Owner und kann dann doch gar keine Dateien anderer Owner bearbeiten?

Die permissioncheck.php zeigt gar keinen Fehler im Ordner CMS (inkluse Unterordern auf). Bilder und Verzeichnisse kann ich trotzdem nicht erstellen.

Im Contenindo-Ordner wurden unterschiedliche Owner gefunden:

-rw-r--r-- 1 ftp.domainname.com.001 ftp.domainname.com.001 50 Jun 30 16:15 index.php

-rw-r--r-- 1 wwwrun nogroup 10 Jul 3 14:58 move_articles.php.job
muß entweder Contenido komplett als Benutzer "wwwrun" (so heißt der Benutzer des Webservers meistens) laufen lassen (z.b. chown -R wwwrun contenido-4.3.1b)
Diesen ChOWN Befehl mal bitte auf das Beispiel darüber anwenden.

Jetzt mal Butter bei de Fische. Ich wünsche ne Anleitung genau für diesen Sachverhalt für den DAU (Dümmsten anzunehmenden User). WAS muss WO genau WOMIT gemacht werden???

Normalerweise bin ich nicht so schwer von Begriff. Aber hier versage ich total. Und ich denke damit stehe ich nicht alleine, wenn man die Anzahl der Threads zu dem Thema liest. Bitte helft. Danke!

Gruß
Herr fast am durchdrehen

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec » Do 3. Jul 2003, 21:46

um dieses Problem zu lösen brauchst du zugang auf deinen webspace mittels eines "ssh-clients" wie z.b. SecureCRT von VanDyke (www.vandyke.com).

befrage deinen ISP ob du überhaupt mittels ssh auf den webspace darfst, denn wenn nicht, lohnt die arbeit für download und installation nicht.

das problem kann man mittels zusammenführung von linux-distribution und php jedoch auch innerhalb eines cms lösen. aufgrund des verbotes der werbung und dass meine postings eh meist als "scheiß" etc. betituliert werden, werde ich in diesem forum die lösung jedoch nicht posten.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

suupamuh
Beiträge: 23
Registriert: Mi 2. Jul 2003, 14:38
Kontaktdaten:

Beitrag von suupamuh » Fr 4. Jul 2003, 08:12

SehrGestresst hat geschrieben:
WAS muss WO genau WOMIT gemacht werden???


Gruß
Herr fast am durchdrehen

Hallo Herr fast am durchdrehen,

Zu der Frage:

Nimm ne Banane, schäle sie, und ess sie. Ändert zwar nix am Problem mit chown, beruhigt aber ungemein.

Also ich hab das selbe Problem, das ich den besitzer nicht ändern kann. gestern hab ich mir mal ein Ftp PRog namens Smart ftp runtergeladen, damit kann man auch die Besitzerrechte ändern.

Ich kann meine Besitzerrechte zwar nicht ändern, ich hab aber ein wenig rumprobiert und folgende einstellungen führten zu einer Notlösung.
Schreibrechte 773 und unten sind zwei Checkbuttons namens uid und GID. Diese hab ich angeklickt .

Die Folge. Der Upload funktioniert bei mir nun, ich kann zwar nur ins Uploadverzeichniss uppen und keine neuen Ordner anlegen, ausserdem kommen immer noch ein paar fehlermeldungen, aber uploaden kann ich jetzt, wenn gleich es im moment nicht Perfekt ist.

Nur ein Versuch den du mal probieren kannst, aber kein Patentrezept. leider. :roll:

Gast

Beitrag von Gast » Fr 4. Jul 2003, 13:35

Hi,

dass kann doch nicht der Weisheit letzter Schluss sein. Soviele Leute arbeiten doch unter Windows mit nem Standard-Hosting-Paket ohne besondere Zugriffsrechte. Die CHOWN-Probleme sitzen ja auch in anderen Dateien, nicht nur im Upload-Ordner.

@ADMINS: Könnt Ihr dazu was sagen? Ist eine durchgängie CHOWN-Formatierung nicht mittels eines Scripts möglich? Mit zwei Input-Feldern für Besitzer und Gruppe?

Was gibts für Möglichkeiten um die Sache in den Griff zu bekommen?

CHOWN

Beitrag von CHOWN » Fr 4. Jul 2003, 19:48

Hi suupamuh,

bei mir hat das leider nicht funktioniert.
Wenn ich daraufhin ins Backend unter upload gehe, gibts nur Fehlermeldungen.

Gibts denn da echt keinen Weg für normal-Verbraucher?

Gast

Beitrag von Gast » Mo 7. Jul 2003, 11:12

Schönes Fehlersuche-Script :o

Fehler: Der Besitzer "wwwrun" der Datei /home/www/htdocs/meine.de/contenido/cronjobs/move_old_stats.php.job ist unterschiedlich zu dem Besitzer ("ftp.meine.de.001") des aktuellen Scriptes. Stellen Sie sicher, daß die Datei den gleichen Besitzer (owner) erhält wie das Script. Ein Windows-Standard-Paket-User.

- Wenn es keine Lösung dafür gibt, kann das bitte mal jemand hier hin schreiben.
- Wenn Ihr an einer Lösung arbeitet, kann das mal jemand hier hin schreiben.
- Wenn Ihr keine Lust mehr habt was zu schreiben, kann das mal jemand hier hin schreiben.

htw
Beiträge: 490
Registriert: Sa 5. Okt 2002, 03:09
Wohnort: Hessen
Kontaktdaten:

Lösung, Lust

Beitrag von htw » Mo 7. Jul 2003, 11:45

Hallo,

nun mit der Lust ist es so eine Sache :cry: , aber

a) sind schon recht viele Dinge zu diesem Thema in dem Forum geschrieben worden
b) Zum Teil gibt es Lösungen und zum Teil auch nicht.

Wenn man den Besitzer (Owner) nicht ändern kann, weil es Provider nicht zulässt, man nicht per ssh auf den Webspace draukommt, dann gibt es aus meiner Sicht keine Lösung. idea-tec sagte, dass es eine gibt (der er nicht posten möchte), aber mir fällt partout nichts ein. Wenn jemand eine Lösung hat, immer her damit.

Ansonsten sollte der Provider dafür sorgen, dass die beiden User in einer Gruppe sind und das entsprechende Recht haben.

Den Provider fragen hilft manchmal weiter. Weitere Fragen gerne auch per PM.

Gruß
Harald

Gesperrt