Durch einen kleinen Fehler hatte ich mir alle Rechte im Verzeichnis /var/www/virtual/username überschrieben.
Wie stellt man wieder alles richtig ein?
cd /var/www/virtual/$USER # Rechte für Ordner (type = directory) (rwxr-xr-x) find * -type d -print0 | xargs -0 chmod 755 # Rechte für Dateien (type = file) (rw-r--r--) find * -type f -print0 | xargs -0 chmod 644 # FCGI-Scripte müssen ausführbar sein chmod 700 fcgi-bin/* # Der Ordner . also /var/www/virtual/$USER sollte die Rechte 750 haben, also ll /var/www/virtual | grep $USER # drwxr-x--- 18 username apache 4096 3. Jul 16:06 username
Wichtig dabei ist, dass der Webserver (Gruppe: apache) lesend auf alle Dateien zugreifen kann. (php Scripte laufen als fcgi Script im Namen von euch, aber alle anderen Dateien, zB statische Bilder werden direkt vom Webserver (apache) gelesen und weitergeleitet.)
/var/www/virtual/$USER hat die Gruppe apache und Leserechte für die Gruppe /var/www/virtual/$USER/html hat Eintrittsrechte (x) für den Rest (und damit apache) /var/www/virtual/$USER/html/.htaccess hat Leserechte (r) für den Rest (und damit apache)
Außerdem dürfen die fcgi-Scripte aus Sicherheitsgründen keine Schreibrechte für die Gruppe oder jeden haben, euer User muss sie aber ausführen können (z.B. 700, rwx——)
Die Leserechte aller anderen Dateien für den Rest (o) stellen kein Sicherheitsproblem dar, da andere spionierende User schon beim Verzeichnis
/var/www/virtual/$USER
ausgesperrt werden.
Kleine Übersicht über das Rechtesystem in Linux:
Für jede Datei können Leserechte (r), Schreibrechte (w) und Ausführ/Eintrittsrechte (x), jeweils getrennt für einen Benutzer, eine Gruppe und den Rest (also alle die Weder der Benutzer sind noch der Gruppe angehören). Das x steht bei Dateien dafür, dass man die Datei direkt ausführen kann und entspricht der Dateiendung .exe unter Windows. Bei Ordnern gibt das x an, ob demjenigen Erlaubt wird, den Ordnerinhalt zu sehen.
ls -l irgendein_Ordner -rw-r--r-- 1 peter gedoens 418 28. Okt 2013 datei1.txt -rwxrwxrwx 1 peter gedoens 418 28. Okt 2013 datei-die-jeder-bearbeiten- und-ausführen-kann.sh -rw-r--r-- 1 peter gedoens 418 28. Okt 2013 datei-ohne-endung |\ /\ /\ / | | | | | | | |-- o Rechte für jeden, der nicht der User peter ist | | | oder der Gruppe gedoens angehört. | | |----- g Rechte für Mitglieder der Gruppe gedoens. | |-------- u Rechte für den User peter, der damit auch | "Besitzer" der Datei oder des Ordners ist. |---------- Typ des Elements, meist d für Ordner oder f für Dateien. (l für Links, c für character devices, siehe /dev, s für gesetztes suid bit)
Was bedeuten die Nummern, zB 755 oder 750?
Die Nummern sind nur eine andere Schreibweise für die rwxrwxrwx Schreibweise.
Man teilt rwxrwxrwx in drei Dreiergruppen auf und weist den Positionen Zahlen zu:
rwx rwx rwx 421 421 421
Jetzt addiert man einfach die entsprechenden zahlen für die Rechte, die man aktivieren will, zB
r = 4 rw = 6 x = 1 rwx = 7 rx = ?
Wenn man sich das nicht merken will, akzeptiert der chmod Befehl, mit dem man die Rechte ändert auch folgende Schreibweise:
chmod o-r irgendeine-datei.txt
Statt dem absoluten 755 gehen auch relative Änderungen: + steht für das Hinzufügen, – für das Entfernen der Rechte und = für das setzten der Rechte.
Vor +, = oder - steht u g oder o für user, group oder other. Nach +, = oder - stehen die Rechte, also r w oder x. Beispiele: uo+w o-rwx u+w ugo+rwx u=rwx u+r,g=r
Ich will 3 Leuten Schreibrechte und einem 4. Leserechte gewähren
Für den normalen Gebrauch als Einzelperson ist dieses Prinzip des Rechtemanagements relativ einfach verständlich, noch überschaubar und trotz vieler Limitationen ausreichend. Wer viele Benutzer hat, kann jedoch ACLs benutzen, mit denen man die Rechte sehr viel feiner zwischen vielen Usern verteilen kann: http://www.knilse.de/download/acl.html
Schreibe einen Kommentar