Unix chown / Berechtigungen für WWW-Daten und Benutzer erteilen

1952
joe_young

Ich habe einen Benutzer, "Joe", dem ich Berechtigungen erteilen möchte (für /var/www/html/), damit ich ftp verwenden kann (mit vsftpd)

Also führe ich diesen Befehl aus:

sudo chown -R joe /var/www/html/ 

Und das geht gut, ich kann jetzt über ftp Dateien lesen, schreiben, löschen.
Jetzt gibt jedoch jede Seite meiner Website einen 403-Fehler aus.

Dies liegt daran, dass ich joe diese Verzeichnisse gegeben habe. Um meine Website wieder zugänglich zu machen, muss ich Folgendes ausführen:

sudo chown -R www-data /var/www/html/ 

Dies bedeutet jedoch, dass 'joe' mit ftp nicht auf diese Dateien zugreifen kann.

Gibt es eine Möglichkeit, mit der Joe Dateien lesen und schreiben kann, während gleichzeitig der Zugriff auf die WWW-Daten auf die Dateien ermöglicht wird, so dass meine Webseiten nicht verboten sind?


Ich habe versucht, eine Gruppe zu erstellen:

sudo addgroup users sudo add user joe users sudo add user www-data users 

Aber ich weiß nicht, wie man eine ganze Gruppe anspricht, ich weiß nur zum Beispiel:

sudo chown -R joe:users /var/www/html 

Dies ist jedoch das gleiche Problem.


Ich verwende Ubuntu 14.04 x64 mit Apache2, und Joe verfügt über Root-Berechtigungen ( ALL=(ALL:ALL) ALL).

2

2 Antworten auf die Frage

2
moonpoint

Wenn Sie sich die Berechtigungen für Verzeichnisse und Dateien ansehen, sehen Sie das Konto, dem sie gehören, und auch die Gruppe, zu der sie gehören. Z.B:

$ ls -ld /var/www/html drwxr-xr-x. 2 joe joe 23 Mar 12 11:08 /var/www/html 

Im obigen Beispiel besitzt das Konto joe das Verzeichnis und es gehört zur Gruppe joe; Die Gruppe ist der zweite "Joe" auf der Linie. Die Gruppe darf nur einen Account enthalten, Joe, aber ich könnte der Gruppe weitere Konten hinzufügen. Ich könnte eine Gruppe mit dem Namen erstellen usersund das Verzeichnis wie Sie mit dieser Gruppe verknüpfen. Sie verwenden den chownBefehl, aber es gibt auch einen chgrpBefehl zum Ändern der Gruppe. Sie können diesen Befehl verwenden, um Dateien und Verzeichnisse einer Gruppe zuzuweisen, oder Sie können die Gruppe auch wie zuvor ändern chown user:group. Sie können z. B. den folgenden Befehl verwenden, wenn eine www-data-Gruppe im System vorhanden ist (Sie können die Gruppen und ihre Mitglieder sehen, indem Sie den Befehl ausgeben cat /etc/group):

sudo chgrp www-data /var/www/html

Dann könnte ich etwas wie das Folgende sehen:

# ls -ld /var/www/html drwxr-xr-x. 2 joe www-data 23 Mar 12 11:08 /var/www/html 

Wenn Sie möchten, können Sie die Gruppe für das Verzeichnis als neue usersGruppe festlegen, die Sie wie mit dem chown -R joe:usersBefehl erstellt haben.

Als ich den ls -ldBefehl zur Überprüfung der Berechtigungen für das Verzeichnis ausgab, sah ich Folgendes:

drwxr-xr-x

Das "d" sagt mir, dass es ein Verzeichnis ist. Die nächsten drei Zeichen zeigen an, dass die Berechtigungen für den Eigentümer Lesen, Schreiben und Ausführen sind. Die nächsten 3 Zeichen zeigen die Berechtigungen für die Gruppe, die im obigen Beispiel gelesen und ausgeführt werden. Ich könnte der Gruppe Schreibberechtigung mit dem folgenden Befehl erteilen:

chmod g+w /var/www/html

Sie können die Berechtigungen für das obige Verzeichnis auch mit der Option -Roder rekursiv ändern --recursive.

Wenn Sie die Gruppe anpassen Berechtigungen entsprechend, können Sie erreichen, was Sie tun wollen, so dass, wenn Apache läuft als www-data und www-data die entsprechenden Gruppenberechtigungen auf das Verzeichnis hat, und die Dateien und Unterverzeichnisse in ihm, wird Apache sein Dateien lesen und schreiben können. Anscheinend haben Sie den Besitzer und die Gruppe bereits auf eine funktionierende Einstellung festgelegt. Daher müssen Sie jetzt wahrscheinlich nur noch die Berechtigungen für die Gruppe usersmit dem chmodBefehl festlegen .

2
Alex

Ich denke du kannst es versuchen:

setfacl -R -m u:joe:rw /var/www/html 

Sie können das Ergebnis testen, indem Sie Folgendes tun:

getfacl /var/www/html 

Sie sollten etwas ähnliches sehen:

# file: var/www/html # owner: root # group: root user::rwx user:joe:rw- group::r-x mask::rwx other::r-x