<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lemmingzshadow.net &#187; Debian - lemmingzshadow.net - a webdevel&#039;s weblog</title>
	<atom:link href="http://lemmingzshadow.net/tag/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://lemmingzshadow.net</link>
	<description>a webdevel&#039;s weblog</description>
	<lastBuildDate>Fri, 27 Apr 2012 20:35:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PPTP VPN Tunnel &#8211; Ein paar Tipps</title>
		<link>http://lemmingzshadow.net/411/pptp-vpn-tunnel-ein-paar-tipps/</link>
		<comments>http://lemmingzshadow.net/411/pptp-vpn-tunnel-ein-paar-tipps/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 21:52:25 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PPTP]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=411</guid>
		<description><![CDATA[Vor kurzem habe ich einen VPN-Server aufgesetzt und habe mich dabei für das PPTP entschieden. Auf die grundlegende Installation unter Debian möchte ich hier nicht eingehen denn dafür gibt es bereits genügen Anleitungen im Netz. (z.B. hier) Allerdings waren (zumindest bei mir) nach der Installation noch einige kleine Kniffe notwendig bis der Tunnel vernünftig lief. [...]]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem habe ich einen VPN-Server aufgesetzt und habe mich dabei für das PPTP entschieden. Auf die grundlegende Installation unter Debian möchte ich hier nicht eingehen denn dafür gibt es bereits genügen Anleitungen im Netz. (z.B. <a href="http://www.howtogeek.com/51237/setting-up-a-vpn-pptp-server-on-debian/">hier</a>)</p>
<p>Allerdings waren (zumindest bei mir) nach der Installation noch einige kleine Kniffe notwendig bis der Tunnel vernünftig lief. An dieser Stelle noch kurz der Hinweis, dass als Clients Windows 7 bzw. Windows XP Rechner zum Einsatz kommen.</p>
<p><strong>Problem 1:</strong> Clients können sich einwandfrei verbinden, es können jedoch keine Daten empfangen werden.<br />
Lösung: Damit der Server empfangene Daten zu den Clients &#8220;weiterrouten&#8221; kann ist eine IPTables Regel notwendig. Bei mir brachte folgendes die Lösung:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">iptables --table nat --append POSTROUTING  --out-interface eth0 --jump MASQUERADE</pre></div></div>

<p><span id="more-411"></span><br />
<strong>Problem 2:</strong> Der Tunnel funktioniert grundlegend, die Verbindung &#8220;friert jedoch bei gößeren Datenmenegen ein&#8221;.<br />
Lösung: Auch hier hilft ein Regeln in den IPTables weiter:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">iptables --append FORWARD --protocol tcp --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu</pre></div></div>

<p>Desweiteren habe ich zur Lösung dieses Problems die <a href="http://de.wikipedia.org/wiki/Maximum_Transmission_Unit">MTU</a> und <a href="http://de.wikipedia.org/wiki/Link_Control_Protocol#Maximum_Receive_Unit_.28MRU.29">MRU</a> angepasst und auf einen Wert von 1400 eingestellt.<br />
Diese Werte können in der Datei <em>/etc/ppp/pptpd-options</em> angepasst werden.</p>
<p><strong>Problem 3:</strong> Clients werden immer wieder vom VPN-Server getrennt.<br />
Lösung: In meinem Fall brachten mich diese Zeilen in den Logfiles auf die Lösung:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">No response to 4 echo-requests
Serial link appears to be disconnected.</pre></div></div>

<p>Offensichtlich antworteten einige Clients nicht (oder nicht zuverlässig) auf die vom Server verschickten <a href="http://de.wikipedia.org/wiki/Link_Control_Protocol">LCP-Echo-Requests</a>. Nachdem auch die Erhöhung der maximal nicht beantworteten Requests keine Abhilfe brachte habe ich die Echo-Anfragen schließlich komplett deaktiviert. Dies kann man in der Datei <em>/etc/ppp/options</em> erledigen indem man folgende zwei Werte auf 0 setzt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">lcp-echo-interval 0
lcp-echo-failure 0</pre></div></div>

<p>Ich hoffe dieser Beitrag kann helfen falls jemand auf die gleichen Probleme stößt, z.B. ich wenn ich in ein paar Monaten mal wieder einen pptpd aufsetze <img src='http://lemmingzshadow.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/411/pptp-vpn-tunnel-ein-paar-tipps/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Wechsel von PHP-CGI zu PHP-FPM</title>
		<link>http://lemmingzshadow.net/360/wechsel-von-php-cgi-zu-php-fpm/</link>
		<comments>http://lemmingzshadow.net/360/wechsel-von-php-cgi-zu-php-fpm/#comments</comments>
		<pubDate>Sun, 08 May 2011 17:48:18 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[PHP-FPM]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=360</guid>
		<description><![CDATA[Da ich hier schon längere Zeit nichts mehr geschrieben habe, habe ich beschlossen nun auch kürzere, weniger aufwendige Artikel zu veröffentlichen, um hier mal wieder etwas Leben in die Bude zu bekommen. Jetzt aber zum Thema: Aus einem mir unbekannten Grund verabschiedeten sich auf meinem Debian Squeeze Server die PHP-CGI Prozesse mit folgender Meldung im [...]]]></description>
			<content:encoded><![CDATA[<p>Da ich hier schon längere Zeit nichts mehr geschrieben habe, habe ich beschlossen nun auch kürzere, weniger aufwendige Artikel zu veröffentlichen, um hier mal wieder etwas Leben in die Bude zu bekommen. Jetzt aber zum Thema:</p>
<p>Aus einem mir unbekannten Grund verabschiedeten sich auf meinem Debian Squeeze Server die PHP-CGI Prozesse mit folgender Meldung im Error-Log:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">(mod_fastcgi.c.3001) backend is overloaded; we'll disable it for 1 seconds and send the request to another backend instead</pre></div></div>

<p>Ich habe zwar eine generelle Lösung für dieses Problem gefunden (<a href="http://www.debianroot.de/server/loesung-fuer-das-lighttpd-problem-backend-is-overloaded-1093.html">Link</a>), diese konnte ich bei meiner Serverkonfiguration aber leider nicht anwenden. Da ich mehrere PHP-CGI-Pools mit verschiedenen UIDs/GIDs starte und diese in der Lighttpd-Config über die Sockets zuordne, konnte ich hier den &#8220;var.PID&#8221; Teil nicht anhängen. Davon abgesehen hatte es vorher viele Monate ohne diese Änderung funktioniert. Also habe ich mich kurzerhand dazu entschlossen zu <a href="http://php-fpm.org/">PHP-FPM</a> zu wechseln.<br />
<span id="more-360"></span><br />
Leider gibt es das php-fpm Paket (noch?) nicht im Debian-Squeeze Repository deswegen habe ich die Paketquellen von <a href="http://www.dotdeb.org/">Dotdeb</a> verwendet. Die Umstellung funktionierte wunderbar einfach, denn man kann PHP-CGI und PHP-FPM problemlos parallel laufen lassen und einen Vhost nach dem anderen umstellen.<br />
Ein recht gutes Tutorial zur Konfiguration von PHP-FPM gibt es <a href="http://publications.jbfavre.org/web/php-fpm-apps-server-nginx.en">hier</a>. Nachdem FPM konfiguriert und gestartet ist kann man in den Vhost-Konfigurationen von Lighttpd einfach den PHP-CGI Teil durch die neue FPM-Konfiguration ersetzen. Das sieht in etwa so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">fastcgi.server = ( &quot;.php&quot; =&gt;
      ( &quot;localhost&quot; =&gt;
        (
          &quot;host&quot; =&gt; &quot;127.0.0.1&quot;,
          &quot;port&quot; =&gt; &quot;9001&quot;
        )
      )
    )</pre></div></div>

<p>Ein enormer Vorteil von PHP-FPM: Man kann mehrere Pools konfigurieren die mit unterschiedlichen UIDs/GIDs laufen, was die Sicherheit auf dem Server ein gutes Stück erhöht.</p>
<p>Mein Fazit: Die Umstellung von PHP-CGI auf PHP-FPM ist relativ leicht zu bewerkstelligen und den Aufwand in jeden Fall wert!</p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/360/wechsel-von-php-cgi-zu-php-fpm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asynchrone PHP Prozesse mit Gearman</title>
		<link>http://lemmingzshadow.net/347/asynchrone-php-prozesse-mit-gearman/</link>
		<comments>http://lemmingzshadow.net/347/asynchrone-php-prozesse-mit-gearman/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 16:03:28 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Gearman]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webtechnik]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=347</guid>
		<description><![CDATA[Es kommt immer wieder vor, dass man aus einem PHP-Script heraus ein Anderes aufrufen möchte welches dann eine bestimmt Aufgabe erledigt. Dies ist z.B. sinnvoll wenn die Aufgabe länger dauert und man nicht im Script darauf warten möchte, wie etwa beim Erstellen von Bildern in verschiedenen Größen. Ich hatte bereits vor einiger Zeit über eine [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lemmingzshadow.net/files/2011/03/gearman.gif" alt="Gearman" title="Gearman" width="80" height="80" style="float: left; padding: 5px;" /> Es kommt immer wieder vor, dass man aus einem PHP-Script heraus ein Anderes aufrufen möchte welches dann eine bestimmt Aufgabe erledigt. Dies ist z.B. sinnvoll wenn die Aufgabe länger dauert und man nicht im Script darauf warten möchte, wie etwa beim Erstellen von Bildern in verschiedenen Größen.<br />
Ich hatte bereits vor einiger Zeit über eine Möglichkeit berichtet <a href="http://lemmingzshadow.net/6/php-scripte-im-hintergrund-ausfuhren/">PHP-Script im Hintergrund auszuführen</a>.<br />
Diese Möglichkeit ist allerdings nicht wirklich schön und hat auch einige Nachteile. Z.B. kann man nur schwer abfragen wie der aktuelle Status des Scripts ist und auch die Verteilung auf verschiedene Server ist nicht trivial. Darum möchte ich hier eine wesentlich elegantere Möglichkeit vorstellen PHP-Prozesse asynchron laufen zu lassen. Und zwar mit Hilfe von <a href="http://gearman.org/">Gearman</a>:<span id="more-347"></span></p>
<p>Gearman ist ein Jobserver und ermöglicht es Aufgaben auf verschiedene Prozesse und/oder Maschinen auszulagern. Dabei arbeitet man mit sogenannten &#8220;Workern&#8221; die auf einem beliebigen Server darauf warten Aufgaben zu erledigen. Besonders schön ist, dass diese Worker ebenfalls in PHP programmiert werden können. Zunächst jedoch ein paar Worte zur Installation.</p>
<p>Auf einem Debian Squeeze System ist die Installation denkbar einfach. Einfach den Jobserver via Aptitude oder apt-get installieren. Das Paket heisst <a href="http://packages.debian.org/squeeze/gearman">&#8220;gearman&#8221;</a>. Im init.d Ordner liegt dann auch direkt ein Script mit dem der Server gestartet werden kann:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">/etc/init.d/gearman-job-server start</pre></div></div>

<p>Um den Gearman Server in PHP &#8220;ansprechen&#8221; zu können benötigt man nun noch die <a href="http://de.php.net/manual/en/book.gearman.php">Gearman-Extension</a> welche über PECL installiert werden kann.<br />
Hinweis: Es wird das Paket &#8220;php5-dev&#8221; benötigt. Falls dieses noch nicht installiert ist sollte man das an dieser Stelle tun.</p>
<p>Dann die PHP-Extenstion über PECL installieren:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">pecl install gearman</pre></div></div>

<p>Hinweis: Falls das Paket hier nicht installiert werden kann weil es eine Beta Version ist, stattdessen folgenden Befehl verwenden:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">pecl install gearman-beta</pre></div></div>

<p>Damit sollte die Extension erstellt sein und kann in der php.ini geladen werden. Dazu einfache folgendes in der php.ini ergänzen:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">extension = gearman.so</pre></div></div>

<p>Hinweis: Da die Worker normalerweise als CLI-Programme laufen, die entsprechende php.ini nicht vergessen.</p>
<p>Nun sollte alles soweit sein, dass Gearman verwendet werden kann.</p>
<p>Zunächst brauchen wir einen Worker welcher im Hintergrund läuft und darauf wartet Aufgaben zu erledigen. Hier ein Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> WorkerExample
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_GearmanWorker</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span>  __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_GearmanWorker <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GearmanWorker<span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_GearmanWorker<span style="color: #339933;">-&gt;</span><span style="color: #004000;">addServer</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'127.0.0.1'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4730</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_startupWorker<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _startupWorker<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_GearmanWorker<span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFunction</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foobar'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'foobar'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_GearmanWorker<span style="color: #339933;">-&gt;</span><span style="color: #004000;">work</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> foobar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$Job</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #990000;">unserialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$Job</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">workload</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// do some work here...</span>
		<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$Worker</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WorkerExample<span style="color: #339933;">;</span></pre></div></div>

<p>Diesen Worker kann man nun z.B. als worker.php speichern und dann zum testen in einem Screen laufen lassen:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">php worker.php</pre></div></div>

<p>Nun brauchen wir noch ein Script welches diesen Worker aufruft, der sogenannte Client:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$Client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GearmanClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$Client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addServer</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'127.0.0.1'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4730</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	<span style="color: #0000ff;">'foo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">42</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">'bar'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1337</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$Client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">doBackground</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foobar'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Wenn nun dieser Client aufgerufen wird sollte man in dem Screen in dem der Worker läuft eine Ausgabe der übergebenen Parameter sehen.<br />
Im Code sieht man sofort dass die IP des Servers auf dem Gearman läuft angegeben wird. Hier kann natürlich auch ein anderer Server als localhost benutzt werden. Mit &#8220;doBackground&#8221; wird der Worker aufgerufen und das Script läuft direkt weiter ohne auf irgendeine Antwort des Workers zu warten.</p>
<p>Über die vielen weiteren Möglichkeiten des Gearman-Servers kann man sich am besten informieren wenn man einen Blick auf die Methoden der <a href="http://de3.php.net/manual/en/book.gearman.php">Gearman-Extension auf php.net</a> wirft. Und nun viel Spass beim experimentieren. <img src='http://lemmingzshadow.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/347/asynchrone-php-prozesse-mit-gearman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lighttpd, mod_rewrite und die htaccess</title>
		<link>http://lemmingzshadow.net/283/lighttpd-mod_rewrite-und-die-htaccess/</link>
		<comments>http://lemmingzshadow.net/283/lighttpd-mod_rewrite-und-die-htaccess/#comments</comments>
		<pubDate>Sun, 30 May 2010 12:03:16 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=283</guid>
		<description><![CDATA[Eins der wohl häufigsten Probleme bei der Umstellung von Apache auf Lighttpd ist sicherlich die Migration der htaccess Dateien. Grund dafür ist, dass (zumindest bis vor kurzem) das mod_rewrite Modul des Lighttpd nicht prüfen konnte ob eine Datei existiert und die Rewrite-Regeln somit immer angewendet wurden. Dieses Problem konnte man durch die Verwendung von mod_magnet [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lemmingzshadow.net/files/2010/05/200px-Lighttpd_Logo.png" alt="Lighttpd Logo" title="Lighttpd Logo" width="120" height="98" class="alignleft size-full wp-image-286" style="padding: 5px;" />Eins der wohl häufigsten Probleme bei der Umstellung von <a href="http://www.apache.org/">Apache</a> auf <a href="http://www.lighttpd.net/">Lighttpd</a> ist sicherlich die Migration der htaccess Dateien. Grund dafür ist, dass (zumindest bis vor kurzem) das mod_rewrite Modul des Lighttpd nicht prüfen konnte ob eine Datei existiert und die Rewrite-Regeln somit immer angewendet wurden. Dieses Problem konnte man durch die Verwendung von mod_magnet und LUA zwar umgehen allerdings müssen dann alle rewrite-Regeln in LUA neu geschrieben werden, was nicht immer ganz trivial ist.<span id="more-283"></span></p>
<p>Auch ich stand vor diesem Problem bis ich in der <a href="http://redmine.lighttpd.net/wiki/1/Docs:ModRewrite">mod_rewrite Doku</a> des Lighttpd folgedes entdeckte:</p>
<blockquote><p>New: For the 1.4.x branch as of 1.4.24 or r2647 from svn:<br />
Rewrites a set of URLs internally in the webserver BEFORE they are handled and checks that files do not exist.</p></blockquote>
<p>Gute Nachrichten: Ab Version 1.4.24 des Lighty bietet das mod_rewrite Modul die Möglichkeit eine Rewrite-Regel erst anzuwenden <strong>nachdem</strong> geprüft wurde ob eine Datei existiert. Also genau das Feature was bisher fehlte.<br />
Schlechte Nachricht: Die Lighty Version im stable Repository von Debian ist noch nicht aktuell genug.</p>
<p>Es ist gibt jedoch eine sehr elegante Möglichkeit unter Debian einzelne Pakte aus dem testing Repository zu installieren. Diese ist hier sehr schön beschrieben: <a href="http://proteino.de/blog/index.php/2010/04/02/debian-mit-aktuelleren-paketen-stable-und-testing/">Debian mit aktuelleren Paketen &#8211; stable und testing</a></p>
<p>Nachdem man so den Lighty auf eine aktuelle Version gebracht hat ist es relativ einfach htaccess Dateien des Apache zur Verwendung mit Lighttpd zu ändern.</p>
<p>Hier eine kurze Anleitung am Beispiel von WordPress und einem SEO-phpBB:</p>
<p>Zunächst das mod_rewrite Modul in der lighttpd.conf aktivieren:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">server.modules              = (
            &quot;mod_expire&quot;,
            &quot;mod_access&quot;,
            &quot;mod_alias&quot;,
            &quot;mod_accesslog&quot;,
            &quot;mod_compress&quot;,
            &quot;mod_fastcgi&quot;,
            &quot;mod_auth&quot;,
            &quot;mod_rewrite&quot;,
)</pre></td></tr></table></div>

<p>Dann im entsprechenden Vhost eine Datei mit den Rewrite-Regeln einbinden:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$HTTP[&quot;host&quot;] =~ &quot;^(lemmingzshadow\.net|www\.lemmingzshadow\.net)$&quot; {
    server.document-root = &quot;/var/www/lemmingzshadow.net/&quot;
    include &quot;/var/www/lemmingzshadow.net/rewrite.conf&quot;
}</pre></td></tr></table></div>

<p>Und so sehen Beispielsweise meine Rewrite-Regeln für dieses Blog aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">url.rewrite-if-not-file = (
	&quot;(wp-.+).*/?&quot; =&gt; &quot;$0&quot;,
	&quot;^/(.+)/?$&quot; =&gt; &quot;/index.php/$1&quot;
)</pre></td></tr></table></div>

<p>Man sieht direkt, dass die Syntax der einer htaccess Datei sehr ähnlich ist und man seine regulären Ausdrücke nahezu eins zu eins übernehmen kann. Wichtig ist das <em>url.rewrite-if-not-file</em> um wirklich nur dann die Url umzuschreiben wenn die aufgerufene Datei nicht existiert. Die erste Regel dient dazu alle wp-* Verzeichnisse nicht umzuschreiben. Die zweite leitet alle restlichen Anfragen auf die index.php um.</p>
<p>Am Beispiel eines phpBB mit SEO-Urls sieht das ganze z.B. so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">url.rewrite-if-not-file = (
  &quot;/(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html&quot;   =&gt; &quot;/viewtopic.php?f=$2&amp;t=$4&amp;start=$5&quot;,
  &quot;/(.*)-f([0-9]*)/(.*)-t([0-9]*).html&quot;         =&gt; &quot;/viewtopic.php?f=$2&amp;t=$4&quot;,
  &quot;/(.*)-f([0-9]*)/index-s([0-9]*).html&quot;         =&gt; &quot;/viewforum.php?f=$2&amp;start=$3&quot;,
  &quot;/(.*)-f([0-9]*)&quot;                        =&gt; &quot;/viewforum.php?f=$2&quot;,
  &quot;/global/(.*)-t([0-9]*).html&quot;           =&gt; &quot;/viewtopic.php?f=1&amp;t=$2&quot;
)</pre></td></tr></table></div>

<p>Eine entsprechende htaccess Datei hätte so ausgesehen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">RewriteEngine on
RewriteBase /
&nbsp;
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&amp;t=$4&amp;start=$5&amp;%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&amp;t=$4&amp;%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&amp;start=$3&amp;%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&amp;%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&amp;%{QUERY_STRING} [L]</pre></td></tr></table></div>

<p>Auch hier können die regeln fast eins zu eins übernommen werden.<br />
Noch ein wichtiger Hinweis zum Schluss: Um Änderungen an den Rewrite-Regeln zu übernehmen muss der Lighttpd neu gestartet werden!</p>
<p>Hoffentlich konnte ich mit diesem kurzem Beitrag dem ein oder anderen die Umstellung von Apache auf Lighttpd erleichtern.</p>
<p><strong>Nachtrag vom 01.06.2010:</strong><br />
<a href="http://lifeofguenter.de/">lifeofguenter</a> stellte fest, dass das mod_rewrite Modul aktuell wohl nur im 1.4er Trunk entsprechend angepasst ist. Für die 1.5er Versionen des Lighttpd ist die Möglichkeit <em>url.rewrite-if-not-file</em> zu nutzen aktuell wohl noch nicht implementiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/283/lighttpd-mod_rewrite-und-die-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ftplicity unter Debian Lenny</title>
		<link>http://lemmingzshadow.net/159/ftplicity-unter-debian-lenny/</link>
		<comments>http://lemmingzshadow.net/159/ftplicity-unter-debian-lenny/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 12:50:38 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=159</guid>
		<description><![CDATA[Mit dem Update von Debian Etch auf Lenny wird unter anderem die Duplicity Version aktualisiert. In der aktualisierten Version haben sich allerdings einige Parameter geändert weswegen die Ftplicity Version von heise nicht mehr korrekt funktioniert. Eine Lösung habe ich gerade bei weareroot.de gefunden. Dort wird eine angepasste Ftplicity Version angeboten, welche auch unter Debian Lenny [...]]]></description>
			<content:encoded><![CDATA[<p>Mit dem Update von Debian Etch auf Lenny wird unter anderem die Duplicity Version aktualisiert. In der aktualisierten Version haben sich allerdings einige Parameter geändert weswegen die Ftplicity Version von heise nicht mehr korrekt funktioniert. Eine Lösung habe ich gerade bei <a href="http://www.weareroot.de/2007/10/29/duplicity-044-und-ftplicity/">weareroot.de</a> gefunden. Dort wird eine angepasste Ftplicity Version angeboten, welche auch unter Debian Lenny korrekt zu funktionieren scheint. Ich konnte bei meinen Tests zumindest bis jetzt noch keine Fehler feststellen. Danke dafür!</p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/159/ftplicity-unter-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>policyd-weight DNS-Blacklists anpassen</title>
		<link>http://lemmingzshadow.net/35/policyd-weight-dns-blacklists-anpassen/</link>
		<comments>http://lemmingzshadow.net/35/policyd-weight-dns-blacklists-anpassen/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 10:10:32 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[policyd-weight]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=35</guid>
		<description><![CDATA[Zum Schutz vor Spam-Emails verwende ich policyd-weight auf meinem Mailserver. Bei der Installation auf Debian Etch (via apt-get) war bei mir jedoch eine veraltete DNS-Blacklist in der config eingetragen. Bemerkbar machte sich das durch eine Error-Meldung in der policyd-weight Zeile des Mailheaders: 1 X-policyd-weight: &#60;strong&#62;DYN_NJABL=ERR&#60;/strong&#62; NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_FROM_IP=-2 ... Die Blacklisten und der entsprechende [...]]]></description>
			<content:encoded><![CDATA[<p>Zum Schutz vor Spam-Emails verwende ich <a href="http://www.policyd-weight.org/">policyd-weight</a> auf meinem Mailserver. Bei der Installation auf Debian Etch (via apt-get) war bei mir jedoch eine veraltete DNS-Blacklist in der config eingetragen. Bemerkbar machte sich das durch eine Error-Meldung in der policyd-weight Zeile des Mailheaders:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">X-policyd-weight:  &lt;strong&gt;DYN_NJABL=ERR&lt;/strong&gt; NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_FROM_IP=-2 ...</pre></td></tr></table></div>

<p>Die Blacklisten und der entsprechende Score-Wert sind in der Datei <em>/etc/policyd-weight.conf</em> eingetragen. Dort einfacht die veraltete Liste <strong>dynablock.njabl.org</strong> durch eine gleichwertige aktuelle ersetzen. Ich habe mich für <strong>zen.spamhaus.org</strong> entschieden.</p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/35/policyd-weight-dns-blacklists-anpassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN Apache Modul und Vhosts</title>
		<link>http://lemmingzshadow.net/29/svn-apache-modul-und-vhosts/</link>
		<comments>http://lemmingzshadow.net/29/svn-apache-modul-und-vhosts/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 08:55:23 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=29</guid>
		<description><![CDATA[Nach der Installation eines SVN-Servers und dem Apache Modul libapache2-svn auf meinem Debian-Etch System hatte ich ein kleines Problem mit der Default-Config auf welches ich hier kurz eingehen möchte. Um ein Repository über http(s) erreichbar zu machen wird stardardmäßig die Datei /etc/apache2/mods-available/dav_svn.conf verwendet. Hier finden sich ein paar Zeilen welche in etwas so aussehen: 1 [...]]]></description>
			<content:encoded><![CDATA[<p>Nach der Installation eines SVN-Servers und dem Apache Modul <em>libapache2-svn</em> auf meinem Debian-Etch System hatte ich ein kleines Problem mit der Default-Config auf welches ich hier kurz eingehen möchte.<br />
Um ein Repository über http(s) erreichbar zu machen wird stardardmäßig die Datei /etc/apache2/mods-available/dav_svn.conf verwendet. Hier finden sich ein paar Zeilen welche in etwas so aussehen:<br />
<span id="more-29"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">&lt;location /myproject_site&gt;
DAV svn
SVNPath /var/svn/myproject
AuthType Basic
AuthName &quot;Subversion Repository&quot;
AuthUserFile /etc/apache2/svn.passwd
Require valid-user
&lt;/location&gt;</pre></td></tr></table></div>

<p>Damit ist das Repository allerdings unter <strong>jeder</strong> Domain die auf dem Server läuft erreichbar. (domainname.tld/myproject_site).<br />
Um das Repository nur unter einem Vhost erreichbar zu machen, etwa svn.domain.tld kann man die Zeilen aus der dav_svn.conf in die httpd.conf des Apaches verschieben. Das könnte beispielsweise so ausssehen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">&lt;virtualHost 11.22.33.44:80&gt;
        ServerName svn.domain.tld
        DocumentRoot &quot;/var/www/svn.domain.tld/&quot;
        &lt;location /&gt;
                DAV svn
                SVNPath /var/svn/myproject
                AuthType Basic
                AuthName &quot;domain.tld Repository&quot;
                AuthUserFile /etc/apache2/svn.passwd
                Require valid-user
                AuthzSVNAccessFile /var/svn/myproject/conf/authz
        &lt;/location&gt;
&lt;/virtualHost&gt;</pre></td></tr></table></div>

<p>Damit ist das Repository dann nur noch unter svn.domain.tld erreichbar.<br />
Eine grundlegende Anleitung zum einrichten eines SVN-Server gibt es z.B. hier: <a href="http://www.reviewingit.com/index.php/content/view/62/2/">Installing Subversion on Debian Etch Complete&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/29/svn-apache-modul-und-vhosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nachtrag zum Postfix Logging (Logrotate)</title>
		<link>http://lemmingzshadow.net/26/nachtrag-zum-postfix-logging-logrotate/</link>
		<comments>http://lemmingzshadow.net/26/nachtrag-zum-postfix-logging-logrotate/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 08:15:41 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logrotate]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=26</guid>
		<description><![CDATA[Hier habe ich ja bereits ein paar Worte zum Log-Verhalten von Postifx verloren, eine Kleinigkeit habe ich jedoch vergessen, und möchte Sie hiermit nachtragen. Wenn man Postfix so anpasst, dass es nur noch in die Datei mail.log schreibt sollte man diese noch in das logrotate von Debian mit aufnehmen. Standardmäßig ist das nicht der Fall. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lemmingzshadow.net/16/postfix-logging-auf-debian-etch/">Hier</a> habe ich ja bereits ein paar Worte zum Log-Verhalten von Postifx verloren, eine Kleinigkeit habe ich jedoch vergessen, und möchte Sie hiermit nachtragen.<br />
Wenn man Postfix so anpasst, dass es nur noch in die Datei <em>mail.log</em> schreibt sollte man diese noch in das logrotate von Debian mit aufnehmen. Standardmäßig ist das nicht der Fall.<br />
Damit die Datei mit in die täglich Log-Rotation aufgenommen wird kann man beispielsweise folgende Zeilen in der Date <em>/etc/logrotate.conf</em> ergänzen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">/var/log/mail.log {
    missingok
    daily
    rotate 7
    create
    compress
    start 0
}</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/26/nachtrag-zum-postfix-logging-logrotate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix Logging auf Debian Etch</title>
		<link>http://lemmingzshadow.net/16/postfix-logging-auf-debian-etch/</link>
		<comments>http://lemmingzshadow.net/16/postfix-logging-auf-debian-etch/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 18:41:07 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=16</guid>
		<description><![CDATA[Kürzlich ist mir aufgefallen, dass der MTA Postfix nach der Default-Installation (via apt-get) auf einem Debian Etch System in verschiedene Dateien loggt. Es werden die Dateien mail.err, mail.info, mail.warn, mail.log und syslog benutzt. Das ist zwar etwas unübersichtlich aber erstmal nicht schlimm, würden nicht einige Informationen redundant gespeichert. Die Dateien mail.log, mail.info und syslog enthalten [...]]]></description>
			<content:encoded><![CDATA[<p>Kürzlich ist mir aufgefallen, dass der MTA Postfix nach der Default-Installation (via apt-get) auf einem Debian Etch System in verschiedene Dateien loggt. Es werden die Dateien <em>mail.err</em>, <em>mail.info</em>, <em>mail.warn</em>, <em>mail.log</em> und <em>syslog</em> benutzt. Das ist zwar etwas unübersichtlich aber erstmal nicht schlimm, würden nicht einige Informationen redundant gespeichert. Die Dateien <em>mail.log</em>, <em>mail.info</em> und <em>syslog</em> enthalten nahezu identische Logs bzgl. MTA und Mailserver.</p>
<p>Ich habe mein System nun so angepasst dass alle Logs von Postfix nur noch in der Datei <em>mail.log</em> gespeichert werden. Dazu müssen in der Datei <em>/etc/syslog.conf</em> einige kleinere Änderungen vorgenommen werden:<br />
<span id="more-16"></span><br />
Zunächst eine Zeile die etwa so aussieht:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">*.*;auth,authpriv.none   -/var/log/syslog</pre></td></tr></table></div>

<p>ändern in:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">*.*;auth,authpriv,mail.none    -/var/log/syslog</pre></td></tr></table></div>

<p>Mit dieser Änderung erreicht man, dass keine Mail-Logs mehr im syslog auftauchen.</p>
<p>Mit dieser Zeile werden alle Mail-Logs in der Datei <em>mail.log</em> gespeichert:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">mail.*      -/var/log/mail.log</pre></td></tr></table></div>

<p>Dann habe ich noch diese 3 Zeilen auskommentiert, damit keine Informationen mehr in die Dateien <em>mail.info</em>, <em>mail.err</em> und <em>mail.warn</em> geschrieben werden:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
#mail.err                       /var/log/mail.err</pre></td></tr></table></div>

<p>Abschließend muss der Syslog Deamon neu gestartet werden. Das geht mit folgendem Befehl:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">/etc/init.d/sysklogd restart</pre></td></tr></table></div>

<p>Nun werden die Logs von Postfix nur noch in der Datei <em>mail.log</em> gespeichert.<br />
Natürlich ist das nur eine von vielen Möglichkeiten das Logging zu konfigurieren, ich finde diese Lösung allerdings schön einfach und übersichtlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/16/postfix-logging-auf-debian-etch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>(Chrooted) SFTP mit MySecureShell</title>
		<link>http://lemmingzshadow.net/9/chrooted-sftp-mit-mysecureshell/</link>
		<comments>http://lemmingzshadow.net/9/chrooted-sftp-mit-mysecureshell/#comments</comments>
		<pubDate>Thu, 29 May 2008 15:21:40 +0000</pubDate>
		<dc:creator>Lemmingz Shadow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SFTP]]></category>

		<guid isPermaLink="false">http://lemmingzshadow.net/?p=9</guid>
		<description><![CDATA[Eine feine Möglichkeit auf einem Linux-Server SFTP-User anzulegen bietet das Tool MySecureShell. Nach der Installation und dem Anpassen einiger Parameter in der Config können neue SFTP-User einfach mit useradd über die Shell angelegt werden. Diese User sind dann im angegeben Home-Verzeichniss eingesperrt und haben keinen Shell-Zugriff. Auf einem Debian-Etch System erfolgt die Installation wie folgt: [...]]]></description>
			<content:encoded><![CDATA[<p>Eine feine Möglichkeit auf einem Linux-Server SFTP-User anzulegen bietet das Tool <a href="http://mysecureshell.sourceforge.net/fr/index.html">MySecureShell.</a> Nach der Installation und dem Anpassen einiger Parameter in der Config können neue SFTP-User einfach mit useradd über die Shell angelegt werden. Diese User sind dann im angegeben Home-Verzeichniss eingesperrt und haben keinen Shell-Zugriff.</p>
<p>Auf einem Debian-Etch System erfolgt die Installation wie folgt:<br />
<span id="more-9"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">wget wget http://ovh.dl.sourceforge.net/sourceforge/mysecureshell/mysecureshell_[versionsnummer]_i386.deb
dpkg -i mysecureshell_[versionsnummer]_i386.deb</pre></td></tr></table></div>

<p>Die Config-Datei ist sehr gut dokumentiert und funktioniert eigentlich sofort. Ich habe meine allerdings noch etwas angepasst:</p>
<p>Config-File im Editor öffnen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">nano /etc/ssh/sftp_config</pre></td></tr></table></div>

<p>und ein paar Parameter anpassen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="text" style="font-family:monospace;"># Keine Speedlimits fuer SFTP
GlobalDownload		0
GlobalUpload			0
Download 			0
Upload 			0
&nbsp;
# FTP-User im Home-Dir einsperren:
StayAtHome		true
VirtualChroot	true
&nbsp;
#Gleichzeitige Verbindungen pro User etwas erhöhen
LimitConnection		10
LimitConnectionByUser	3
LimitConnectionByIP		3
&nbsp;
# Wir wollen nicht das gleiche Home-Verzeichnis für alle User, daher wird diese Zeile auskommentiert:
#Home	/home/$USER
&nbsp;
# Standard Dateirechte nach Bedarf anpassen:
DefaultRights		0664 0755</pre></td></tr></table></div>

<p>MySecureShell neu starten:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">/etc/init.d/mysecureshell restart</pre></td></tr></table></div>

<p>Nun kann man z.b. einen User anlegen der per SFTP nur auf einen bestimmten Ordner im Web-Verzeichniss zugreifen kann:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">useradd -d /var/www/ein_projekt -g www-data -s /bin/MySecureShell marvin</pre></td></tr></table></div>

<p>Eine weiteres ausführliches Tutorial zu MySecureShell findet sich unter anderem bei <a href="http://www.howtoforge.de/howto/chrooted-sftp-mit-mysecureshell-auf-debian-etch/">HowtoForge</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lemmingzshadow.net/9/chrooted-sftp-mit-mysecureshell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

