„Chmod“ setzen, aber richtig…

S

sevY

Hallo zusammen,

ich habe ein Projekt nun fast fertig und bin dabei, ein kleines Script zu schreiben, um Chmods aller hochgeladenen Dateien/Ordner zu bestimmen, um nicht jede einzeln anklicken zu müssen.

Standardmäßig habe ich immer alle auf 777 gesetzt, das war am einfachsten.

Aber was ist denn für was korrekt?

Folgende Dateien sind auf dem Server:

- PHP Dateien, die beim Aufrufen von SWF Daten aus einer MYSQL DB lesen und weitergeben, aber nicht angesehen werden

- SWF Dateien, die beim Aufrufen PHP Dateien aufrufen und Daten mit SendAndLoad(); austauschen

- PHP-Dateien die die SWFs einfach nur mittels Object-Tag beinhalten und eigentlich auch reine HTML Dateien sein könnten.

- PHP Dateien, die gesehen werden und Aktionen ausführen

- JS Dateien, die in den PHP-Dateien included werden

- Dann gibt es noch ein Admininterface, dort sind Ordner, in die Dateien geschrieben werden, die später herunterladbar sind bzw. Bilddateien, die in Flash mittels loadMovie(); eingebunden werden

- außerdem sind dort PHP-Dateien die die entsprechenden Adminaktionen enthalten.

- CSS Dateien zum formatieren und feste Bilddateien, die nicht geändert werden, sind dort auch.


Es ist mir klar, was lesen/schreiben/ausführen dabei bedeutet. Nur ist mir die Zuweisung der Owner/Gruppen/World nicht ganz klar.


Vielleicht alles sehr einfach… aber sicher ist sicher :)

Liebe Grüße

Coffee
 
Ähm, *räusper* was ist Chmod? *duck*
 
AFAIK brauchen die alle nur leserechte für den User unter dem der Webserver läuft. Also 4. z.b. 644. Die Dinger heißen übrigens Zufriffsrechte und nicht Chmods.

@SchaSche

'man chmod' im Terminal
 
@ Wuddel

Wofür dann execute?

Und was wenn ich über das www das Admintool aufrufe und eine Datei in einen Ordner laden möchte? Der Ordner nur 644?

gruß Coffee
 
was noch wichtig ist: wem gehören die dateien, wer führt sie aus und was für gruppen sind definiert. ohne diese informationen ist es nicht ganz einfach deine Frage zu beantworten.
@wuddel: warum 644? wenn die dateiem dem ausführenden User gehören sieht das eher nach 700 aus... und wenn der ausführende user (z.b. apache) und der user dem die Dateien gehören in der gleichen Gruppe sind wäre es eher 750, oder?

gruss
maze
 
Na hab ich doch eben oben geschrieben…

Irgendein User aus dem www ruft die index.php auf. Von dort geht es dann zu den anderen PHP-Dateien die die swf enthalten. Die swf fragen PHP-Dateien ab und tauschen Variablen aus.

Wenn man die Adresse des Adminsystems kennt, kann man von dort dann auch sämtliche Inhalte administrieren. D.h. zb. PHP Dateien ausführen, die dann Dateien in einen Ordner laden.


Wann gehört man denn welcher der 3 Gruppen an? Also wie wird unterschieden? Dann könnte ich mir das ja selbst erklären…


Liebe Grüße

Coffee
 
Original geschrieben von 409coffeemaker
Aber was ist denn für was korrekt?

