Schreibrechte und Co.

  • Irgendwie habe ich mich nie so recht mit dem Themenkomplex "Schreibrechte" anfreunden können.
    Das steht bei mir in einer Ecke neben RegExp und Steuern.

    Nehmen wir mal an, ich habe einen Ordner in der root mit Namen /test.
    Dem Ordner "test" gebe ich die Rechte x640. Also -rw-r--r--. Nur der Besitzer des Ordners kann Lesen und Schreiben. Nur die Gruppe darf lesen.
    Dann kann doch theoretisch kein Hacker ankommen und da zig Dateien reinlegen, oder? Er kann auch keine lesen oder gar ändern, oder?
    Warum muß ich dann überhaupt meine Dateien in solchen Ordnern mit gesonderten Rechten versehen? Die könnten doch alle generell auf x777 stehen. Es darf ja eh keiner, der nicht meiner Gruppe angehört, da was rumfrickeln.

    Sehe ich das zu einfach, bin ich doof, hab ich da was Grundlegendes nicht kapiert oder wat?

    Was mich zur nächsten Frage bringt: Wie schafft es ein pöser Kiddie, das er Gruppenrechte bekommt?
    Ich weiß nicht, wie oft ich mich geärgert habe, das ich nicht in meine eigenen Webspaces schreiben durfte, weil angeblich die Gruppenrechte fehlten.

    Wer zuerst "Datenschutz" sagt, hat verloren.

  • Das ist ein Punkt, bei dem ich auch immer wieder hänge... Siehe das Thema "fcgi + Apache + PHP" :)

    Vorab: "-rw-r--r--" ist aber nicht 640, sondern 644.

    Prinzipiell ist es so, dass Deine Annahme so nicht ganz richtig ist. Wenn ein Verzeichnis 644 hat und die Dateien darin 777, dann darf da dennoch jeder fast alles machen.

    Als Gruppe hätte er dann das Recht, das Verzeichnis einzulesen (Leserecht im Verzeichnis), aber eben auch nur das. Er kann also keine Dateirechte lesen, sondern die nur auflisten lassen. Er kann aber vorhandene Dateien ändern / bearbeiten / löschen / ausführen, denn diese haben ja das Recht 777 (alle Dateirechte). Also, lesen der Datei ja, ändern ja, löschen ja... Nur neue anlegen nein, da das Verzeichnis die Berechtigung nicht hat.

    Im Prinzip ist das ja auch nichts anderes als ein paar Ebenen weiter oben. Der Apache darf im public_html ja auch alles machen, obwohl weiter oben, also im vhost, www, var oder sonst wo keine Rechte für den Apache bestehen.

    Zitat

    Wie schafft es ein pöser Kiddie, das er Gruppenrechte bekommt?


    Er selbst "bekommt" keine, er holt sich welche bzw. gibt sich als jemand anders aus. Und das eben in dem Sinne, dass er einen Dienst verwendet / angreift, der die entsprechenden Rechte besitzt. Z.B. das Problem damals mit Proftpd. Wenn man den Dienst "übernommen" hatte, dann hatte man auch dessen Rechte. Man war ja quasi als "proftpd" unterwegs. Und der durfte eben überall agieren, wo ein FTP auch zugreifen kann. Oder Beispiel Plesk. Auch dieses hat weitreichende Rechte um Systemdateien, Hosts und noch einiges weitere zu lesen oder gar zu ändern. Ist ein Hacker nun per "plesk" eben als "plesk" unterwegs, dann kann der einiges anstellen. Selbiges natürlich auch beim "www-run-Problem". Greift einer per PHP oder auch direkt den Apache an und greift über den dann auf die Daten zu, dann ist der Angreifer im System als "www-run" unterwegs. Und nun, wo darf "www-run" alles zugreifen, ändern und löschen? Auch hier sind es viele Stellen.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Zitat von Synonym;32179

    Prinzipiell ist es so, dass Deine Annahme so nicht ganz richtig ist. Wenn ein Verzeichnis 644 hat und die Dateien darin 777, dann darf da dennoch jeder fast alles machen.


    Ja und eben das ist der Punkt, wo ich immer hänge:
    Wenn der Ordner 644 oder weniger hat... wieso darf dann jemand die Dateien darin - egal welche Rechte die haben - anfassen? Warum?

    Wenn ich nen Aktenschrank habe und dranschreibe: Da darf ausser mir keiner ran, keiner darf lesen, schreiben, ändern. Nur ich darf als Besitzer darf das.
    Und dann schreibe ich auf die Akten im Aktenschrank: Die darf jeder lesen, schreiben, ändern, löschen, der in den Aktenschrank reinkommt.

    Meinem Verständnis nach könnte ich doch alle Dateien auf einem Webspace mit einem freundlichen x777 versehen und nur die Ordner mit den entsprechenden Rechten versehen. Nee? Nee.

    >>Vorab: "-rw-r--r--" ist aber nicht 640, sondern 644.<<
    Jaja. Aber tipp Du das mal abends, wenn Du besoffen bist^^

    Wer zuerst "Datenschutz" sagt, hat verloren.

  • Zitat

    Wenn der Ordner 644 oder weniger hat... wieso darf dann jemand die Dateien darin - egal welche Rechte die haben - anfassen? Warum?


    Also mit "anfassen" meine ich nun einfach mal "lesen". Ganz einfach, weil Du jedem (Inhaber, Gruppe, Andere) mit 644 Leserechte gegeben hast. Bezogen auf das Verzeichnis nun! Also der darf das Verzeichnis und dessen Inhalt auflisten. Ob er dann die Datei auch noch ansehen darf hängt von den Dateirechten ab.

    Dein Beispiel mit dem Aktenschrank ist gut. Wollte vorhin eines mit einer Firma und Zugangsberechtigungen machen, ging aber nicht.

    Also, der Schrank ist das Verzeichnis, die Ordner sind die Dateien....

    Am Schrank schreibst Du hin (Ich darf mit dem Schrank alles machen. Die Gruppe darf den aufmachen und reinschauen, alle anderen lassen die Finger weg) - das wäre Verzeichnisrechte 740.

    So, nun gehen wir wie vorher von der Gruppe aus.

    Die Gruppe darf den Schrank also aufmachen und reinsehen.... Die Gruppe sieht also die Aktenordner. Nun kommt es auf die Ordner an, was die damit machen dürften.

    Auf dem einen Ordner klebt nun der Zettel 777. Also darf die Gruppe mit dem Ordner machen was sie will. Egal was.
    Auf einem Anderen steht 700. Diesen Ordner sieht die Gruppe zwar, da Verzeichnisrecht lesen vorhanden, sie darf in aber nicht aufmachen und sonst auch nichts mit machen.

    Versucht die Gruppe nun einen neuen Ordner in den Schrank zu stellen, so ist das nicht möglich. Der Schrank sagt dann "Eh, darfst Du nicht, Du hast nur das Recht 644". Du darfst mich aufmachen, meinen Inhalt auflisten, aber nichts neues reinstellen. Für dich zählt nur, was schon da ist. Das darfst Du auch rausnehmen und mitnehmen, aber nichts neues reinstellen.

    Zitat

    Meinem Verständnis nach könnte ich doch alle Dateien auf einem Webspace mit einem freundlichen x777 versehen und nur die Ordner mit den entsprechenden Rechten versehen. Nee? Nee.


    Nein, siehe oben.
    Verzeichnisrechte und Dateirechte sind unterschiedlich.

    Verzeichnis "lesen" heißt, Dateien auflisten
    Datei "lesen" heißt, Dateien öffnen und den Inhalt lesen.


    Im Prinzip wie bei der Bahn. Du kauft ein 2.-Klasse Ticket und hast somit das Recht, den Zug zu besteigen. Du siehst eventuell auch die 1. Klasse, aber betreten oder nutzen darfst Du sie nicht.

    Oder mal aus meiner Praxis:
    Ich habe das Verzeichnis /var/www/vhosts/domain.de/ und darin die Unterordner public_html, conf, logs, sessions etc.

    Auf das Verzeichnis domain.de (644) darf ich als Gruppe (sftp-User bzw. Gruppe) lesend zugreifen. Ich kann also die enthaltenen Unterordner anzeigen. Ich kann also auch in das Verzeichnis conf wechseln und sehen, dass da eine vhost.conf drinnen liegt. Diese vhost.conf kann ich aber nicht öffnen, da diese nur das Recht 600 hat.

    Anders im Verzeichnis public_html. Dort kann ich auch auflisten, aber die Dateien auch ändern / löschen, da diese das entsprechende Gruppenrecht haben.

    Auf das übergeordnete Verzeichnis "vhosts" kann ich per FTP aber nicht zugreifen, da ich dazu keine Rechte besitze.

    Man merkt hier also, "vhosts" ist gesperrt. "vhosts/domain.de" ist aber lesend möglich. Bedeutet, selbst wenn ein Verzeichnis eine Leserechte hat, kann man auf das enthaltene Zeug zugreifen, wenn man denn weiß wie es heißt und wo es genau ist. Ist dann halt ein Blindflug, da man das Verzeichnis durch die fehlenden Verzeichnisrechte nicht auflisten kann, aber auf den Inhalt kann man zugreifen, denn da gelten dann die jeweiligen Rechte des Inhalts.

    Oder noch ein Beispiel:
    /var/www/vhosts/http://domain.de/public_html/ (644)
    /var/www/vhosts/http://domain.de/public_html/index.php (755)
    /var/www/vhosts/http://domain.de/public_html/spammer.log (775)

    PHP (in der Gruppe) darf also das Verzeichnis public_html auflisten. PHP darf die Datei index.php öffnen, ansehen, ausführen, aber nicht verändern oder löschen. Mit der Datei spammer.log darf PHP alles machen.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(