Im folgenden zeige ich einen Trick zum Konfigurieren des lokalen Development Workspaces für Webentwicklung.
Man kann unter Linux Ordner so konfigurieren, dass alle neu erstellten Dateien eines Ordners “myuser:www-data” gehören.
Das bedeutet die Dateien gehören dem Benutzer myuser und der Gruppe weww-data. Für alle Dateien soll automatisch chmod 640 gesetzt werden. Für Ordner 750. Somit hat der Webserver Lesezurgriff auf die Dateien und Ordner, man selbst hat Schreibrechte. Andere haben gar keine Zurgirffsrechte.
Nun zu den Details. Wir richten einen Ordner innerhalb des lokalen Webserver Verzeichnisses ein. Den Development Workspace. Der Webserver sollte natürlich schon mit allen benötigten Komponenten installiert sein. Wir gehen von einer Installation ohne Vhosts mit dem Wepsace Ordner /var/www aus. Wir sind eingeloggt als “root user”.
cd /var/www/
mkdir user_dev
Chmod g+s
Nun setzen wir Eigentümer und Gruppe für das neue Verzeichniss.
chown myuser:www-data user_dev/
Damit diese Einstellungen auch beim Erstellen neuer Unterverzeichnisse beibehalten werden nutzen wir chmod g+s.
chmod g+s user_dev/
Umask 027
Nun sind wir fast fertig. Es fehlt noch die Sache mit dem chmod 640, beziehungsweise 750.
Wir nutzen umask. Da Verzeichniss spezifische umask Einstellungen standardmäßig nicht vorgesehen sind und nur sehr schwer umzusetzen, ändern wir die umask Einstellungen für alle Nutzer systemweit indem wir die Datei “/etc/login.defs” editieren und an der entsprechenden Stelle UMASK 027 setzen. Nun werden neue Dateien immer mit chmod 640 erstellt und Ordner mit chmod 750.
Anmerkung
Manchmal ist es notwendig, dass der Webserver in Ordner oder Dateien schreiben kann. Zum Beispiel beim Datei-Upload. Man kann chmod Einstellungen einfach mit chmod 660 ./ -R ändern. Die Flag -R steht hierbei für recursive und bedeutet, dass die Einstellungen rekursiv auf Dateien in Unterordnern und diese selbst angewendet werden. Eleganter ist es jedoch beim Setzen des chmods wieder zwischen Dateien und Ordnern zu unterscheiden.
Wir nutzen den find Befehl.
find /var/www/user_dev/somedirectory -type f | xargs chmod 640
Es wird chmod 640 auf alle Dateien die in /var/www/user_dev/somedirectory liegen gesetzt. -type f gibt an, dass wir nur Dateien und keine Ordner finden möchten. -type d wählt hingegen Ordner (directories) aus. Miitels | xargs verknüpfen wir jede gefundene Datei mit dem chmod Befehl. Der find Befehl lässt sich so im Übrigen auch anwenden um Texte in Dateien zu suchen.
find /var/www/user_dev/somedirectory -type f | xargs grep "suchtext" 2>/dev/null
Wir suchen den Text “suchtext” in allen Dateien des Ordners /var/www/user_dev/somedirectory. Mit 2>/dev/null löschen wir die Fehlerausgabe.
Tags: Linux, Sicherheit, Webentwicklung, Webhosting
August 19th, 2011 at 7:12 pm
Die Einstellungen bei Linux sind eben auch nicht zwingend als die von Windows – obwohl sich Linux, soweit ich weis, seit seinen Anfängen nicht wirklich weiterentwickelte. Die gute, alte Freeware …
November 3rd, 2011 at 5:00 am
Danke für diesen Trick! Kann bestimmt mal ganz nützlich sein…