Korrekt ist relativ. Sicherheit nicht.
Im Sinne der Sicherheit des Systems bietet sich als Faustregel an alles grundsätzlich so restriktiv wie möglich mit Rechten auszustatten.
Ich würde also bei allen Dateien ausprobieren wie stark die Rechte einschränkbar sind, ohne Funktionalität aufzugeben.
Bei Ordnern bietet sich als Standardmaske z.B. 755 an.
D.h. der Besitzer darf alles (logisch), Gruppe und Welt dürfen nur ausführen und lesen. Warum?
Ausführen ist notwendig um überhaupt den Inhalt des Ordners zu sehen zu bekommen, beinhaltet also auch die Möglichkeit ihn öffnen zu können.
Leserechte dürften klar sein. Ohne Leserecht bekommst Du keine Datei zu Gesicht.
Schreibrechte sind u.a. deswegen verboten weil z.B. so verhindert wird dass Gruppe und/oder Welt die Möglichkeit haben den Ordner zu löschen.

Stell Dir einfach bei jeder Datei die Frage wer zwingend schreibenden/ausführenden Zugriff darauf haben muss.
Config-Dateien beispielsweise sollten dem Prozess gehören (chown/chgrp) der schreibend darauf zugreifen muss.
Andere müssen evtl. nur Parameter aus der Datei auslesen, da reicht also Lesezugriff.

Aus diesen Überlegungen heraus kannst Du für jede Datei/Ordner den sichersten Status ableiten.

Merkhilfe:
Wem gehören Dateien? Wer soll was damit machen können?

Grüsse,
Flo
 
Ok, Flo, das hilft schon mal.

Bei 755 auf Ordnern fungiert also die schreibende PHP-Datei quasi als Owner.
Also ist alles das, was mittels Datei bzw Scripten und nicht direkt vom User aus geschieht, bei Schreibvorgängen auf 7XX zu setzen?

Wie sieht das denn bei CSS und JS Dateien aus. Die bekommt der User ja weder direkt zu Gesicht noch führt er sie direkt aus…

PHP Dateien hingegen muss der User doch ausführen können, oder?

Mir ist immer noch nicht so richtig klar … who is who…
 
who is who... gute Frage...
also dein webserver läuft z.B. als User "apache". somit wird das index.php, welches vom Internet aufgerufen wird, unter dem user apache laufen. das beste ist also du setzt den owner von index.php auf apache. somit brauchst du für index.php die rechte 700. verstanden? da die datei dem user gehört welcher sie auch aufruft, muss nur der owner zugriff auf die datei haben.

ich hoffe das ist einigermasen verständlich...
 
Ja ich weiß ich bin schwierig…

Tut mir leid… bei sowas tu ich mich manchmal schwer und wunder mich hinter nachdem ich es verstanden habe über meine eigene Blödheit.


Ich erstelle die Ordner, Dateien, etc also sind das alle MEINE :D ;) Nein, kleiner Scherz.


Wo stell ich irgendwelche User ein???

Machen wir es mal ganz einfach mit einem Beispiel für Doofe wie mich:

Auf meinem Rechner liegt lokal:

1 HTML Datei
1 PHP Datei
1 SWF Datei
1 CSS Datei
1 JS Datei
1 Ordner mit einem Bild, da nie ausgetauscht wird
1 Ordner mit PDFs, in die welche hinzukommen bzw wo diese auch überschrieben werden können.

Ich lade nun alle Dateien auf den Apache Webserver.

Nun gehören sie doch dem Webserver, der ist Owner. Korrekt?
Also darf der schon mal alles. Owner wäre dann erledigt.



Ok.

Nun ruft Flo über den direkten Pfad folgende Dateien auf:

1 HTML Datei - Er als User hat Leserechte um diese Datei zu sehen.

1 PHP Datei - Er hat als User nur Leserechte um diese Datei zu sehen und auszuführen, denn:
Mit dieser Datei kann man über ein Formularfeld eine PDF Datei in den Ordner auf dem Server laden.
Schreibrechte bekommt er keine, denn der Webserver schreibt ja, wie ihm in der PHP Datei gesagt, in den Ordner.

Korrekt?

Dieser Ordner, der nur die PDF beinhaltet, aber von niemanden direkt gesehen werden soll hat als Rechte für User nur Leserechte, damit diese Mittles href sich die PDf herunterladen können?

Die PDF selbst muß auch Leserechte haben.

