Linux Verzeichnis- und Dateirechte korrigieren/setzen

Um die Zugriffsrechte aller (Unter)Verzeichnissen und/oder (Plaintext)Dateien  innerhalb eines Verzeichnisses gleich zu setzten (in diesem Beispiel 755 für Verzeichnisse, 644 für Dateien) kann die Liste der Verzeichnisse/ Dateien per find ermittelt werden, jede/s gefundene Verzeichnis / Datei wird an chmod übergeben:

~$: find ./* -type d -exec chmod 755 {} \;
~$: find ./* -type f -exec chmod 644 {} \;

How to keep Eclipse/ Zend Studio project synchronized with a linux server

Schönes HowTo zum Synchronisieren von Windows Eclipse/ Zend Studio Projekten mit einem Linux Server:
http://kb.zend.com/index.php?View=entry&EntryID=414

Ergänzend in den Windows Umgebungsvariablen folgende Benutzervariablen ergänzen:

  • HOME: %HOMEDRIVE%%HOMEPATH%
  • PATH: C:\Program Files\cwRsync\bin;%PATH%

Die Keys können auch mit Putty Key Generator (PuttyGen) erzeugt werden. Wichtig ist, dass für den rsync ein OpenSSH Key mit dem Namen „id_rsa“ im Ordner „C:\Documents and Settings\[USERNAME]\.ssh“ exportiert ist.

Wer einen Key mit Passphrase benutzt kann das Tool cygnative als Brücke zwischen rsync und pagant im ‚bin‘ Ordner des cwRsync ablegen und die Arguments leicht abändern (dann wird auch der OpenSSH Key nicht benötigt):
-vcrz
--rsh="cygnative plink staging-server"
--delete-after
--exclude-from=rsyncExclude.txt
.
:public_html

Subversion (SVN) Hooks

So genannte Hooks können über „Event-Einstiegspunkte“ im SVN Server eingehängt werden. Diese werden entsprechend dem Event ausgeführt (z. B. pre-commit, also vor einem Commit) und können z. B. Dateiprüfungen vornehmen. Hooks werden immer je Repository eingerichtet.

Dieses Beispielhafte pre-commit prüft, ob eine Datei die Eigenschaft „svn:keywords=Id“ gesetzt hat und bricht den Commit ggf. mit einer Fehlermeldung ab.

Hooks werden einfach als Datei mit dem Namen des Events (z. B. „pre-commit“) im Verzeichnis „hooks“ des jeweiligen Repositories abgelegt.

Neue Dateien vor dem Hinzufügen automatisch mit Eigenschaften versehen

Über die Konfiguration des SVN Clients (Windows: C:\Dokumente und Einstellungen\[User]\Anwendungsdaten\Subversion\config, Linux: /home/[User]/.subversion/config o. ä.) folgende Einstellungen aktivieren:


[miscellany]
enable-auto-props = yes
[auto-props]
*.php = svn:keywords=Id LastChangedRevision
*.php4 = svn:keywords=Id LastChangedRevision

Dann wird allen neu hinzugefügten *.php und *.php4 Dateien automatisch die Eigenschaft „svn:keywords=Id LastChangedRevision“ hinzugefügt. Für bereits im SVN bestehende Dateien muss diese Eigenschaft maneuell gesetzt werden.

Zugriff auf eigene Bilder von fremder Domain sperren

Bilderklau ist im Internet leider allzu verbreitet! Wenn aber nicht einmal eine Kopie von dem Bild gemacht wird, sondern das Originalbild direkt im fremden Quelltext eingebunden wird, hat der Seitenbetreiber des Originalbildes nicht nur unnötig höheren Traffik, sondern auch noch eine höhere Serverlast zu bemängeln.

Um diese Art des Bilderklaus zu unterbinden, kann eine kleine RewriteRule z.B. in einer .htaccess Datei eingesetzt werden:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?eigene-domain.tld(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ [F,NC]

Was passiet hier nun?

Wenn der Referer leer ist, oder nicht die eigene Domain ist, dann wird der Zugriff auf alle Dateien mit der Endung .gif, .jpeg, .jpg oder .png verboten. Wenn leere Referer zugelassen werden sollen, einfach die erste Zeile mit RewriteCond entfernen (nicht jeder Browser sendet den Referer (korrekt) mit).

Weitere Domains zulassen

Um weiteren Domains den Zugriff auf die Dateien zu erlauben, muss diese einfach in einer RewriteCond hinzugefügt werden.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?eigene-domain.tld(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?andere-eigene-domain.tld(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?erlaubte-fremde-domain.tld(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ [F,NC]

Andere Anwendungen/Dateiendungen

Die Liste der zu sperrenden Dateien, bzw. Dateiendungen kann einfach ergänzt werden (letzte Zeile, RewriteRule), so lassen sich dann z. B. auch PDF/DOC/etc. Dateien sperren.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?eigene-domain.tld(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png|pdf|doc)$ [F,NC]

Nicht sperren, sondern alternativen Inhalt zeigen

Statt den Zugriff zu sperren, kann man auch einen alternativen Inhalt/alternative Datei ausliefern. Dies könnte z.B. ein anderes Bild/Dokument sein, in dem auf den Datenklau hingewiesen wird. Diese Methode spart zwar keinen Traffik oder Serverlast, kann aber auch wirksam sein ;)

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?eigene-domain.tld(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ /do-not-steal.gif [NC]