Rechte auf dem uberspace

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert