[PHP] mkdir(): Ordner wird mit falschen Rechten erstellt

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von greenhawk, 20.01.2010.

  1. #1 greenhawk, 20.01.2010
    Zuletzt bearbeitet: 20.01.2010
    greenhawk

    greenhawk Mitglied

    Dabei seit:
    06.09.2008
    Beiträge:
    47
    Zustimmungen:
    0
    Hallo,

    ich schreibe gerade an einer Datenbankapplikation (PHP, MySQL). Wenn dort neue Einträge in die DB gemacht werden (von PHP aus), muss immer ein Datenordner für den jeweiligen Eintrag angelegt werden.
    Dazu benutze ich momentan folgenden Code:
    Code:
    mkdir($pfad, 0777);
    chmod($pfad, 0777);
    Das mag erstmal komisch aussehen. Aber nur so haben auch alle Schreibrechte.
    Theoretisch müsste dazu ja aber
    Code:
    mkdir($pfad);
    völlig ausreichend sein.
    Wenn ich mir aber die Rechte des Datenorders, der so erstellt wird, ansehe, sieht das so aus:
    Code:
    drwxr-xr-x 2 www-data www-data
    Das heißt, dass ich den Ordner in der Shell nur als Root wieder löschen kann. Das ist etwas nervig. Und schreiben können muss ich erstmal auch da drin. Das heißt, ich brauche 0777 und nicht 0751 auf diesem Verzeichnis.
    Ich kann mir nicht vorstellen, wo da das Problem liegt, da ja auch die Erstellung des Ordners sonst einwandfrei funktioniert.

    Nun gut, dann noch eine Frage, die damit zusammenhängt:
    Welche Rechtekonstellation ist denn sinnvoll, wenn ich diese Datenbankapplikation dann mal ins Netz stelle? Schreibrechte für alle zu vergeben, halte ich prinzipell für ungut. Evtl. kann man dann aber auch auf 0755 umsteigen, wenn man alle Datenoperationen (inkl. Arbeiten in den Datenordnern) über die PHP-Schnittstelle (also als User www-data) laufen lässt. Also, sicher kann man das. Scheint auch ganz sinnvoll zu sein, oder?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    wenn die umask 0022 ist wird das directory mit 755 erstellt (also drwxr-xr-x). wo siehst du 751? das wäre drwxr-x--x. das directory gehört dem user www-data, also kann der das directory auch löschen. Es sei denn du hast die Rechte eine Ebene höher verbogen. umask 0022 und mode 755 ist deshalb sinnvoll, weil der owner (www-data) Dateien in dem Verzeichnis erzeugen und löschen kann, aber sonst niemand. übrigens: er kann auch Dateien löschen, für die er keine Schreibberechtigung hat.
     
  4. #3 saeckereier, 27.01.2010
    Zuletzt bearbeitet: 27.01.2010
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Code:
    [ ~]$ mkdir dir
    [ ~]$ ls -ld dir
    drwxr-xr-x 2 xxx xxx 4096 Jan 27 19:35 dir
    
    Nö.
    Code:
    [ ~]$ mkdir dir
    [ ~]$ chmod  a= dir
    [ ~]$ ls -ld dir
    d--------- 2 xxx xxx 4096 Jan 27 19:37 dir
    [ ~]$ rmdir dir
    [ ~]$ ls -ld dir
    ls: cannot access dir: No such file or directory
    
    Nö. Ordner löschen kann jeder, der Rechte auf dem Ordner darüber hat. Dateien in dem Ordner kann bei dir www-data löschen.
    Eine Gruppe erstellen, die darauf Zugriff haben soll. Dann Schreibrechte für User und Gruppe.
    Wird in der Regel auch so gemacht, hängt aber vom Ziel ab. Zum Thema der Berechtigungen beim Erstellen schau dir einfach mal das Thema umask an. Wegen der Gruppe könnte das hier hilfreich sein: http://de.wikipedia.org/wiki/Setgid
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Der Vollständigkeit halber: Das stimmt so nicht. Das er löschen kann, hat nichts damit zu tun, ob ihm das Dingens gehört, sondern nur mit den Rechten des Ordners, in dem der Ordner enthalten ist. Es gibt da keinen Unterschied zwischen Dateien und Ordnern.
     
  5. yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    directories sind ja auch nur dateien, gelle.
     
  6. #5 saeckereier, 28.01.2010
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Nö. :-) (Das Wort konnte ich in diesem Thread echt gut gebrauchen. :-) ) Verzeichnisse und Dateien unterscheiden sich ja schon elementar dadurch, dass Verzeichnisse Dateien enthalten können und nicht umgekehrt.. Berechtigungsmässig sind sie insofern ähnlich, als dass die Rechte sich auf den Inhalt des Objektes und nicht das Objekt selbst beziehen. Aber ich denke, da bin ich eh Ironie aufgesessen, oder?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    nicht wirklich. Unix ist ein Datei-basiertes Betriebssystem, das sieht man schon an den device files. Linux ist da nicht ganz so konsequent, ich habe zumindest noch kein /dev/eth0 gesehen, wohl aber ein /dev/lan0 auf hpux. Ein Directory enthält auch keine Dateien, das Dateisystem (deshalb heißt es ja so) enthält die Dateien. Ein Directory enthält nur Verweise auf Einträge in der inode-Tabelle (falls das Dateisystem mit inodes arbeitet). Ansonsten hast du natürlich Recht mit den Zugriffsrechten. Viele Webserver Betreiber wissen darüber nicht Bescheid, und das ist gefährlicher als mancher Apache Bug.
    bye,
    yai.
     
  9. #7 saeckereier, 31.01.2010
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ich glaube das ist Ansichtssache, aber Dateien sind keine Verzeichnisse und Verzeichnisse sind keine Dateien.
     
Thema:

[PHP] mkdir(): Ordner wird mit falschen Rechten erstellt

Die Seite wird geladen...

[PHP] mkdir(): Ordner wird mit falschen Rechten erstellt - Ähnliche Themen

  1. [PHP] Autologin-Funktion

    [PHP] Autologin-Funktion: HI, habe mir eben mal eine Autologin Funktion überlegt. Ich weiß zwar, das solche Funktionen zum teil, gerade im Web, argwöhnisch beliebäugelt...
  2. [PHP] file_exists und scandir, mal gehts mal nicht

    [PHP] file_exists und scandir, mal gehts mal nicht: HI, Ich habe zZ ein ein Problem mit den oben gennanten Funktionen. Ich sehe gerade nicht durch, in welchen Verzeichnissen diese Funktionen alles...
  3. [PHP] Session-Authentifizierung zentralisieren

    [PHP] Session-Authentifizierung zentralisieren: Hi, ich prüfe auf jeder geschützten Seite ob der enutzer befugt ist diese zu sehen oder nicht mittels: <?php session_start(); $hostname...
  4. [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array

    [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array: Hi, ich habe mit checkboxen eine Liste erstellt, aus der verschiedene Gegenstände durch Haken setzen markiert werden können. Über einen...
  5. [PHP]Passwortschutz für Verzeichnisse

    [PHP]Passwortschutz für Verzeichnisse: Hi, ich hätte gerne auf meinem Webserver, dass auf der Startseite der Benutzername und das Passwort angegeben werden müssen und man sich so...