<?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>Thomas Falkner &#187; rootserver</title>
	<atom:link href="http://blog.thomas-falkner.de/tag/rootserver/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Sun, 24 Apr 2011 12:11:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Linux: Mehrere IP-Adressen an ein Netzwerkinterface binden</title>
		<link>http://blog.thomas-falkner.de/2008/08/25/linux-mehrere-ip-adressen-an-ein-netzwerkinterface-binden/</link>
		<comments>http://blog.thomas-falkner.de/2008/08/25/linux-mehrere-ip-adressen-an-ein-netzwerkinterface-binden/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 20:40:44 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rootserver]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=201</guid>
		<description><![CDATA[Manchmal ist es erforderlich mehrere IP-Adressen an ein Netzwerkinterface zu binden. Nur so lassen sich beispielsweise auf einem angemieteten Rootserver mit nur einer Netzwerkkarte Websites unter verschiedenen IP-Adressen hosten &#8211; Voraussetzung dabei ist selbstverst&#228;ndlich, dass der Hoster zus&#228;tzliche IP-Adressen zur Verf&#252;gung stellt. Linux bietet mit dem Konzept der virtuellen Netzwerkinterfaces eine elegante L&#246;sung, um an [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist es erforderlich mehrere IP-Adressen an ein Netzwerkinterface zu binden. Nur so lassen sich beispielsweise auf einem angemieteten Rootserver mit nur einer Netzwerkkarte Websites unter verschiedenen IP-Adressen hosten &#8211; Voraussetzung dabei ist selbstverst&#228;ndlich, dass der Hoster zus&#228;tzliche IP-Adressen zur Verf&#252;gung stellt.</p>
<p>Linux bietet mit dem Konzept der virtuellen Netzwerkinterfaces eine elegante L&#246;sung, um an einen Netzwerkadapter viele IP-Adressen zu binden. Jede physikalisch Netzwerkkarte tr&#228;gt einen eindeutigen Namen, etwa <tt>eth0</tt> f&#252;r die erste Karte oder <tt>eth1</tt> f&#252;r die zweite Netzwerkkarte. F&#252;r jede physikalische Netzwerkarte lassen sich mehrere virtuelle Interfaces mit einer eigenen IP-Adresse konfigurieren. Dazu ist das physikalische Interface (<tt>eth0</tt>, <tt>eth1</tt>, <tt>eth2</tt> usw.) gefolgt von einem Doppelpunkt und der Nummer des zu erstellenden virtuellen Interface anzugeben.  So bezeichnet <tt>eth0:1</tt> das erste virtuelle Interface an der physikalischen Netzwerkkarte <tt>eth0</tt> und eth1:5 das f&#252;nfte virtuelle Interface an der zweiten Netzwerkkarte <tt>eth1</tt>.</p>
<p>Die virtuellen Netzwerkschnittstellen lassen sich mit den gleichen Werkzeugen konfigurieren, wie ihre physikalischen Pendants.</p>
<p>Um beispielsweise manuell die IP-Adresse <tt>192.168.35.100</tt> an die Netzwerkkarte <tt>eth0</tt> zu binden, gen&#252;gt es folgenden Befehl mit root-Rechten auszuf&#252;hren.</p>
<p><code>ifconfig eth0:1 192.168.35.200 netmask 255.255.255.0 broadcast 192.168.35.255 up</code></p>
<p>M&#246;chte man die manuell vorgenommene Konfiguration dauerhaft hinterlegen, w&#228;re unter Debian die <tt>/etc/network/interfaces</tt> wie folgt zu editieren:</p>
<p><code>auto eth0:1<br />
iface eth0:1 inet static<br />
        address 192.168.35.200<br />
        netmask 255.255.255.0<br />
        broadcast 192.163.35.255<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2008/08/25/linux-mehrere-ip-adressen-an-ein-netzwerkinterface-binden/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SSH absichern</title>
		<link>http://blog.thomas-falkner.de/2007/09/25/ssh-absichern/</link>
		<comments>http://blog.thomas-falkner.de/2007/09/25/ssh-absichern/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 17:36:23 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rootserver]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/09/25/ssh-absichern/</guid>
		<description><![CDATA[Vor einiger Zeit schon  habe ich mir vorgenommen etwas dar&#252;ber zu schreiben, wie ein Webserver abgesichert werden kann. Darum nehme ich die heute k&#252;rzlich gestellte Frage zum Anlass endlich damit zu beginnen und fange bei SSH an. Im folgenden beziehe ich mich auf die Implementierung OpenSSH. Die Konfiguration anderer Implementierung wie etwas SSH.com verl&#228;uft &#228;hnlich, [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit schon  habe ich mir vorgenommen etwas dar&#252;ber zu schreiben, wie ein Webserver abgesichert werden kann. Darum nehme ich die<strike> heute</strike> k&#252;rzlich gestellte Frage zum Anlass endlich damit zu beginnen und fange bei SSH an. Im folgenden beziehe ich mich auf die Implementierung <a href="http://www.openssh.com/">OpenSSH</a>. Die Konfiguration anderer Implementierung wie etwas <a href="http://www.ssh.com/">SSH.com</a> verl&#228;uft &#228;hnlich, weicht jedoch im Detail ab.</p>
<p>Bevor wir beginnen, solltest du sicherstellen, dass du eine aktuelle SSH Version benutzt. Unter Debian gen&#252;gt dazu der Einzeiler <tt>apt-get update; apt-get dist-upgrade</tt>. Unter anderen Distributionen stehen &#228;hnliche Werkzeuge zum Update zur Verf&#252;gung wie etwas yast unter Suse.</p>
<p>Nun ist es an der Zeit die Konfigurationsdatei <tt>/etc/ssh/sshd_config</tt> zu bearbeiten. Ich werde im folgenden die sicherheitsrelevanten Optionen durchgehen und kurz kommentieren.</p>
<p><code>ListenAddress 217.79.182.18</code></p>
<p>Wenn ein Server mit mehr als einem Netzwerkinterface ausgestattet ist, kann es sinnvoll sein den Zugriff bestimmte Interfaces zu beschr&#228;nken. Beim klassischen Webserver d&#252;rfte das allerdings nicht der Fall sein.</p>
<p><code>Port 2222</code></p>
<p>Standardm&#228;&#223;ig lauscht der SSH-D&#228;mon auf Port 22. Viele Bruteforceattacken gegen ganze Netzwerksegmente k&#246;nnen durch Nutzung eines anderen Ports erfolgreich abgewehrt werden. Solche Angriffe gehen meist von Botnetzen oder bereits gekaperten Servern aus, die mit gro&#223;er Bandbreite tausende Logins gegen Port 22 feuern. Dabei werden  Standardbenutzernamen (admin, root, httpd, mail usw.) mit leerem Passwort oder Passw&#246;rter aus W&#246;rterb&#252;chern und Passwortlisten durchprobiert. Solche Angriffe k&#246;nnen zwar einen sicher konfigurierten Server nicht gef&#228;hrden, bl&#228;hen aber die Logdateien auf, f&#252;hren zu verminderten Reaktionszeiten und schlimmstenfalls k&#246;nnen sich legitimierte Benutzer ob der vielen Anfragen nicht &#252;ber SSH einloggen. Selbstverst&#228;ndlich bietet die Nutzung eines anderen Ports keinen Schutz gegen gezielte Brutforceangriffe, bei denen dem eigentlichen Angriff ein Portscan vorausgeht. Abhilfe k&#246;nnen hier zum Beispiel <a href="http://www.pettingers.org/code/sshblack.html">sshblack</a> schaffen oder eine Kombination von Snort, Netfilter und iptables. Da DoS-Attacken  kein SSH-spezifisches Problem sind, werde ich an dieser Stelle nicht weiter darauf eingehen.</p>
<p><code>Protocol 2</code></p>
<p>Die Version 1 des SSH-Protokoll enth&#228;lt Designschw&#228;chen, die einen unbefugten Login erm&#246;glichen, und sollte darum nicht benutzt werden.</p>
<p><code>PermitRootLogin no</code></p>
<p>Es ist eine gute Idee root den Zugang &#252;ber SSH zu verwehren. Denn wenn jemand gel&#228;nge sich &#252;ber SSH unbefugt Zugang zum Server zu verschaffen, k&#246;nnte er als unprivilegierter Nutzer nur begrenz Schaden anrichten. Da es ohnehin von Leichtsinn zeugt stets als root zu arbeiten, spricht auch wenig daf&#252;r den direkten Login als root zu erlauben. Wichtig ist auf einen frisch installierten System einen neuen Benutzer anzulegen, <strong>bevor</strong> wir &#252;ber <tt>PermitRootLogin no</tt> root vom SSH-Login ausschlie&#223;en.</p>
<p><code>AllowUsers tom thomasfalkner@thomas-falkner.de<br />
AllowGroups admin</code></p>
<p>Wenn nur bestimmte Nutzer sich via SSH auf dem Server einloggen d&#252;rfen, k&#246;nnen diese &#252;ber <tt>AllowUsers</tt> bestimmt werden. Wenn Benutzer nur von einem bestimmten Host aus Zugang zum Rechner erhalten sollen, kann dass &#252;ber <tt>user@host</tt> geregelt werden. Das kann sinnvoll sein, wenn ein Webdesigner sich nur aus dem Firmennetzwerk, nicht aber von zu Hause auf dem Server anmelden darf. Durch die Option <tt>AllowGroups</tt> kann der Login auf bestimmte Benutzergruppen beschr&#228;nkt werden.<br />
Sollen mehr Benutzer erlaubt als ausgeschlossen werden, ersparen die Gegenst&#252;cke zu <tt>AllowUsers</tt> und <tt>AllowGroups</tt>, <tt>DenyUsers</tt> und <tt>DenyGroups</tt>, eine Menge Tipparbeit.</p>
<p>Doch es ist nicht nur wichtig festzulegen, wer sich &#252;ber SSH anmelden darf, sondern auch welche Authentifizierungsverfahren dazu genutzt werden sollen. Hier greift die Regle: Alles deaktivieren, was nicht ben&#246;tigt wird.</p>
<p>Wer mit dem h&#246;chsten Sicherheitsstandard arbeiten m&#246;chten, sollte ausschlie&#223;lich die <tt>PubKeyAuthentication</tt> nutzen und alle anderen Authentifizierungsverfahren ausschalten.</p>
<p><code>RhostsRSAAuthentication no<br />
HostbasedAuthentication no<br />
KerberosAuthentication no<br />
GSSAPIAuthentication no<br />
RSAAuthentication no<br />
</code></p>
<p>Obwohl die meisten Optionen wie etwa <tt>RhostsRSAAuthentication</tt> per Default abgeschaltet sind, halte ich es f&#252;r sinnvoll sie explizit auf <em>no</em> zu setzen, um eine klare Konfiguration vor Augen zu haben. Ferner w&#228;re es t&#246;richt davon auszugehen, dass die Defaulteinstellungen sich bei neueren Versionen nicht &#228;ndern w&#252;rden. Updates sollten &#252;brigens ohnehin nie ungepr&#252;ft eingespielt werden.</p>
<p>Bevor wir die Passwort basierte Anmeldung mittels <tt>PasswordAuthentication no</tt> und <tt>UsePAM no</tt> vollst&#228;ndig deaktivieren, muss zuerst die Anmeldung &#252;ber <em>PubKey</em> konfiguriert und getestet werden &#8211; sonst laufen wir Gefahr uns selbst auszusperren.</p>
<p>Dazu erg&#228;nzen wir <tt>/etc/ssh/sshd_config</tt> wie folgt:</p>
<p><code>PubkeyAuthentication yes</code><br />
Damit wird die Authentifizierungs per RSA- oder DSA-Schl&#252;ssel aktiviert.</p>
<p><code>AuthorizedKeysFile %h/.ssh/authorized_keys</code></p>
<p>Gibt an, wo die &#246;ffentlichen Schl&#252;ssel auf dem Server gespeichert werden.<br />
Per Default im Homeverzeichnis des jeweiligen Benutzers unter <tt>.ssh/authorized_keys</tt>.</p>
<p>Nun sollte der der SSH-D&#228;mon neu gestartet werden: <tt>sudo /etc/init.d/sshd restart</tt></p>
<p>Damit ist der Server vorbereitet f&#252;r den passwortfreien Login &#252;ber Schl&#252;ssel.  Was fehlt ist der Schl&#252;ssel, oder genauer gesagt das Schl&#252;sselpaar. Da der private Teil des Schl&#252;ssels auf dem Client verbleibt und nur der &#246;ffentliche auf den Server kopiert wird, empfiehlt es sich das Schl&#252;sselpaar auf dem Client zu erzeugen.  Unter UNIX-Derivaten starten wir dazu unter dem Useraccount, der sich sp&#228;ter auf dem Server einloggen k&#246;nnen soll, <tt>ssh-keygen</tt>.</p>
<p><code>ssh-keygen -t dsa</code></p>
<p>Wenn die Voreinstellung best&#228;tigt wird, legt <tt>ssh-keygen</tt> den private Schl&#252;ssel id_dsa als auch den &#246;ffentlich id_dsa_pub unter <tt>~/.ssh</tt> ab. Die Frage nach der Passphrase kann mit 2x Return &#252;bergangen werden, wenn man den Schl&#252;ssel nicht mit einem Passwort sch&#252;tzen m&#246;chte. Eine generelle Empfehlung ob es sinnvoll ist den Schl&#252;ssel mit einem Passwort zu sch&#252;tzen oder nicht, ist schwer m&#246;glich. Wird kann Passwort vergeben, kann jeder sich auf dem Server anmelden, der in Besitz des Schl&#252;ssels ist. Soll hei&#223;en: Wird der Rechner, auf dem der private Schl&#252;ssel hinterlegt ist geknackt oder ger&#228;t in falsche H&#228;nde, steht dem Angreifer auch der Zugang zum Server offen.<br />
Sind die Schl&#252;ssel mit einem Passwort zus&#228;tzlich gesch&#252;tzt, m&#252;sste der Angreifer erst das Passwort per Bruteforce knacken &#8211; was bei ausreichend starken Passwort nicht in angemessener Zeit m&#246;glich ist.<br />
Das h&#246;here Ma&#223; an Sicherheit erkauft man sich jedoch mit der l&#228;stigen Eingabe des Passworts beim Login &#252;ber SSH.</p>
<p>Ist der Schl&#252;ssel je nach Gusto mit oder ohne Passpharse erzeugt, muss er auf den Server &#252;bertragen werden.</p>
<p>Zuerst pr&#252;fen wir, ob es in unserem Homeverzeichnis auf dem Server einen Order .ssh bereits gibt. Wenn nicht, legen wir ihn an. Dazu kann folgender Einzeiler vom Client aus abgesetzt werden:</p>
<p><code>ssh domain.tld -p2222 "test -d .ssh || mkdir .ssh &amp;&amp; chmod 700 .ssh"</code></p>
<p>Wie oben erw&#228;hnt, gehe ich davon aus, dass der User auf dem Client den gleichen Namen tr&#228;gt wie auf dem Server.<br />
Aus Sicherheitsgr&#252;nden ist es unerl&#228;sslich, dass die Zugriffsrechte des <tt>.ssh</tt>-Verzeichnisses auf 700 und die f&#252;r <tt>authorized_keys</tt> auf 600. Ferner m&#252;ssen sowohl Datei als auch Verzeichnis dem anzumeldenden User geh&#246;ren.<br />
Letztere Bedingung erf&#252;llen wir, indem wir Verzeichnis und Datei selbst anlegen, die Zugriffsrechte indes sollten wir explizit setzen.<br />
Auch das l&#228;sst sich zu einem Befehl zusammenfassen:<br />
<code>cat ~/.ssh/id_dsa_pub | ssh domain.tld -p2222 "cat &gt;&gt; .ssh/authorized_keys &amp;&amp; chmod  600 .ssh/authorized_keys"</code></p>
<p>Der passwortlose Login sollte damit funktionieren.</p>
<p>Zu den M&#246;glichkeiten von SSH l&#228;sst sich noch eine Menge schreiben. Zu gegebener Zeit an dieser Stelle mehr.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/09/25/ssh-absichern/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>suPHP</title>
		<link>http://blog.thomas-falkner.de/2007/06/07/suphp/</link>
		<comments>http://blog.thomas-falkner.de/2007/06/07/suphp/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 13:43:21 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rootserver]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/06/07/suphp/</guid>
		<description><![CDATA[Interessante Alternative zu PHP als CGI]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.suphp.org/Home.html">Interessante Alternative</a> zu <a href="http://blog.thomas-falkner.de/2007/05/20/bye-bye-mod_php/">PHP als CGI</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/06/07/suphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bye bye mod_php</title>
		<link>http://blog.thomas-falkner.de/2007/05/20/bye-bye-mod_php/</link>
		<comments>http://blog.thomas-falkner.de/2007/05/20/bye-bye-mod_php/#comments</comments>
		<pubDate>Sun, 20 May 2007 22:02:42 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[rootserver]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/05/20/bye-bye-mod_php/</guid>
		<description><![CDATA[Ich habe meine PHP-Apache-Installationen von mod_php auf php_cgi umgestellt. Anlass zu diesem Schritt gab mir, dass ich keine befriedigende L&#246;sung gefunden habe, um beim Schreibzugriff auf Dateien mit PHP Berechtigungskonflikte zwischen Apache und dem User, dem die Dateien eigentlich geh&#246;ren sollten, auszul&#246;sen. Auch war mir schon lange ein Dorn im Auge, dass mod_php nicht mit [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe meine PHP-Apache-Installationen von mod_php auf php_cgi umgestellt. Anlass zu diesem Schritt gab mir, dass ich keine befriedigende L&#246;sung gefunden habe, um beim Schreibzugriff auf Dateien mit PHP Berechtigungskonflikte zwischen Apache und dem User, dem die Dateien eigentlich geh&#246;ren sollten, auszul&#246;sen. Auch war mir schon lange ein Dorn im Auge, dass mod_php nicht mit Threads umgehen kann und dazu zwingt zum ineffizienten Prefork-Modus zur&#252;ckzukehren. Damit f&#228;llt eine wesentliche Verbesserung von Apache2 gegen&#252;ber 1.3 weg.<br />
Und nicht zuletzt erscheint es mir in Hinblick auf die Serversicherheit keine gute Idee zu sein PHP mit den weitreichenden Befugnissen des Apache laufen zu lassen &#8211; zumal Restriktionen wie open_basedir leicht <a href="http://php-security.org/">umgangen</a> werden k&#246;nnen.</p>
<p>PHP als FastCGI einzubinden stellt zwar einen etwas h&#246;heren Konfigurationsaufwand gegen&#252;ber mod_php dar, der jedoch mit L&#246;sung der oben genannten Probleme belohnt wird. </p>
<p>Sobald ich mal wieder ein Quentchen mehr Zeit finde, werde ich ein Mini-Tuorial f&#252;r Debian 4 an dieser Stelle ver&#246;ffentlichen. Momentan bin ich noch damit befasst den Geschwindigkeitsunterschied zwischen mod_php und der FastCGI-Variante zu messen. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/05/20/bye-bye-mod_php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>wget aufbohren: dotfiles per &#8211;mirror mitkopieren</title>
		<link>http://blog.thomas-falkner.de/2007/04/21/wget-aufbohren-dotfiles-per-mirror-mitkopieren/</link>
		<comments>http://blog.thomas-falkner.de/2007/04/21/wget-aufbohren-dotfiles-per-mirror-mitkopieren/#comments</comments>
		<pubDate>Sat, 21 Apr 2007 14:15:34 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rootserver]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/04/21/wget-aufbohren-dotfiles-per-mirror-mitkopieren/</guid>
		<description><![CDATA[Ich benutze GNU wget gerne um verschiedene Websites per FTP mit dem Parameter --mirror zu spiegeln. Leider werden dabei versteckte Dateien (so genannte dotfiles) wie etwa .htaccess nicht ber&#252;cksichtigt. Nach eingehendem Studium der manpage stellte ich entt&#228;uscht fest, dass wget tats&#228;chlich keine Option zur L&#246;sung des Problem vorsieht. Aber zum Gl&#252;ck l&#228;sst sich GNU wget [...]]]></description>
			<content:encoded><![CDATA[<p>Ich benutze <a href="http://www.gnu.org/software/wget/wget.html">GNU wget</a> gerne um verschiedene Websites per FTP mit dem Parameter <tt>--mirror</tt> zu spiegeln. Leider werden dabei <em>versteckte</em> Dateien (so genannte dotfiles) wie etwa <tt>.htaccess</tt> nicht ber&#252;cksichtigt. Nach eingehendem Studium der manpage stellte ich entt&#228;uscht fest, dass wget tats&#228;chlich keine Option zur L&#246;sung des Problem vorsieht. </p>
<p>Aber zum Gl&#252;ck l&#228;sst sich GNU wget als Open-Source-Software an die eigenen Bed&#252;rfnisse anpassen, so dass ich folgenden <a href="http://www.catb.org/~esr/jargon/html/Q/quick-and-dirty.html">q&#038;d </a>Patch "entwickelte". </p>
<div class="igBar"><span id="lcode-1"><a href="#" onclick="javascript:showPlainTxt('code-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-1">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">--- wget-<span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">10</span>.<span style="color:#800000;color:#800000;">2</span>_orig/src/ftp-basic.<span style="">c</span>&nbsp; &nbsp; &nbsp;<span style="color:#800000;color:#800000;">2005</span>-<span style="color:#800000;color:#800000;">06</span>-<span style="color:#800000;color:#800000;">19</span> <span style="color:#800000;color:#800000;">15</span>:<span style="color:#800000;color:#800000;">47</span>:<span style="color:#800000;color:#800000;">10</span>.<span style="color:#800000;color:#800000;">000000000</span> +<span style="color:#800000;color:#800000;">0200</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+++ wget-<span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">10</span>.<span style="color:#800000;color:#800000;">2</span>/src/ftp-basic.<span style="">c</span> <span style="color:#800000;color:#800000;">2007</span>-<span style="color:#800000;color:#800000;">04</span>-<span style="color:#800000;color:#800000;">21</span> <span style="color:#800000;color:#800000;">14</span>:<span style="color:#800000;color:#800000;">17</span>:<span style="color:#800000;color:#800000;">33</span>.<span style="color:#800000;color:#800000;">000000000</span> +<span style="color:#800000;color:#800000;">0200</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">@@ -<span style="color:#800000;color:#800000;">977</span>,<span style="color:#800000;color:#800000;">7</span> +<span style="color:#800000;color:#800000;">977</span>,<span style="color:#800000;color:#800000;">7</span> @@</div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;uerr_t err;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#008000;">/* Send LIST request.&nbsp; */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-&nbsp; request = ftp_request <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"LIST"</span>, file<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+&nbsp; request = ftp_request <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"LIST -a"</span>, file<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;nwritten = fd_write <span style="color:#006600; font-weight:bold;">&#40;</span>csock, request, strlen <span style="color:#006600; font-weight:bold;">&#40;</span>request<span style="color:#006600; font-weight:bold;">&#41;</span>, -<span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;if <span style="color:#006600; font-weight:bold;">&#40;</span>nwritten &lt;<span style="color:#800000;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><code><br />
wget ftp://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz<br />
tar -xzf wget-1.10.2.tar.gz<br />
patch -p0 < wget-1.10.2_dotfiles<br />
./configure<br />
make<br />
make install<br />
</code></p>
<p>Es gen&#252;gt also <tt>LIST -a</tt> anstatt <tt>LIST</tt> an den FTP-Server zu senden, um wget zu &#252;berreden auch dotfiles rekursiv zu kopieren.<br />
Der Patch ist - wie gesagt - ein &#252;bler Hack, der mir zur schnellen L&#246;sung eines Problems dienen solle. F&#252;r mich funktioniert er gut. Perspektivisch w&#228;re es jedoch w&#252;nschenswert durch einen Parameter zwischen <tt>LIST</tt> und  <tt>LIST -a</tt> w&#228;hlen zu k&#246;nnen. Nach meiner m&#252;ndlichen Diplompr&#252;fung werde ich das sauber implementieren und als Feature vorschlagen.    </p>
<p>EDIT 16:40: <a href="http://www.unixwiz.net/techtips/wget-dotfiles.html">Hier</a> gibt es einen sauberen Patch, allerdings nur f&#252;r Version 1.9.1. Doch es sollte nicht allzu schwer fallen ihn auf die aktuelle Version zu portieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/04/21/wget-aufbohren-dotfiles-per-mirror-mitkopieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wie lange dauert es Sarge zu installieren?</title>
		<link>http://blog.thomas-falkner.de/2007/03/13/wie-lange-dauert-es-sarge-zu-installieren/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/13/wie-lange-dauert-es-sarge-zu-installieren/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 06:26:49 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[rootserver]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/13/wie-lange-dauert-es-sarge-zu-installieren/</guid>
		<description><![CDATA[Seit geschlagenen drei Tagen warte ich nun schon darauf, dass der fast IT-Support einen von mir betreuten Rootserver mit Debian Sarge neu aufsetzt. Im Regelfall soll die Installation rund 60 Minuten beanspruchen - eine durchaus realistische Zeit um automatisch ein Image auf eine Festplatte zu schreiben und das Root-Passwort zu setzen. Aber fast IT scheint [...]]]></description>
			<content:encoded><![CDATA[<p>Seit geschlagenen drei Tagen warte ich nun schon darauf, dass der <a href="http://www.fastit.net/">fast IT</a>-Support einen von mir betreuten Rootserver mit Debian Sarge neu aufsetzt. </p>
<p><img src='http://blog.thomas-falkner.de/wp-content/uploads/2007/03/fastit_sarge.jpg' alt='Neuinstallation' /></p>
<p>Im Regelfall soll die Installation rund 60 Minuten beanspruchen - eine durchaus realistische Zeit um automatisch ein Image auf eine Festplatte zu schreiben und das Root-Passwort zu setzen. Aber fast IT scheint die System noch per Hand mit von CD zu installieren und dabei mit kaputten Laufwerken zu k&#228;mpfen, denn der Support findet nicht einmal Zeit mir zu erkl&#228;ren, warum die Installation so lange dauert. Der Name <em>fast</em> IT scheint mit doch etwas ungl&#252;cklich gew&#228;hlt. <img src='http://blog.thomas-falkner.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/13/wie-lange-dauert-es-sarge-zu-installieren/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