Wenn ich dem Ordner nun Schreibrechte für World erteile, dann kann ein User diesen löschen??? Wie denn? Mittels FTP Client und anonymous login?

Nun die CSS Datei.

Die Parameter dieser Datei werden in die PHP/HTML Dateien eingelesen.
User bekommt also keine Rechte dafür, nur der Server Leserechte.

Korrekt?

JS Dateien genauso.


Sorry nochmal, aber ich frage lieber nach bevor ich mich bei der Abgabe des Projektes blamiere, weil ich die Flags falsch gesetzt habe.

Liebe Grüße

Coffee
 
Original geschrieben von 409coffeemaker
Bei 755 auf Ordnern fungiert also die schreibende PHP-Datei quasi als Owner.

Nein, Owner bist (i.d.R.) Du.

PHP Dateien hingegen muss der User doch ausführen können, oder?

Bin jetzt nicht so der PHP-Chef (eigentlich überhaupt nicht), aber meinem Verständnis nach muss der User sie nicht ausführen können. Sie stellen sich für Leute die die Seite im Browser aufrufen wie statisches HTML dar, weil derjenige der die enthaltenen PHP-Befehle ausführen können muss ja die PHP-Engine auf dem Server ist, und nicht der User.
Sonst würde das PHP ja vom Browser verarbeitet werden.

Wahrscheinlich wird gerade alles immer unübersichtlicher...

Grüsse,
Flo
 
Ok, schon mal gar nicht schlecht. Vergiss aber den User welcher am Browser sitzt und irgendwelche HTML oder PHP dateien aufruft. Alle Dateien (HTML, PHP) werden IMMER vom Webserver aufgerufen, also: apache.

wenn du einer datei schreibrechte für others (world) erteilst, heisst das nicht,dass der User am Browser über ftp, oder irgendwas die datei löschen kann! die Zugriffsrechte gelten nur für den Server und seine User.

User einstellen... Wie kriegst du die dateien auf den Server? ist es dein eigener Server? oder ist der platz einfach gemietet bei einem Webhoster?
 
Ok, schon mal gar nicht schlecht. Vergiss aber den User welcher am Browser sitzt und irgendwelche HTML oder PHP dateien aufruft. Alle Dateien (HTML, PHP) werden IMMER vom Webserver aufgerufen, also: apache.

Ok. Das ist dann schon mal klar.

wenn du einer datei schreibrechte für others (world) erteilst, heisst das nicht,dass der User am Browser über ftp, oder irgendwas die datei löschen kann! die Zugriffsrechte gelten nur für den Server und seine User.

Ok, interessant :)

User einstellen... Wie kriegst du die dateien auf den Server? ist es dein eigener Server? oder ist der platz einfach gemietet bei einem Webhoster?
 

Wir haben 2 eigene Server, die nur gehosted werden. Allerdings administiere ich diese nicht.


Hauptsächlich interessieren mich die Zugriffsrechte für World. WebserverUser und Gruppen dürfen dann ruhig alles. Also wäre das dann 77X.

Mir geht es nun darum:

Ein User sitzt am Webbrowser und ruft die Seite auf. Er ist also hier WORLD.

Welche Dateien müsste er Lesen können, welche ausführen und für welche benötigt er Schreibrechte.

Wenn ihr mir diese Frage mittels des o.g. Beispiels einfach mal beantworten könntet, wäre mir dann einiges schlüssig denke ich.
 
Original geschrieben von 409coffeemaker
Wo stell ich irgendwelche User ein???


Kommt drauf an "wo" das später liegen soll, und was Du an dem Rechner machen darfst. Prinzipiell brauchst Du keine User einzurichten, Du musst nur Rechte vergeben.

Machen wir es mal ganz einfach mit einem Beispiel für Doofe wie mich:

Auf meinem Rechner liegt lokal:

1 HTML Datei
1 PHP Datei
1 SWF Datei
1 CSS Datei
1 JS Datei
1 Ordner mit einem Bild, da nie ausgetauscht wird
1 Ordner mit PDFs, in die welche hinzukommen bzw wo diese auch überschrieben werden können.

Ich lade nun alle Dateien auf den Apache Webserver.

Nun gehören sie doch dem Webserver, der ist Owner.
Nein, Owner bist Du. Du hast die Dateien in ein Verzeichnis gelegt zu dem Du uneingeschränkten Zugriff hast, Du hast die Dateien ja dort "hingeschrieben" also gehören sie Dir.

1 HTML Datei - Er als User hat Leserechte um diese Datei zu sehen.

Wenn ich als Besucher Deiner Site die Datei im Browser aufrufe, bin ich auf dem Rechner von dem mein Browser die Datei anfordert (der Server) kein User, sondern "Rest der Welt".

Ganz wichtig: Leute die die Site im Browser aufrufen sind keine User, sondern "Rest der Welt"

Wenn ich dem Ordner nun Schreibrechte für World erteile, dann kann ein User diesen löschen???

Theoretisch ja, aber er muss schon irgendwie Zugang zum Ordner bekommen, was er i.d.R. ja nicht hat.

Nun die CSS Datei.

Die stellt sich für Besucher genauso dar wie statisches HTML, es reicht also für "Rest der Welt" das Recht 4 (read).

Sorry nochmal, aber ich frage lieber nach bevor ich mich bei der Abgabe des Projektes blamiere, weil ich die Flags falsch gesetzt habe.

Wer, wie, was, wieso, weshalb, warum, wer nicht fragt bleibt dumm.
Da gibt es nichts zu entschuldigen.

Grüsse,
Flo
 
Ein User sitzt am Webbrowser und ruft die Seite auf. Er ist also hier WORLD.
Nein! ihn gibt es nicht auf dem Server. Sein Request wird vom user apache verarbeitet. Somit kanns du eigentlich sagen (vereinfacht): der user am browser ist apache.

Wenn ihr mir diese Frage mittels des o.g. Beispiels einfach mal beantworten könntet, wäre mir dann einiges schlüssig denke ich.
Das ist nicht so einfach... sag mir mal wem die dateien gehören?
falls die dateien apache gehören, kannst du die gruppen und others rechte vergessen, sprich: dateien welche nur gelesen werden müssen: 400, geschrieben: 600 ausgeführt: 500.

besser? :)
(ist auch sau-kompliziert so zu erklären...)

Grüsse
maze
 
Die stellt sich für Besucher genauso dar wie statisches HTML, es reicht also für "Rest der Welt" das Recht 4 (read).
 


Also 774 als Standardmaske für alle Dateien müsste hinhauen, der Besucher meiner Seite die Dateien nur aufruft, der Apache dann ausführt, schreibt, liest?


Die Entschuldigung nur, da ich das Gefühl habe manchmal durch das eindringlichen Fragen zu nerven ;). In der Schule gab das immer gute Noten, aber meine Mitschüler waren manchmal verständlicherweise etwas genervt, wenn ich bis ins kleinste Detail ALLES wissen wollte.


Liebe Grüße

Coffee
 
Original geschrieben von lengsel


Wenn ich als Besucher Deiner Site die Datei im Browser aufrufe, bin ich auf dem Rechner von dem mein Browser die Datei anfordert (der Server) kein User, sondern "Rest der Welt".

Ganz wichtig: Leute die die Site im Browser aufrufen sind keine User, sondern "Rest der Welt"
 

HALT: das stimmt doch gar nicht so?!

Der Besucher der eine Seite aufruft gibt nur den befehl an apache ihm diese entsprechende Seite darzustellen. Somit wird die seite auf dem server als apache ausgeführt! Wenn diese datei zudem noch apache gehört, gilt es die user-rechte und nicht die others-rechte zu manipulieren!
 
*PAAANIK*

Das hatte ich befürchtet :D

Leute verwirrt mich nicht :(


liebe Grüße

Coffee
 
Original geschrieben von 409coffeemaker
Hauptsächlich interessieren mich die Zugriffsrechte für World. WebserverUser und Gruppen dürfen dann ruhig alles. Also wäre das dann 77X.


Soviele 7er halte ich aus grundsätzlichen Sicherheitsgedanken heraus für riskant. Denk dran Rechte so restriktiv wie möglich zu vergeben. Ich kann mir nicht vorstellen dass "Gruppe" überall zwingend 7er Rechte haben muss. Und selbst für Owner reicht i.d.R. 6 weil die meisten Dateien ja nicht ausführbar sind, mithin also das 1er Recht nicht brauchen.
Statische Seiten (html,css) haben bei mir grundsätzlich 644.

Mir geht es nun darum:

Ein User sitzt am Webbrowser und ruft die Seite auf. Er ist also hier WORLD.

Richtig. Aber als World kann er ja nicht User sein, denn die Rechte beziehen sich ja auf den Serverrechner, und da ist der "Seite im Browseraufrufer" ja kein User, sondern nur Gast, und mithin stark in den Rechten eingeschränkt.
Soll froh sein dass er sich was ansehen (4) darf.

Welche Dateien müsste er Lesen können, welche ausführen und für welche benötigt er Schreibrechte.

Wenn ihr mir diese Frage mittels des o.g. Beispiels einfach mal beantworten könntet, wäre mir dann einiges schlüssig denke ich.
 

Also ich kann es nicht, weil mir das Zusammenspiel der Dateien nicht ganz klar ist, vielleicht könnte ich mir das mit Organigramm besser vorstellen.

Am besten Du stellst Dir das einfach zwischenmenschlich vor.
Wer "besitzt" was, und erlaubt anderen, z.B. seiner Familie (Gruppe) oder dem Rest der Welt was damit zu tun.

Beispiel:
DU besitzt ein Powerbook. Es steht im Wohnzimmer.
DU darfst es sehen (4/r), grün anmalen (2/w) und einschalten (1/x)
Deine Familie (Gruppe) darf es sehen. Falls nicht musst Du es in Deinem Zimmer (Ordner) aufbewahren, weil Du nicht das Recht hast im Wohnzimmer irgendwas zu bestimmen, in Deinem Zimmer aber schon. Du möchtest auch nicht dass Deine Familie das Powerbook anmalt. Aber Einschalten dürfen sie es schon.
Der Rest der Welt darf Dein Powerbook nur anschauen.

Vielleicht hilft das ja ein bisschen, also mir hilft die Eselsbrücke mit den zwischenmenschlichen Beziehungen. ich kann mir dann leichter vorstellen wer was darf und wer nicht. Und prinzipiell darf erst mal keiner was.

Du hast die Seiten programmiert, also musst Du wissen welcher Prozess auf dem Server was damit machen darf. Und prinzipiell darf erst mal keiner was.
Nach und nach Rechte lockern (langsam) bis es funktioniert, und dann keine weiteren Zugeständnisse.

Grüsse,
Flo
 
Ok, dann wohl doch die Learning by Doing Methode…


Aber eine letzte Frage:
Und selbst für Owner reicht i.d.R. 6 weil die meisten Dateien ja nicht ausführbar sind, mithin also das 1er Recht nicht brauchen.
Zählt das Parsen von PHP Dateien und die zb dateikopierende Funktion um „ausführen“, d.h. muss die PHP Datei ausführbar sein? Ja oder?

Statische Seiten (html,css) haben bei mir grundsätzlich 644.
Ok, das ist doch mal ein Wort. Dann setze ich die html,css,js Dateien schon mal direkt auf 644.

Dann bleiben noch die PHP Dateien, die setze ich dann auf 744.

Die Ordner in die geschrieben werden und die Dateien, die überschrieben werden dürfen auch 744.




liebe Grüße

Coffee
 
Zurück
Oben Unten