<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Aus dem Leben eines Szlauszafs (Entries tagged as debian)</title>
    <link>http://th-h.de/blog/</link>
    <description>Immer eine Handvoll Heu unter der Sznauze.</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:thh@greenmeadow.szaf.org" />
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    <managingEditor>thh@inter.net</managingEditor>
<pubDate>Tue, 08 Feb 2011 04:28:31 GMT</pubDate>

    <image>
        <url>http://th-h.de/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Aus dem Leben eines Szlauszafs - Immer eine Handvoll Heu unter der Sznauze.</title>
        <link>http://th-h.de/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Debian 6.0 Squeeze ist released</title>
    <link>http://th-h.de/blog/archives/1679-Debian-6.0-Squeeze-ist-released.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1679-Debian-6.0-Squeeze-ist-released.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1679</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1679</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Seit diesem Wochenende steht jetzt - wie geplant und angekündigt - die aktuelle und brandneue Debian-Version 6.0 &amp;#8220;Squeeze&amp;#8221; &lt;a title=&quot;Debian 6.0 Squeeze veröffentlicht&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1854&amp;amp;entry_id=1679&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/News/2011/20110205a&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;zur Verfügung&lt;/a&gt;. Der Release-Prozess war in diesem Jahr nicht nur von einer Vielzahl von Release-Parties, sondern auch von einer fortlaufenden Berichterstattung via Twitter bzw. identi.ca begleitet.&lt;/p&gt;
&lt;p&gt;Mein &lt;a title=&quot;Ein neuer Homeserver&quot; href=&quot;http://th-h.de/blog/archives/1664-Ein-neuer-Homeserver.html&quot;&gt;neuer Rechner&lt;/a&gt; läuft &lt;a title=&quot;Installation von Debian Squeeze&quot; href=&quot;http://th-h.de/blog/archives/1665-Installation-von-Debian-Squeeze.html&quot;&gt;bekanntlich&lt;/a&gt; bereits unter Debian Squeeze; mit den Updates der bestehenden Server werde ich hingegen noch ein wenig warten, bis möglicherweise bestehende Probleme erkannt und behoben sind, Erfahrungen von anderen Updatern vorliegen, ich wieder über ein größeres Budget an freier Zeit verfüge und mal ein Wochenende für eventuell notwendig werdende Reparaturen zur Verfügung habe.&lt;/p&gt;
&lt;p&gt;Doch Debian hat nicht nur released - man hat die Gelegenheit genutzt und auch direkt den Webseiten ein &lt;a title=&quot;New look for Debian&#039;s websites&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1857&amp;amp;entry_id=1679&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/News/2011/20110205b&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;neues Gesicht&lt;/a&gt; gegeben, also den lange geplanten und vorbereiteten Relaunch pünktlich zum Release-Wochenende umgesetzt.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Sun, 06 Feb 2011 18:36:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1679-guid.html</guid>
    <category>debian</category>
<category>squeeze</category>

</item>
<item>
    <title>DHCP-Server und automatische DNS-Zone-Updates</title>
    <link>http://th-h.de/blog/archives/1666-DHCP-Server-und-automatische-DNS-Zone-Updates.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1666-DHCP-Server-und-automatische-DNS-Zone-Updates.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1666</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1666</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Für lokale Netze ist ein DHCP-Server eine nützliche Einrichtung, ermöglicht er doch die automatische Adreßvergabe. Die meisten Consumer-DSL-Router (und nicht nur diese) haben entsprechende Funktionalitäten eingebaut; noch schöner und flexibler ist es aber natürlich, selbst einen entsprechenden Dienst bereitzustellen, weil man ihn dann genau so konfigurieren kann, wie man ihn gerne hätte, um neben der automatischen Vergabe von IP-Adressen auch bestimmten Rechnern feste Adressen zuzuweisen und zugleich im internen Netz eine Namensauflösung zu organisieren.&lt;/p&gt; 
&lt;p&gt;Dafür bedarf es im Prinzip dreierlei:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Zunächst benötigt man einen DHCP-Server (&lt;em&gt;dhcpd&lt;/em&gt;), bspw. den des ISC, der dann so konfiguriert werden muß, daß er die erwünschten Adressen an die Clients zuweist.&lt;/li&gt; 
&lt;li&gt;Dann benötigt man einen DNS-Server, bspw. den BIND des ISC, der dann so konfiguriert werden muß, daß er Namen im lokalen Netz zu IPs auflöst und umgekehrt lokale IPs zu den richtigen Namen.&lt;/li&gt; 
&lt;li&gt;Und letztlich muß man in einem zweiten Schritt die beiden so miteinander verheiraten, daß der DHCP-Server dem DNS-Server erzählt, welche IPs er an welche Maschinen dynamisch vergeben hat.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;All das ist vergleichsweise einfach unter Debian möglich.&lt;/p&gt; 
&lt;p&gt;Im folgenden Beispiel gehe ich davon aus, daß das lokale Netz den IP-Bereich von 10.0.0.1-10.0.0.254 (&lt;em&gt;10.0.0.1/24&lt;/em&gt;) umfassen soll und die Domain &lt;em&gt;example.org&lt;/em&gt; verwendet wird. Der Host, auf dem DHCP- und DNS-Server laufen, heißt &lt;em&gt;server.example.org&lt;/em&gt; und hat die (fest konfigurierte) IP-Adresse &lt;em&gt;10.0.0.1&lt;/em&gt;.&lt;br /&gt;&lt;/p&gt; &lt;h3&gt;1. Installation und Einrichtung des DNS-Servers&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;aptitude -r install bind9&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt; Die DNS-Zonen für das lokale Netz sollen später dynamische Updates zulassen; aufgrund der dann notwendigen Schreibrechte für den Benutzer &lt;em&gt;bind&lt;/em&gt; auf diese Dateien darf man sie unter Debian nicht in &lt;em&gt;/etc/bind/&lt;/em&gt; anlegen, sondern im dafür vorgesehenen Verzeichnis &lt;em&gt;/var/lib/bind&lt;/em&gt;. Also legen wir eine Zone-Datei &lt;em&gt;/var/lib/bind/example.org&lt;/em&gt; für die Vorwärtsauflösung an, in der auch schon die Maschinen stehen, die feste IP-Adressen vergeben bekommen sollen:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;$ORIGIN .&lt;br /&gt;$TTL 604800&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; 1 week&lt;br /&gt;example.org&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IN SOA&amp;#160; server.example.org. hostmaster.server.example.org. (&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2011012101 ; serial&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 28800&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; refresh (8 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7200&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; retry (2 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 604800&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; expire (1 week)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 39600&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; minimum (11 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; server.example.org.&lt;br /&gt;$ORIGIN example.org.&lt;br /&gt;server&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.1&lt;br /&gt;desktop&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.11&lt;br /&gt;laptop1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.21&lt;br /&gt;laptop2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.22&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Und dasselbe dann für die Rückwärtsauflösung:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;$ORIGIN .&lt;br /&gt;$TTL 604800&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; 1 week&lt;br /&gt;0.0.10.in-addr.arpa&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IN SOA&amp;#160; server.example.org. hostmaster.server.example.org. (&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2011012101 ; serial&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 28800&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; refresh (8 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7200&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; retry (2 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 604800&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; expire (1 week)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 39600&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; minimum (11 hours)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; server.example.org.&lt;br /&gt;$ORIGIN 0.0.10.in-addr.arpa.&lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; PTR&amp;#160;&amp;#160;&amp;#160; server.example.org.&lt;br /&gt;11&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; PTR&amp;#160;&amp;#160;&amp;#160; desktop.example.org.&lt;br /&gt;21&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; PTR&amp;#160;&amp;#160;&amp;#160; laptop1.example.org.&lt;br /&gt;22&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; PTR&amp;#160;&amp;#160;&amp;#160; laptop2.example.org.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Jetzt werden die Zonen in die Nameserver-Konfiguration eingebunden, und zwar durch Anpassen der Datei &lt;em&gt;/etc/bind/named.conf.local&lt;/em&gt;:&lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;zone &amp;#8220;example.org&amp;#8221; {&lt;br /&gt;&amp;#160; type master;&lt;br /&gt;&amp;#160; file &amp;#8220;/var/lib/bind/zone.example.org&amp;#8221;;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;zone &amp;#8220;0.0.10.in-addr.arpa&amp;#8221; {&lt;br /&gt;&amp;#160; type master;&lt;br /&gt;&amp;#160; file &amp;#8220;/var/lib/bind/zone.10.0.0&amp;#8221;;&lt;br /&gt;};&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Nach einem Reload der Zonen (&lt;code&gt;rndc reload&lt;/code&gt;) sollte die Auflösung vor- und rückwärts funktionieren, was man mit &lt;code&gt;host laptop1.example.org&lt;/code&gt; und dann mit &lt;code&gt;host 10.0.0.21&lt;/code&gt; testen kann.&lt;/p&gt; 
&lt;h3&gt;2. Installation und Einrichtung des DHCP-Servers&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;aptitude -r install isc-dhcp-server&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Nun ist &lt;em&gt;/etc/dhcp/dhcpd.conf&lt;/em&gt; (ggf. nach Sicherung der Originaldatei) anzupassen:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;server-name Server;&lt;br /&gt;&lt;br /&gt;option domain-name &amp;#8220;example.org&amp;#8221;;&lt;br /&gt;option subnet-mask 255.255.255.0;&lt;br /&gt;option domain-name-servers 10.0.0.1; &lt;em&gt;# der oder die DNS-Server&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;default-lease-time 86400; &lt;em&gt;# 24 h&lt;/em&gt;&lt;br /&gt;max-lease-time 172800;&amp;#160;&amp;#160;&amp;#160; &lt;em&gt;# 48 h&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;authoritative;&lt;/p&gt; 
&lt;p&gt;ignore client-updates;&lt;br /&gt;&lt;br /&gt;subnet 10.0.0.0 netmask 255.255.255.0 {&lt;br /&gt;&amp;#160; range 10.0.0.101 10.0.0.199; &lt;em&gt;# DHCP-Adressen werden zwischen .101 und .199 vergeben&lt;/em&gt;&lt;br /&gt;&amp;#160; option broadcast-address 10.0.0.255;&lt;br /&gt;&amp;#160; option routers 10.0.0.200; &lt;em&gt;# das Gateway ins Internet, bspw. der DSL-Router&lt;/em&gt;&lt;br /&gt;}&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Das genügt zunächst einmal; nach einem &lt;code&gt;/etc/init.d/isc-dhcp-server restart&lt;/code&gt; sollte der DHCP-Dienst funktionieren und IP-Adressen zwischen 10.0.0.101 und 10.0.0.199 vergeben. Die vergebenen Adressen lassen sich unter &lt;em&gt;/var/lib/dhcp/dhcpd.leases&lt;/em&gt; ersehen.&lt;/p&gt; 
&lt;p&gt;Im Logfile (standardmäßig &lt;em&gt;/var/log/daemon.log&lt;/em&gt;) kann man die Vergabe der Leases verfolgen; dort ersieht man auch die MAC-Adressen der Hosts, die sich per DHCP Adressen holen. Mit Hilfe dieser MAC-Adressen kann man dann den Hosts, die feste Adressen per DHCP vergeben erhalten sollen (im Beispiel sind das &lt;em&gt;desktop&lt;/em&gt;, &lt;em&gt;laptop1&lt;/em&gt; und &lt;em&gt;laptop2&lt;/em&gt;), ebensolche zuweisen. Nehmen wir an, &lt;em&gt;desktop &lt;/em&gt;hat die MAC-Adresse &lt;em&gt;00:30:05:5a:db:a0&lt;/em&gt;, dann müßte der entsprechende Eintrag in der &lt;em&gt;/etc/dhcp/dhcpd.conf &lt;/em&gt;folgendermaßen lauten:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;host desktop {&lt;br /&gt;&amp;#160; hardware ethernet 00:30:05:5a:db:a0;&lt;br /&gt;&amp;#160; fixed-address 10.0.0.11;&lt;br /&gt;}&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Nach einem erneuten Restart des DHCP-Servers wird &lt;em&gt;desktop&lt;/em&gt; jetzt immer fest diese DHCP-Adresse zugewiesen bekommen.&lt;/p&gt; 
&lt;h3&gt;3. Dynamische Aktualisierung der DNS-Zonen&lt;/h3&gt; 
&lt;p&gt;Der letzte Schritt sorgt jetzt dafür, daß durch den DHCP-Server dynamisch vergebene Adressen (10.0.0.101-199) in den Zonen-Dateien des Nameservers mit dem entsprechenden Namen erfasst werden. Diese Updates kann man entweder durch jedes Programm, das auf dem Server läuft, erlauben, oder kryptographisch absichern. Ich stelle hier ersteres dar.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Die Konfiguration des DNS-Servers in &lt;em&gt;/etc/bind/named.conf.local&lt;/em&gt; ist folgendermaßen zu ergänzen (fettgedruckt):&lt;/p&gt; 
&lt;blockquote&gt;
&lt;p&gt;zone &amp;#8220;example.org&amp;#8221; {&lt;br /&gt;&amp;#160; type master;&lt;br /&gt;&amp;#160; file &amp;#8220;/var/lib/bind/zone.example.org&amp;#8221;;&lt;br /&gt; &lt;strong&gt;allow-update { localhost; };&lt;/strong&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;zone &amp;#8220;0.0.10.in-addr.arpa&amp;#8221; {&lt;br /&gt;&amp;#160; type master;&lt;br /&gt;&amp;#160; file &amp;#8220;/var/lib/bind/zone.10.0.0&amp;#8221;;&lt;br /&gt; &lt;strong&gt;allow-update { localhost; };&lt;/strong&gt;&lt;br /&gt;};&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;Reloaden der Konfiguration nicht vergessen! &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Die Konfiguration des DHCP-Servers in &lt;em&gt;/etc/dhcp/dhcpd.conf&lt;/em&gt; ist folgendermaßen zu ergänzen (fettgedruckt):&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;[...]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ddns-update-style interim;&lt;br /&gt;&lt;/strong&gt;ignore client-updates;&lt;br /&gt;&lt;br /&gt;subnet 10.0.0.0 netmask 255.255.255.0 {&lt;br /&gt;&amp;#160; range 10.0.0.101 10.0.0.199; # DHCP-Adressen werden zwischen .101 und .199 vergeben&lt;br /&gt;&amp;#160; option broadcast-address 10.0.0.255;&lt;br /&gt;&amp;#160; option routers 10.0.0.200; # das Gateway ins Internet, bspw. der DSL-Router&lt;br /&gt;&lt;strong&gt;&amp;#160; ddns-domainname &amp;#8220;gast.example.org&amp;#8221;;&lt;br /&gt;&lt;br /&gt;&amp;#160; zone example.org. {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; primary 127.0.0.1;&lt;br /&gt;&amp;#160; }&lt;br /&gt;&lt;br /&gt;&amp;#160; zone 0.0.10.in-addr.arpa. {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; primary 127.0.0.1;&lt;br /&gt;&amp;#160; }&lt;/strong&gt;&lt;br /&gt;}&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Restart des DHCP-Servers nicht vergessen!&lt;/p&gt; 
&lt;p&gt;Nunmehr wird die Maschine, die sich - bspw. - als &lt;em&gt;gastnetbook&lt;/em&gt; meldet und eine IP möchtet, bspw. die IP &lt;em&gt;10.0.0.105&lt;/em&gt; zugewiesen bekommen; in die Nameserver-Zonen werden jetzt entsprechende Einträge für &lt;em&gt;10.0.0.105&lt;/em&gt; und &lt;em&gt;gastnetbook.gast.example.org&lt;/em&gt; vorgenommen. Das erfolgt zunächst in Dateien, die den Namen der jeweiligen Zone plus die Endung &amp;#8220;.jnl&amp;#8221; (für &amp;#8220;Journal&amp;#8221;) tragen; regelmäßig werden aber auch die Zonendateien aktualisiert.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Manuelle Änderungen der DNS-Zonen dürfen dann nicht mehr ohne weiteres vorgenommen werden!&lt;/strong&gt; Zunächst müssen die dynamischen Updates unterbrochen werden, danach kann man Änderungen vornehmen und die dynamischen Updates wieder starten:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;rndc freeze example.org&lt;br /&gt;vim /var/lib/bind/zone.example.org&lt;br /&gt;rndc thaw example.org&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;oder&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;rndc freeze 0.0.10.in-addr.arpa &lt;br /&gt;
vim /var/lib/bind/zone.10.0.0&lt;br /&gt;
rndc thaw 0.0.10.in-addr.arpa &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 21 Jan 2011 19:46:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1666-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>dhcp</category>
<category>dns</category>
<category>linux</category>
<category>squeeze</category>

</item>
<item>
    <title>Installation von Debian Squeeze</title>
    <link>http://th-h.de/blog/archives/1665-Installation-von-Debian-Squeeze.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1665-Installation-von-Debian-Squeeze.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1665</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1665</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Gestern schrieb ich schon, daß ich mal wieder wahrlich &lt;a title=&quot;Erledigungen, Erledigungen, nicht als Erledigungen ...&quot; href=&quot;http://th-h.de/blog/archives/1663-Erledigungen,-Erledigungen,-nicht-als-Erledigungen-....html&quot;&gt;zu nichts komme&lt;/a&gt; (jedenfalls nicht zu den Sachen, die ich mir vorgenommen hatte) - daher mußte bislang auch die Einrichtung des &lt;a title=&quot;Ein neuer Homeserver&quot; href=&quot;http://th-h.de/blog/archives/1664-Ein-neuer-Homeserver.html&quot;&gt;neuen Rechners&lt;/a&gt; (die ich eigentlich in der ersten Woche des neuen Jahres abzuschließen hoffte) zurückstehen. Heute habe ich damit aber dann einmal - mit Unterstützung aus dem IRC - angefangen und ein &lt;strong&gt;Debian Squeeze&lt;/strong&gt; (dessen Release ja unmittelbar bevorsteht) installiert. Da die Maschine per KVM-Switch an Monitor, Tastatur und Maus hängt, habe ich mich mittlerweile entschlossen, sie nicht nur als Server, sondern auch als Desktop zu nutzen, auch um einmal ein Gefühl dafür zu bekommen, wie sich ein Linux auf dem Desktop so anfühlt - denn obschon ich seit gut 10 Jahren mit Linux als Server-OS umgehen, arbeite ich auf dem Desktop immer noch unter Windows (zunehmend ergänzt um Tools aus der unixoiden Welt).&lt;/p&gt; 
&lt;p&gt;Aufgrund meiner bisher mangelnden Erfahrung mit der Installation eines Systems (ich kenne den Arbeitsgang in der Regel erst beginnend mit der Anpassung eines vom Provider aufgespielten Images und habe Erfahrung im wesentlichen mit dem Zugang via SSH, nicht mit der Arbeit an der Konsole ...) und der Tatsache, daß Debian für das bevorstehende Release alle nicht-freie Firmware aus dem &lt;em&gt;main&lt;/em&gt;-Archiv entfernt hat, befürchtete ich erhebliche Probleme, schließlich sind mir aus den vorgenannten Gründen im weitesten Sinne hardwarenahe Arbeiten (Treiber, Kernel, Partitionierung von Platten, Auswahl des Filesystems und Einrichtung von RAID, LVM und Co.) nicht wirklich vertraut. Der Ablauf erwies sich aber als angenehm einfach.&lt;/p&gt; 
&lt;p&gt;Nach dem &lt;a title=&quot;debian-installer&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1764&amp;amp;entry_id=1665&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/devel/debian-installer/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Herunterladen&lt;/a&gt; eines Netinstall-Images aus den täglichen Snapshots und dessen Brennen auf CD wurde mir nach dem Boot angeboten, den graphischen oder den konsolenorientierten Installer zu starten, wobei ich mich für letzteres entschied; danach wurde ich durch die Ersteinrichtung geführt, bis ... tatsächlich eine fehlende Firmware (&lt;em&gt;rtl8168d-1.fw&lt;/em&gt;) gefunden wurde, sinnigerweise ausgerechnet für die (Realtek-)Netzwerkkarte (ohne die sich ein Netinstall dann vermutlich nicht so richtig erfolgreich gestalten dürfte). Glücklicherweise hatte ich mich bereits vorher informiert, wo Debian die nicht-freie Firmware jetzt versteckt hat, so daß ich den entsprechen &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1765&amp;amp;entry_id=1665&quot; title=&quot;http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/&quot;  onmouseover=&quot;window.status=&#039;http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Tarball&lt;/a&gt; herunterladen und via USB-Stick bereitstellen konnte. Das half aber nicht; weder der Tarball noch die ausgepackten Debs konnten den Installer glücklich machen. Weitere Suche mit dem Namen der vermißten Firmware führte dann zu einem &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1766&amp;amp;entry_id=1665&quot; title=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609388&quot;  onmouseover=&quot;window.status=&#039;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609388&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Bugreport&lt;/a&gt; und dem entsprechenden &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1767&amp;amp;entry_id=1665&quot; title=&quot;http://packages.debian.org/sid/firmware-realtek&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/sid/firmware-realtek&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Firmware-Paket&lt;/a&gt; mit Realtek-Firmware; ich habe dann entsprechend das dort verlinkte Tar-Archiv heruntergeladen, ausgepackt und - nach mehreren erfolglosen Versuchen - die Realtek-Firmware in das Root-Verzeichnis des USB-Sticks gepackt. Jetzt war der Installer glücklich.&lt;/p&gt; 
&lt;p&gt;Im weiteren Verlauf gelang es mir allerdings dennoch nicht, eine Netzwerkverbindung aufzubauen, was die weitere Installation etwas hinderte, insbesondere soweit Repositories eingebunden und Sicherheitsupdates geladen werden sollte; nach deren Abschluss und einem Reboot war jedoch eine Netzwerkverbindung vorhanden. Hilfreich für den absoluten Anfänger &lt;em&gt;*hüstel*&lt;/em&gt; ist es übrigens in solchen Fällen zu wissen, daß man mit Alt-4 ein Terminal mit den Logs und Fehlermeldungen angezeigt bekommt, mit Alt-1 wieder zurückkomt und ggf. auf einem der anderen TTYs eine Shell starten kann. &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1768&amp;amp;entry_id=1665&quot; title=&quot;http://www.debian.org/releases/squeeze/amd64/ch06s01.html.en&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/squeeze/amd64/ch06s01.html.en&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Dokumentiert&lt;/a&gt; ist das im &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1769&amp;amp;entry_id=1665&quot; title=&quot;http://www.debian.org/releases/squeeze/amd64/&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/squeeze/amd64/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Install-Manual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[&lt;strong&gt;Update vom 23.01.2011:&lt;/strong&gt; Offenbar handelt es sich bei dem Problem mit der Firmware für die Realtek-Netzwerkkarte noch um einen Bug, der mit dem ersten Point-Release behoben werden soll - sowohl hinsichtlich der Probleme des Installers, die Firmware auf dem USB-Stick zu finden, als auch hinsichtlich der fehlenden Netzwerkkonnektivität nach dem Finden der Firmware.]&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Der Rest der Installation bis zum ersten Reboot verlief ereignislos, gut unterstützt und dokumentiert - es gelang mir auch auf Anhieb (naja, mit einigen Versuchen), aus meinen beiden Festplatten ein RAID 1 (mit gesonderter Bootpartition) zu erstellen, darüber LVM zu legen, die einzelnen &lt;em&gt;Logical Volumes&lt;/em&gt; anzulegen und zu formatieren, ohne daß ich (abgesehen von Hinweisen zu der grundsätzlichen Auswahl des Filesystems und der Partitionierung) irgendeine Unterstützung via IRC gebraucht hätte.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Nach dem Reboot saß ich dann zum ersten Mal vor einer graphischen 
Konsole mit Gnome - und ich muß sagen, das gefällt mir bisher gut. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
Momentan muß ich mich dort noch zurechtfinden, aber immerhin kann die 
Maschine schonmal MP3s abspielen (nächster Eintrag auf der ToDo-Liste: 
Musikbibliothek mit korrekten MP3-Tags versehen ... &lt;em&gt;*seufz*&lt;/em&gt;).&lt;/p&gt; 
&lt;p&gt;Auch der Weg dorthin war allerdings nicht ganz ohne Probleme, denn ich mußte
 dem System noch beibringen, die On-Board-Soundkarte richtig 
anzusteuern. Insoweit hilfreich war nach längerem Googeln - wie gesagt, 
bei solchen Dingen war ich bislang völlig ahnungslos - ein Eintrag im &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1770&amp;amp;entry_id=1665&quot; title=&quot;http://wiki.ubuntuusers.de/Soundkarten_konfigurieren/HDA&quot;  onmouseover=&quot;window.status=&#039;http://wiki.ubuntuusers.de/Soundkarten_konfigurieren/HDA&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Ubuntuusers-Wiki&lt;/a&gt;, dem ich die Lösung für mein Problem entnehmen konnte: die Datei &lt;em&gt;/etc/modprobe.d/alsa-base.conf&lt;/em&gt; möchte um den Eintrag &lt;em&gt;options snd-hda-intel model=auto&lt;/em&gt; ergänzt werden. Statt dem dort empfohlenen Reboot (das erschien mir so ... Windows-artig) habe ich mich dann auf ein modprobe snd-hda-intel beschränkt - und auch das hat genügt. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Jetzt
 muß &amp;#8220;nur noch&amp;#8221; alles eingerichtet werden - insbesondere deshalb 
bestimmt ein großer Spaß, weil ich nach dem Einrichten des Basis-Systems
 den Fehler gemacht hatte, die zu installierenden weiteren Pakete mittels &lt;em&gt;tasksel&lt;/em&gt; auszuwählen. Für den Desktop, von dem ich bekanntlich keine Ahnung habe, mag
 das noch eine gute Idee gewesen sein, aber der Rest - Mailserver, 
Webserver, Datenbankserver, ... - entspricht nun wirklich gar nicht 
meinen (teilweise sicherlich speziellen) Vorstellungen. Also werde ich 
das in den nächsten Tagen einfach neu machen. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Insgesamt muß ich sagen, daß meine erste Debian-Installation (auf aktueller Hardware) mich sehr positiv überrascht hat.&lt;/p&gt;
&lt;p&gt;Der
 einzige Punkt, bei dem ich mir mehr Dokumentation gewünscht hätte, war 
die richtige Vorgehensweise, um dem Installer die fehlende Firmware 
unterzuschieben. Schön zu wissen, daß man sich .debs herunterladen (die 
dem Installer aber AFAIS nicht helfen, also nur für Updates hilfreich 
sein dürften) oder die notwendige Firmware &amp;#8220;bspw. via USB-Stick&amp;#8221; 
bereitgestellt werden kann; noch schöner wäre aber zu erläutern, wo und 
wie man ggf. die einzelnen Firmware-Dateien findet und wo genau auf dem 
Stick sie dann bereitgestellt werden sollen. (Vielleicht habe ich die 
entsprechende Doku einfach nicht gefunden, das glaube ich in diesem Fall
 aber noch nicht einmal.) Der Kampf mit der Soundkarte dürfte hingegen 
für jemanden, der so ungefähr weiß, was er tut, nicht problematisch 
sein; die Anleitung im Ubuntuusers-Wiki ist auch völlig hinreichend. (Ob
 man sie aus der Installationsanleitung verlinken sollte, sei 
dahingestellt; ich habe, ehrlich gesagt, nicht einmal nachgeschaut, ob 
das nicht vielleicht sogar der Fall ist.)&lt;/p&gt;
&lt;p&gt; &lt;em&gt;[&lt;strong&gt;Update vom 23.01.2011:&lt;/strong&gt; Vermutlich ist die Doku über das Bereitstellen zusätzlicher Firmware völlig korrekt und das Problem besteht im Installer bzw. dem konkreten Firmware-Paket. Siehe dazu auch die Errata-Seite des Debian-Installers.]&lt;/em&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 20 Jan 2011 22:47:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1665-guid.html</guid>
    <category>debian</category>
<category>linux</category>
<category>squeeze</category>

</item>
<item>
    <title>Backup mit duply und duplicity</title>
    <link>http://th-h.de/blog/archives/1651-Backup-mit-duply-und-duplicity.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1651-Backup-mit-duply-und-duplicity.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1651</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1651</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;blockquote&gt; 
&lt;p&gt;Niemand will Backup. Alle wollen Restore.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p align=&quot;right&quot;&gt;&lt;em&gt;(&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1759&amp;amp;entry_id=1651&quot; title=&quot;http://kris.koehntopp.de/&quot;  onmouseover=&quot;window.status=&#039;http://kris.koehntopp.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Kristian Köhntopp&lt;/a&gt; zitiert einen Vertriebler - &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1760&amp;amp;entry_id=1651&quot; title=&quot;http://www.iks-jena.de/mitarb/lutz/usenet/Fachbegriffe.der.Informatik.html&quot;  onmouseover=&quot;window.status=&#039;http://www.iks-jena.de/mitarb/lutz/usenet/Fachbegriffe.der.Informatik.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Fachbegriffe der Informatik&lt;/a&gt; #125)&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Regelmäßige Backups sind wichtig und auch durch redundante Systeme wie RAIDs nicht zu ersetzen; ganz abgesehen davon, daß bei einem RAID 1 gerne die - meistens ja zum selben Zeitpunkt wie die erste in Betrieb genommene - zweite Platte beim notwendigen Rebuild zusammenbricht, schützt ein RAID auch nur gegen Datenverlust durch Ausfall einer Festplatte, aber weder gegen versehentliches oder böswilliges Löschen, Überschreiben oder Verändern von Daten, noch kann es gegen einen fatalen Schaden des gesamten Systems (Brand, Diebstahl, ...) schützen. Backups sollten daher&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;regelmäßig durchgeführt werden,&lt;/li&gt; 
&lt;li&gt;versioniert sein (so daß man einen längeren Zeitraum zurückgehen kann) und&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;off-site transferiert werden können.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Zumindest dann, wenn man keine Kontrolle über die Infrastruktur hat, auf der die Backups gespeichert und über die sie transportiert werden, sollten Backups auch verschlüsselt sein. Diese letzte Anforderung ist typisch für sog. &amp;#8220;Rootserver&amp;#8221;, also Mietserver, zu denen bei üblichen Angeboten auch ein sog. &amp;#8220;Backupspace&amp;#8221;, also Speicherplatz auf einem Storage gehört, auf den zumeist nur per (unverschlüsseltem) FTP zugegriffen werden kann. Selbst wenn man dem Provider und seinen Mitarbeitern vertraut, kann man nicht ausschließen, daß auch Dritte - andere Kunden, ... - zumindest den unverschlüsselten Datenverkehr zwischen dem zu sichernden Server und dem Storage &amp;#8220;belauschen&amp;#8221; können. Wenn man seine Backups also unverschlüsselt überspielt, kann die gesamte Konfiguration samt aller Paßworte usw. usf. mitgelesen werden.&lt;/p&gt; 
&lt;p&gt;Schließlich gibt es eine letzte Anforderung für sinnvolle Backups: sie sollten, einmal eingerichtet, möglichst wenig Aufwand bedeuten, optimalerweise automatisiert sein, denn nur dann werden sie auch wirklich regelmäßig durchgeführt.&lt;/p&gt; 
&lt;p&gt;Alle zuvor genannten Anforderungen erfüllt das Tool &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1754&amp;amp;entry_id=1651&quot; title=&quot;http://duplicity.nongnu.org/&quot;  onmouseover=&quot;window.status=&#039;http://duplicity.nongnu.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;strong&gt;duplicity&lt;/strong&gt;&lt;/a&gt;, für das die c&amp;#8217;t bereits anno 2006 ein Frontend namens &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1755&amp;amp;entry_id=1651&quot; title=&quot;http://www.heise.de/security/artikel/Hinter-Schloss-und-Siegel-270834.html&quot;  onmouseover=&quot;window.status=&#039;http://www.heise.de/security/artikel/Hinter-Schloss-und-Siegel-270834.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;strong&gt;ftplicity&lt;/strong&gt;&lt;/a&gt; entwickelt hat, das nunmehr unter dem Namen &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1756&amp;amp;entry_id=1651&quot; title=&quot;http://duply.net/&quot;  onmouseover=&quot;window.status=&#039;http://duply.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;strong&gt;duply&lt;/strong&gt;&lt;/a&gt; weiterentwickelt wird. &lt;strong&gt;duply&lt;/strong&gt; unterscheidet sich u.a. dadurch von &lt;strong&gt;ftplicity&lt;/strong&gt;, daß es nicht nur die Konfiguration der Übertragung via FTP unterstützt, sondern auch auf anderem Weg (was dann auch die Namensänderung erklärt).&lt;/p&gt; 
&lt;p&gt; &lt;strong&gt;duplicity&lt;/strong&gt; sichert Dateien und Verzeichnisse in (nicht gepackte!) &lt;em&gt;tar&lt;/em&gt;-Archive, verschlüsselt diese vermittels &lt;em&gt;GnuPG&lt;/em&gt; und überträgt die Sicherungen in kleinen Häppchen auf verschiedenen Wegen (lokal, FTP, SCP, rsync, ...) auf das Sicherungsmedium; dabei werden inkrementielle Backups über den &lt;em&gt;rsync&lt;/em&gt;-Algorithmus erstellt, d.h. nicht alle veränderten Dateien gesichert, sondern ggf. nur ein diff, was wiederum Platz und Bandbreite spart. &lt;strong&gt;duplicity&lt;/strong&gt; dürfte in den meisten Distributionen paketiert sein, &lt;strong&gt;duply&lt;/strong&gt; ist es in Debian ab Squeeze, kann aber in jedem Fall trivial installiert werden.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Eine mögliche Umsetzung für einen Mietserver sieht - unter Debian Lenny - so aus:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;em&gt;duplicity &lt;/em&gt;und &lt;em&gt;ncftp &lt;/em&gt;installieren: &lt;code&gt;aptitude -r install duplicity ncftp&lt;/code&gt;&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;em&gt;duply &lt;/em&gt;(in &lt;em&gt;/usr/local/bin&lt;/em&gt;) installieren:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;cd /tmp&lt;br /&gt;wget -O duply_1.5.4.2.tgz http://sourceforge.net/projects/ftplicity/files/duply%20%28simple%20duplicity%29/1.5.x/duply_1.5.4.2.tgz/download&lt;br /&gt;tar -xzf duply_1.5.4.2.tgz &lt;br /&gt;cp duply_1.5.4.2/duply /usr/local/bin/&lt;br /&gt;rm duply_1.5.4.2.tgz &lt;br /&gt;rm -r duply_1.5.4.2&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
&lt;li&gt;Alternativ (Debian Squeeze): &lt;code&gt;aptitude -r install duply&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Da der gesamte Server gesichert werden soll, läuft der Backupprozess am besten mit Root-Rechten. Wir brauchen jetzt also einen GPG-Key für &lt;em&gt;root &lt;/em&gt;und richten dann das Backup ein:&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt; &lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;cd /root&lt;br /&gt;gpg --gen-key&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
&lt;li&gt;Wenn nicht genug Entropie vorhanden ist, um den Key zu erzeugen, empfiehlt es sich, bspw. durch mehrere größere Downloads für Netzwerkverkehr und Belastung der Festplatten zu sorgen, um den Pool aufzufüllen. Key-ID und Paßwort des erzeugten Schlüssels benötigt man im nächsten Schritt zur Einrichtung des Backups; der Name des Backups kann frei gewählt werden:&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;duply &lt;em&gt;NAME&lt;/em&gt; create&lt;br /&gt;vim .duply/&lt;em&gt;NAME&lt;/em&gt;/conf&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
&lt;li&gt;In der Konfigurationsdatei sind nun zumindest einzutragen








&lt;ul&gt; 
&lt;li&gt;die ID des erzeugten GPG-Schlüssels (GPG_KEY),&lt;/li&gt; 
&lt;li&gt;das Paßwort desselben (GPG_PW),&lt;/li&gt; 
&lt;li&gt;das Backup-Ziel (FTP-Server und ggf. Verzeichnis, Benutzername, Kennwort: TARGET, TARGET_USER, TARGET_PASS) und&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;den Pfad, der gesichert werden soll (im Zweifel &amp;#8220;/&amp;#8221;: SOURCE).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Für die Einzelheiten und fortgeschrittene Konfigurationsmöglichkeiten sei auf die Kommentare innerhalb der Datei und die Dokumentation von &lt;strong&gt;duplicity &lt;/strong&gt;und &lt;strong&gt;duply &lt;/strong&gt;verwiesen.&lt;/p&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Als nächstes erstellt man eine Liste der Dateien, die nicht gesichert werden sollen, die mindestens spezielle Verzeichnisse wie &lt;em&gt;/dev&lt;/em&gt; und &lt;em&gt;/proc&lt;/em&gt; enthalten sollte: &lt;code&gt;vim .duply/&lt;em&gt;NAME&lt;/em&gt;/exclude&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;/dev/*&lt;br /&gt;/proc/*&lt;br /&gt;/sys/*&lt;br /&gt;/tmp/*&lt;br /&gt;/var/tmp/*&lt;br /&gt;/var/run/*&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
&lt;li&gt;Danach kann man noch Scripts hinterlegen, die vor oder nach dem Backuplauf ausgeführt werden; bspw. kann es sich vor dem Backup empfehlen, Datenbanken zu dumpen. Diese Scripts heißen dementspechend &lt;em&gt;pre &lt;/em&gt;und &lt;em&gt;post&lt;/em&gt;, können zum Beispiel Shellscripts sein und müssen







&lt;ul&gt; 
&lt;li&gt;ausführbar sein (&lt;code&gt;chmod 700 .duply/&lt;em&gt;NAME&lt;/em&gt;/pre&lt;/code&gt;) und&lt;/li&gt; 
&lt;li&gt;einen entsprechenden &lt;em&gt;shebang&lt;/em&gt; (&lt;code&gt;#!/bin/bash&lt;/code&gt;) enthalten.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Wenn das alles paßt, kann man nunmehr sein erstes Backup starten: &lt;code&gt;duply NAME backup&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Danach sollte man das komplette Verzeichnis &lt;em&gt;.duply&lt;/em&gt; (das dann auch eine Kopie des GPG-Schlüssels enthält) sichern (nicht auf den Backupspace, sondern an einen sicheren Ort!).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Schließlich kann man noch in die Crontab von &lt;em&gt;root &lt;/em&gt;einen entsprechenden Eintrag einfügen:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;00 5 * * * /usr/local/bin/duply &lt;em&gt;NAME &lt;/em&gt;backup&lt;br /&gt;00 6 1 * * /usr/local/bin/duply &lt;em&gt;NAME &lt;/em&gt;full &amp;amp;&amp;amp; /usr/local/bin/duply &lt;em&gt;NAME&lt;/em&gt; purge --force&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Fertig. Viel Erfolg!&lt;/p&gt; 
&lt;p&gt;In gleicher Weise ist es möglich, weitere Backups zu definieren, die bspw. nur &lt;em&gt;/home&lt;/em&gt; oder &lt;em&gt;/etc&lt;/em&gt; (oder &lt;em&gt;/var/mail&lt;/em&gt; ...) sichern, das dann aber häufiger.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 13 Jan 2011 18:18:15 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1651-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>duplicity</category>
<category>lenny</category>
<category>linux</category>

</item>
<item>
    <title>Neustart von Diensten nach Updates - checkrestart</title>
    <link>http://th-h.de/blog/archives/1649-Neustart-von-Diensten-nach-Updates-checkrestart.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1649-Neustart-von-Diensten-nach-Updates-checkrestart.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1649</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1649</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Als Hobby-Admin &lt;em&gt;*räusper*&lt;/em&gt; lernt man ständig dazu. Bekannt und bewußt war mir schon, daß nach (Sicherheits-)Updates von Bibliotheken, die von verschiedenen 
Programmen genutzt werden (man denken an OpenSSL), die entsprechenden 
laufenden Prozesse neu gestartet werden müssen, weil sie nur dann die dynamisch geladenen Bibliotheken neu laden und zuvor mit der alten Version arbeiten, was insbesondere bei sicherheitsrelevanten Updates nicht besonders hilfreich ist. Bisher ging ich allerdings (blauäugig) davon aus, daß die Paketverwaltung das schon richten wird. Durch einen &lt;a title=&quot;&amp;lt;AANLkTim9vAt9tt3Er2uHDZiOx-nW_Xm-NimAtdKjUw=h@mail.gmail.com&amp;gt;&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1721&amp;amp;entry_id=1649&quot;  onmouseover=&quot;window.status=&#039;http://lists.debian.org/debian-devel/2011/01/msg00227.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Beitrag&lt;/a&gt; von &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1722&amp;amp;entry_id=1649&quot; title=&quot;http://wiki.debian.org/PaulWise&quot;  onmouseover=&quot;window.status=&#039;http://wiki.debian.org/PaulWise&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Paul Wise&lt;/a&gt; in der Debian-Developer-Mailingliste wurde mir nun bewußt, daß das - jedenfalls / auch unter Debian - nicht der Fall ist, die betreffenden Dienste also manuell neu gestartet werden müssen.&lt;/p&gt; 
&lt;p&gt;Hilfreich ist in diesem Zusammenhang das im Paket &lt;em&gt;debian-goodies&lt;/em&gt; enthaltene Tool &lt;em&gt;checkrestart&lt;/em&gt;, das überprüft, welche laufenden Prozesse noch auf Dateien zugreifen, die mittlerweile gelöscht wurden, und diese auflistet (zusammen mit ggf. vorhandenen init-Scripts, um die Dienste neu zu starten).&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Mon, 10 Jan 2011 21:06:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1649-guid.html</guid>
    <category>debian</category>
<category>lenny</category>

</item>
<item>
    <title>Mantis Bug Tracker und Mantis Graphs 1.0</title>
    <link>http://th-h.de/blog/archives/1589-Mantis-Bug-Tracker-und-Mantis-Graphs-1.0.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1589-Mantis-Bug-Tracker-und-Mantis-Graphs-1.0.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1589</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1589</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;a title=&quot;Mantis Bug Tracker&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1596&amp;amp;entry_id=1589&quot;  onmouseover=&quot;window.status=&#039;http://www.mantisbt.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mantis&lt;/a&gt; (aktuell in der Version &lt;strong&gt;1.2.1&lt;/strong&gt;) ist ein ganz netter Bugtracker, also ein Ticketsystem (Fallbearbeitungssystem) für die Softwareentwicklung, dessen auffallendstes Manko allerdings die unterirdische Qualität der Dokumentation (weitgehend schlicht nicht vorhanden, ansonsten grob unvollständig oder weit veraltet) ist. &lt;em&gt;*seufz*&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&amp;#8220;Mantis Graphs 1.0&amp;#8221; ist ein Plugin für Mantis, das graphische Darstellungen ermöglicht, und ich habe heute längere Zeit damit verbracht, es in Betrieb zu setzen, nachdem es immer nur &amp;#8220;unable to read/find font&amp;#8221; von sich geben wollte. Einer der ersten Schritte war die Installation der msttcorefonts (&lt;em&gt;aptitude install ttf-mscorefonts-installer&lt;/em&gt;), aber das genügte nicht. Längeres Debugging mit eingestreuten Statements im Quellcode ergab schließlich, daß Mantis weder das passende Font-Verzeichnis erkennen noch - bei expliziter Angabe des Verzeichnisses in der Konfiguration mit &lt;em&gt;$g_system_font_folder&lt;/em&gt; - die Fontdatei laden wollte. Die Lösung dafür fand sich in der Dokumentation der PHP-Funktion &lt;em&gt;file_exists()&lt;/em&gt;: diese liefert auch dann &lt;em&gt;false&lt;/em&gt; zurück, wenn auf die entsprechende Datei aufgrund von &lt;a title=&quot;PHP: Security and Safe Mode&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1597&amp;amp;entry_id=1589&quot;  onmouseover=&quot;window.status=&#039;http://de.php.net/manual/en/ini.sect.safe-mode.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;em&gt;safe_mode&lt;/em&gt;&lt;/a&gt;-Restriktionen nicht zugegriffen werden kann ...&lt;/p&gt; 
&lt;p&gt;Und natürlich ist das der Fall: das Font-Verzeichnis - bpw. &lt;em&gt;/usr/share/fonts/truetype/msttcorefonts/&lt;/em&gt; - gehört &lt;em&gt;root&lt;/em&gt;, und die Font-Dateien auch. Jedenfalls ist Owner dieser Dateien niemals der Webserver oder der Benutzer, unter dessen Kennung die PHP-Scripts dank &lt;em&gt;su_php&lt;/em&gt; o.ä. ausgeführt werden. &lt;em&gt;*brummel*&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Es bleibt demnach nur der Verzicht auf die Grafiken oder die Deaktivierung von &lt;em&gt;safe_mode&lt;/em&gt; (für Mantis).&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Fri, 14 May 2010 18:14:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1589-guid.html</guid>
    <category>debian</category>
<category>lenny</category>
<category>mantis</category>
<category>php</category>

</item>
<item>
    <title>gitweb mit Passwortschutz</title>
    <link>http://th-h.de/blog/archives/1530-gitweb-mit-Passwortschutz.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1530-gitweb-mit-Passwortschutz.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1530</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1530</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;gitweb&lt;/em&gt; ist, wie &lt;a title=&quot;Git-Repositories mit gitosis und gitweb (Debian Lenny)&quot; href=&quot;http://th-h.de/blog/archives/1528-Git-Repositories-mit-gitosis-und-gitweb-Debian-Lenny.html&quot;&gt;vorgestern&lt;/a&gt; beschrieben, eine schöne Sache - aber nicht immer will man seine Repositories jedermann zugänglich machen. Schön wäre es doch, wenn man die Möglichkeit hätte, auch den Zugriff auf &lt;em&gt;gitweb&lt;/em&gt; an eine Anmeldung zu koppeln und so nur für befugte Benutzer zu erlauben. Eine Möglichkeit dazu will ich nachstehend schildern, orientiert an einem &lt;a title=&quot;Using apache authentication with gitweb, gitosis  repository access control&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1385&amp;amp;entry_id=1530&quot;  onmouseover=&quot;window.status=&#039;http://leho.kraav.com/blog/2009/10/27/using-apache-authentication-with-gitweb-gitosis-repository-access-control/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Beitrag&lt;/a&gt; im Blog von Leho Kraav.&lt;/p&gt;
&lt;p&gt;Weitere, vielleicht hilfreiche Anregungen dazu kann man ergoogeln, bspw.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1385&amp;amp;entry_id=1530&quot; title=&quot;http://leho.kraav.com/blog/2009/10/27/using-apache-authentication-with-gitweb-gitosis-repository-access-control/&quot;  onmouseover=&quot;window.status=&#039;http://leho.kraav.com/blog/2009/10/27/using-apache-authentication-with-gitweb-gitosis-repository-access-control/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Using apache authentication with gitweb, gitosis  repository access control&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1389&amp;amp;entry_id=1530&quot; title=&quot;http://git.madduck.net/v/gitweb-conf.git/blob/HEAD:/gitweb.conf&quot;  onmouseover=&quot;window.status=&#039;http://git.madduck.net/v/gitweb-conf.git/blob/HEAD:/gitweb.conf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;madduck&#039;s gitweb.conf&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1388&amp;amp;entry_id=1530&quot; title=&quot;http://markatharvest.blogspot.com/2009/04/securing-gitweb.html&quot;  onmouseover=&quot;window.status=&#039;http://markatharvest.blogspot.com/2009/04/securing-gitweb.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Securing gitweb&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;u.a.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Voraussetzung dafür ist eine ausreichend neue Version von &lt;em&gt;gitweb&lt;/em&gt;; die in Debian Lenny verfügbare Version 1.5.6.5 genügt nicht. Sie kann allerdings gepatcht werden (die Änderung ist minimal):&lt;/p&gt;
&lt;pre&gt;
--- /usr/lib/cgi-bin/gitweb.cgi.OLD 2010-01-14 16:49:44.000000000 +0100
+++ /usr/lib/cgi-bin/gitweb.cgi&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2010-01-15 15:30:40.975350737 +0100
@@ -86,6 +86,11 @@
&amp;#160;# (only effective if this variable evaluates to true)
&amp;#160;our $export_ok = &quot;&quot;;
 
+# show repository only if this subroutine returns true
+# when given the path to the project, for example:
+#&amp;#160;&amp;#160;&amp;#160; sub { return -e &quot;$_[0]/git-daemon-export-ok&quot;; }
+our $export_auth_hook = undef;
+
&amp;#160;# only allow viewing of repositories also shown on the overview page
&amp;#160;our $strict_export = &quot;&quot;;
 
@@ -353,7 +358,8 @@
&amp;#160;sub check_export_ok {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; my ($dir) = @_;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return (check_head_link($dir) &amp;amp;&amp;amp;
-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (!$export_ok || -e &quot;$dir/$export_ok&quot;));
+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (!$export_ok || -e &quot;$dir/$export_ok&quot;) &amp;amp;&amp;amp;
+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (!$export_auth_hook || $export_auth_hook-&amp;gt;($dir)));
&amp;#160;}
 
&amp;#160;# process alternate names for backward compatibility&lt;/pre&gt;
&lt;p&gt;Das vorausgesetzt, genügt es, die &lt;em&gt;gitweb.conf&lt;/em&gt; folgendermaßen zu erweitern:&lt;/p&gt;
&lt;pre&gt;
# HTTP Basic Auth
$gitosis_conf = &#039;/home/gitosis/.gitosis.conf&#039;;
$username = $cgi-&amp;gt;remote_user;
$export_auth_hook = sub {
&amp;#160; my $projectdir = shift;
&amp;#160; if($projectdir =~ (/(.*?)\.git/)) {
&amp;#160;&amp;#160;&amp;#160; #my $projectname = basename($1);
&amp;#160;&amp;#160;&amp;#160; my $projectname = $1;
&amp;#160;&amp;#160;&amp;#160; $projectname =~ s/$projectroot\/?//;
&amp;#160;&amp;#160;&amp;#160; open FILE, $gitosis_conf or die &#039;Could not open gitosis config file. Please make sure that $gitosis_conf is set properly&#039;;
&amp;#160;&amp;#160;&amp;#160; my $project_match = 0;
&amp;#160;&amp;#160;&amp;#160; my $user_match = 0;
&amp;#160;&amp;#160;&amp;#160; while(&amp;lt;FILE&amp;gt;) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if($_ =~ /^\s*members\s*\=\s*(?:.*?\s)*$username(?:\s+|$)/) {$user_match = 1;}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if($_ =~ /^\s*(read|writ)able\s*\=\s*(?:.*?\s)*$projectname(?:\s+|$)/) {$project_match = 1;}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if($project_match &amp;amp;&amp;amp; $user_match) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return 1;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if($_ =~ /\[group/) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $project_match = $user_match = 0;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160; }
&amp;#160; }
&amp;#160; return 0;
};&lt;/pre&gt;
&lt;p&gt;Dann muß noch die Apache-Konfiguration passend erweitert werden, um HTTP-Basic-Authentication für das entsprechende Verzeichnis zu machen:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;Location /&amp;gt;
&amp;#160;AuthType Basic
&amp;#160;AuthName &quot;git.host.example&quot;
&amp;#160;AuthUserFile /home/gitosis/gitosis/ht.passwd
&amp;#160;Require valid-user
&amp;lt;/Location&amp;gt;&lt;/pre&gt;
&lt;p&gt;Pfade müssen, wie üblich, entsprechend angepaßt werden.&lt;/p&gt;
&lt;p&gt;Und schließlich müssen für die in der &lt;em&gt;gitosis.conf&lt;/em&gt; definierten Benutzer - jedenfalls diejenigen, die auch Webzugriff haben sollen - Paßworte in der &lt;em&gt;/home/gitosis/gitosis/ht.passwd&lt;/em&gt; angelegt werden. Dazu wird wie gewohnt &lt;em&gt;htpasswd&lt;/em&gt; bzw. &lt;em&gt;htpasswd2&lt;/em&gt; aufgerufen.&lt;/p&gt;
&lt;p&gt;Voilá!&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 16 Jan 2010 20:04:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1530-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>git</category>
<category>lenny</category>

</item>
<item>
    <title>Git-Repositories mit gitosis und gitweb (Debian Lenny)</title>
    <link>http://th-h.de/blog/archives/1528-Git-Repositories-mit-gitosis-und-gitweb-Debian-Lenny.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1528-Git-Repositories-mit-gitosis-und-gitweb-Debian-Lenny.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1528</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1528</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Wie ich bereits &lt;a title=&quot;Patches für control-archive&quot; href=&quot;http://th-h.de/blog/archives/1498-Patches-fuer-control-archive.html&quot;&gt;schrieb&lt;/a&gt;, habe ich mich in den letzten Tagen etwas näher mit dem Versionskontrollsystem (VCS, oder auch SCM für &amp;#8220;Source-Code-Management&amp;#8221;) &lt;a title=&quot;Git&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1372&amp;amp;entry_id=1528&quot;  onmouseover=&quot;window.status=&#039;http://git-scm.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;git&lt;/a&gt; beschäftigt. Das macht natürlich nur bedingt Spaß - und Sinn -, wenn die Repositories nur auf dem heimischen Rechner liegen; um wirklich universal auf sie zugreifen zu können und auch die Zusammenarbeit mit anderen zu ermöglichen, sollten die Repositories irgendwo im Netz stehen, und eine nette Weboberfläche, die auch einen Zugriff über den Browser - ohne weitere Software - ermöglicht, um den aktuellen Stand der Bearbeitung zu sehen, Commits zu prüfen und ggf. einen Snapshot zu ziehen, wäre auch nicht schlecht.&lt;/p&gt;
&lt;p&gt;Um mir die Anlage von Repositories und das Zusammenspiel mit den anderen Komponenten zu erleichtern und auch für erweiterte Anforderungen wie verschiedene Zugriffsrechte für die jeweiligen Repositories gerüstet zu sein, habe ich mich für die Verwaltung der Repositories für &lt;em&gt;&lt;a title=&quot;gitosis&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1373&amp;amp;entry_id=1528&quot;  onmouseover=&quot;window.status=&#039;http://eagain.net/gitweb/?p=gitosis.git&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;gitosis&lt;/a&gt;&lt;/em&gt; entschieden; als Weboberfläche will ich &lt;em&gt;&lt;a title=&quot;gitweb&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1374&amp;amp;entry_id=1528&quot;  onmouseover=&quot;window.status=&#039;https://git.wiki.kernel.org/index.php/Gitweb&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;gitweb&lt;/a&gt;&lt;/em&gt; nutzen, und für den Zugriff via &lt;em&gt;git &lt;/em&gt;dann &lt;em&gt;git-daemon&lt;/em&gt;. Installiert habe ich dazu die jeweiligen Pakete aus Debian Lenny bzw. den Debian-Backports.&lt;/p&gt; &lt;p&gt;Die Installation und Konfiguration habe ich folgendermaßen durchgeführt:&lt;/p&gt;
&lt;h3&gt;1. gitosis&lt;/h3&gt;
&lt;h4&gt;a) Vorüberlegungen&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;gitosis &lt;/em&gt;bietet die Möglichkeit, Benutzer und Repositories zu konfigurieren. Die entsprechenden Repositories werden dann angelegt; für jedes kann gesondert festgelegt werden, welcher Benutzer - lesen oder schreibend - darauf zugreifen kann. Die Zugriffe erfolgen über (&lt;em&gt;git&lt;/em&gt;-über-)SSH; jeder Benutzer muß dazu seinen öffentlichen SSH-Schlüssel hinterlegen. Er verbindet sich dann unter dem Benutzernamen (Useraccount) &amp;#8220;gitosis&amp;#8221; per SSH mit dem Server, auf dem das Repository liegt; gitosis prüft dann, welcher SSH-Schlüssel für die Verbindung übergeben wird und identifiziert auf diese Weise den Benutzer.&lt;/p&gt;
&lt;p&gt;Die Konfiguration von &lt;em&gt;gitosis &lt;/em&gt;erfolgt gleichfalls über ein &lt;em&gt;git&lt;/em&gt;-Repository, das zunächst ausgecheckt wird; danach kann man die Konfiguration ändern und bspw. neue Repositories und Benutzer anlegen (und im Falle eines neuen Benutzers auch dessen öffentlichen SSH-Schlüssel speichern) und die Änderungen committen. Beim Commit paßt &lt;em&gt;gitosis&lt;/em&gt; über entsprechende Hooks die Konfiguration an. Das Konfigurations-Repository kann entweder auf denselben Rechner ausgecheckt werden oder auf einen beliebigen anderen Client; auch diese Verbindungen erfolgen über (&lt;em&gt;git&lt;/em&gt;-über-)SSH, und auch dafür muß man (s)einen öffentlichen SSH-Key bei &lt;em&gt;gitosis &lt;/em&gt;hinterlegen. Ich habe mich entschlossen, dafür einen eigenen Key anzulegen; man kann aber natürlich auch einfach (s)einen bestehenden SSH-Schlüssel verwenden.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Standardmäßig sieht das Debian-Paket von &lt;em&gt;gitosis&lt;/em&gt; die Anlage der Repositories in &lt;em&gt;/srv/gitosis&lt;/em&gt; an; das paßt allerdings nicht zur Partitionierung meines Mietservers, der - historisch und aus dem Image des Anbieters bedingt - platzmäßig eher knapp kalkulierte Partitionen bietet und den gesamten restlichen Plattenplatz in &lt;em&gt;/home&lt;/em&gt; eingehängt hat. Daher möchte ich die Repositories auch in &lt;em&gt;/home/gitosis&lt;/em&gt; liegen haben.&lt;/p&gt;
&lt;h4&gt;b) Installation (der Debian-Pakete) und Inbetriebnahme&lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;Zunächst sind &lt;em&gt;git&lt;/em&gt; selbst und &lt;em&gt;gitosis&lt;/em&gt; zu installieren:&lt;/p&gt;
&lt;pre&gt;
aptitude install git-core git-doc gitosis&lt;/pre&gt;
&lt;p&gt;Danach lege ich ein Home-Verzeichnis für &lt;em&gt;gitosis&lt;/em&gt; in &lt;em&gt;/home&lt;/em&gt; an, lösche &lt;em&gt;/srv/gitosis&lt;/em&gt; und setze einen Symlink auf das Home-Verzeichnis:&lt;/p&gt;
&lt;pre&gt;
mkdir /home/gitosis
chown gitosis:gitosis /home/gitosis
rmdir /srv/gitosis/
ln -s /home/gitosis /srv/gitosis&lt;/pre&gt;
&lt;p&gt;Dann ist entweder mit &lt;em&gt;ssh-keygen&lt;/em&gt; ein neues Schlüsselpaar zu erzeugen oder der öffentliche Schlüssel eines bestehenden Schlüsselpaares in einer Datei bereitzulegen, bspw. in &lt;em&gt;git-admin_rsa.pub&lt;/em&gt;. Den verfüttert man dann an &lt;em&gt;gitosis&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;
sudo -H -u gitosis gitosis-init &amp;lt; git-admin_rsa.pub&lt;/pre&gt;
&lt;p&gt;Dann habe ich der Bequemlichkeit halber noch die Konfiguration des SSH-Clients angepaßt, um bei SSH-Verbindungen zu &lt;em&gt;localhost&lt;/em&gt; - was in meinem Fall nur für &lt;em&gt;git&lt;/em&gt;-über-SSH bei der Konfiguration von &lt;em&gt;gitosis&lt;/em&gt; vorkommt - direkt den richtigen Schlüssel zu benutzen, und dazu in &lt;em&gt;~/.ssh/config&lt;/em&gt; folgendes eingefügt:&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;
Host localhost
IdentityFile ~/.ssh/git-admin_rsa&lt;/pre&gt;
&lt;p&gt;Zur Konfiguration und Einrichtung der Benutzer muß das Konfigurations-Repository von &lt;em&gt;gitosis&lt;/em&gt; jetzt erst einmal ausgecheckt werden (in meinem Falle geschieht das auf demselben Host, man kann aber natürlich auch von jedem anderen Host aus mit dem oben an &lt;em&gt;gitosis&lt;/em&gt; übergebenen SSH-Schlüssel auf das Repository zugreifen):&lt;/p&gt;
&lt;pre&gt;
git clone gitosis@localhost:gitosis-admin.git gitosis-admin&lt;/pre&gt;
&lt;p&gt;Damit wird das Repositoy in das Verzeichnis &lt;em&gt;gitosis-admin&lt;/em&gt; ausgecheckt. Dort befindet sich dann die Datei &lt;em&gt;gitosis.conf&lt;/em&gt; und das Verzeichnis &lt;em&gt;keydir&lt;/em&gt;; in ersterer werden Benutzer und Repositories angelegt, in letzterem finden sich die öffentlichen SSH-Schlüssel der Benutzer.&lt;/p&gt;
&lt;h4&gt;c) Konfiguration und Einrichtung der ersten Benutzer und Repositories&lt;/h4&gt;
&lt;p&gt;Als erstes nehme ich mir die &lt;em&gt;gitosis.conf&lt;/em&gt; vor und prüfe bzw. setze dort die globalen Einstellungen:&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;
[gitosis]
## To override the default ~/repositories path
# repositories = repositories

## Allow gitweb to show all known repositories. If you want gitweb,
## you need either this or a [repo foo] section for each repository
## you want visible in gitweb.
gitweb = no

## Allow git-daemon to publish all known repositories. As with gitweb,
## this can be done globally or per-repository.
daemon = no

## Logging level, one of DEBUG, INFO, WARNING, ERROR, CRITICAL
loglevel = INFO&lt;/pre&gt;
&lt;p&gt;Die Optionen sind im Prinzip selbsterklärend. Ich habe mich entschieden, den Webzugriff und den Zugriff via git-daemon nicht generell freizugeben, sondern das per Repository zu steuern.&lt;/p&gt;
&lt;p&gt;Als nächstes werden Benutzergruppen und deren Rechte festgelegt:&lt;/p&gt;
&lt;pre&gt;
### groups #####---------------
[group gitosis-admin]
writable = gitosis-admin
members = admin@admin.host.example

[group friends]
writable = repo-eins projekt/projektrepo-eins
members = me@my.host.example he@his.host.example another@another.host.example

[group myself]
writable = private projekt/projektrepo-private
members = me@my.host.example&lt;/pre&gt;
&lt;p&gt;Zur Gruppe &amp;#8220;gitosis-admin&amp;#8221; gehört also der Benutzer, der über den SSH-Key &amp;#8220;admin@admin.host.example&amp;#8221; identifiziert wird; dieser hat Zugriff auf das Konfigurations-Repository &amp;#8220;gitosis-admin&amp;#8221;. Zur Gruppe &amp;#8220;friends&amp;#8221; gehören neben mir (&amp;#8220;me@my.host.example&amp;#8221;)&amp;#160; auch noch zwei andere, und diese Gruppe hat Zugriff auf zwei verschiedene Repositories; zur Gruppe &amp;#8220;myself&amp;#8221; gehöre nur ich mit Zugriff auf zwei weitere Repositories. Statt Lese- und Schreibzugriff (&amp;#8220;writable&amp;#8221;) kann auch ein bloßer Lesezugriff vergeben werden.&lt;/p&gt;
&lt;p&gt;Diese Repositories werden dann im Anschluss konfiguriert:&lt;/p&gt;
&lt;pre&gt;
### repos #####----------------
[repo repo-eins]
## Oneline description of the project, mostly for gitweb.
description = Repository Number One
## Owner of this repository. Used in gitweb list of projects.
owner = John Doe
## Allow git-daemon to publish this repository.
daemon = yes
## Allow gitweb to show this repository.
gitweb = yes

[repo projekt/projektrepo-eins]
description = Repository for our project
owner = John Doe
daemon = yes
gitweb = yes

[repo private]
description = Private repository
owner = John Doe
daemon = no
gitweb = no

[repo projekt/projektrepo-private]
description = Another repository for our project
owner = John Doe
daemon = no
gitweb = no&lt;/pre&gt;
&lt;p&gt;Auch das sollte eigentlich selbsterklärend sein. Zu beachten ist, daß die Angaben unter &amp;#8220;daemon&amp;#8221; und &amp;#8220;gitweb&amp;#8221; nur steuern, ob gitosis eine entsprechende &amp;#8220;magische&amp;#8221; Datei &lt;em&gt;git-daemon-export-ok&lt;/em&gt; für &lt;em&gt;git-daemon&lt;/em&gt; anlegt bzw. das Repository in eine Projektdatei für &lt;em&gt;gitweb&lt;/em&gt; aufnimmt. Ob die entsprechenden mit &amp;#8220;yes&amp;#8221; gekennzeichneten Repositories dann via &lt;em&gt;gitweb &lt;/em&gt;oder &lt;em&gt;git-daemon&lt;/em&gt; auch wirklich verfügbar sind (und vor allem die mit &amp;#8220;no&amp;#8221; gekennzeichneten nicht!), ist eine Frage der Konfiguration dieser beiden Programme.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Nunmehr müssen für die in der &lt;em&gt;gitosis.conf&lt;/em&gt; definierten Benutzer noch jeweils deren öffentliche SSH-Key hinterlegt werden, und zwar in &lt;em&gt;keydir&lt;/em&gt;, wobei für jeden Nutzer eine Datei mit dem Namen &lt;em&gt;$nutzername.pub&lt;/em&gt; angelegt werden muß, die mindestens einen Schlüssel enthalten muß, aber auch mehrere Schlüssel enthalten darf. Der oder die Schlüssel des Nutzers &amp;#8220;me@my.host.example&amp;#8221; gehören also in die Datei &lt;em&gt;me@my.host.example.pub&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Schließlich müssen die Dateien mit dem Schlüsseln mittels &lt;em&gt;git add&lt;/em&gt; hinzugefügt und alle Änderungen mittes &lt;em&gt;git commit -a&lt;/em&gt; committed werden; danach wird das Repository mittels &lt;em&gt;git push&lt;/em&gt; an &lt;em&gt;gitosis&lt;/em&gt; verfüttert. Voilà!&lt;/p&gt;
&lt;h3&gt;2. git-daemon&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;git-daemon &lt;/em&gt;ist recht einfach zu installieren:&lt;/p&gt;
&lt;pre&gt;
aptitude install git-daemon-run&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;git-daemon-run&lt;/em&gt; verwendet allerdings nicht die gewohnten Scripts in &lt;em&gt;/etc/init.d&lt;/em&gt;, sondern &lt;em&gt;runit&lt;/em&gt;/&lt;em&gt;runsv&lt;/em&gt;, so dass sich ein Symlink lohnt:&lt;/p&gt;
&lt;pre&gt;
ln -s /usr/bin/sv /etc/init.d/git-daemon&lt;/pre&gt;
&lt;p&gt;Außerdem sollte &lt;em&gt;/etc/sv/git-daemon/run&lt;/em&gt; noch entsprechend konfiguriert werden:&lt;/p&gt;
&lt;pre&gt;
#!/bin/sh
exec 2&amp;gt;&amp;amp;1
echo &amp;#8216;git-daemon starting.&amp;#8217;
exec chpst -ugitdaemon /usr/lib/git-core/git-daemon --verbose --enable=upload-pack --enable=upload-archive --base-path=/home/gitosis/repositories /home/gitosis/repositories&lt;/pre&gt;
&lt;p&gt;Statt &amp;#8220;-ugitdaemon&amp;#8221; wäre ggf. bei neueren Versionen des &lt;em&gt;gitosis&lt;/em&gt;-Pakets in Debian &amp;#8220;-ugitosis&amp;#8221; zu verwenden; der Pfad &lt;em&gt;/home/gitosis/repositories&lt;/em&gt; ist (zweimal) ggf. durch den Pfad zu den in &lt;em&gt;gitosis&lt;/em&gt; angelegten Repositories zu ersetzen, im Falle des Debian-Paketes standardmäßig &lt;em&gt;/srv/gitosis&lt;/em&gt; (den Grund für meine diesbezügliche Änderung habe ich weiter oben beschrieben).&lt;/p&gt;
&lt;p&gt;Schließlich muß man sich noch entscheiden, welche Services der &lt;em&gt;git-daemon&lt;/em&gt; bieten soll. &amp;#8220;upload-pack&amp;#8221; erlaubt den Zugriff via &lt;em&gt;git fetch&lt;/em&gt;, &lt;em&gt;git pull&lt;/em&gt; und &lt;em&gt;git clone&lt;/em&gt;, &amp;#8220;upload-archive&amp;#8221; die Verwendung von &lt;em&gt;git archive&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Das sollte es dann gewesen sein.&lt;/p&gt;
&lt;h3&gt;3. gitweb&lt;/h3&gt;
&lt;p&gt;Das &lt;em&gt;gitweb&lt;/em&gt;-Paket aus Debian Lenny kann gleichfalls in wenigen Schritten installiert und konfiguriert werden; danach ist nur noch der Webserver - in meinem Fall &lt;em&gt;Apache 2.2&lt;/em&gt; - entsprechend anzupassen, wobei ich für &lt;em&gt;gitweb &lt;/em&gt;einen eigenen vhost aufgesetzt habe.&lt;/p&gt;
&lt;h4&gt;a) gitweb &lt;br /&gt;&lt;/h4&gt;
&lt;pre&gt;
aptitude install gitweb&lt;/pre&gt;
&lt;p&gt;Dann kommt die &lt;em&gt;/etc/gitweb.conf&lt;/em&gt; an die Reihe:&lt;/p&gt;
&lt;pre&gt;
# path to git projects (&amp;lt;project&amp;gt;.git)
#$projectroot = &amp;#8220;/var/cache/git&amp;#8221;;
$projectroot = &amp;#8220;/home/gitosis/repositories/&amp;#8221;;

# directory to use for temp files
$git_temp = &amp;#8220;/tmp&amp;#8221;;

# target of the home link on top of all pages
#$home_link = $my_uri || &amp;#8220;/&amp;#8221;;

# html text to include at home page
$home_text = &amp;#8220;indextext.html&amp;#8221;;

# file with project list; by default, simply scan the projectroot dir.
# $projects_list = $projectroot;

# Point to projects.list file generated by gitosis.
$projects_list = &amp;#8220;/home/gitosis/gitosis/projects.list&amp;#8221;;

# stylesheet to use
$stylesheet = &amp;#8220;/gitweb.css&amp;#8221;;

# logo to use
$logo = &amp;#8220;/git-logo.png&amp;#8221;;

# the &amp;#8216;favicon&amp;#8217;
$favicon = &amp;#8220;/git-favicon.png&amp;#8221;;

# A list of base urls where all the repositories can be cloned from.
# Easier than having per-repository cloneurl files.
@git_base_url_list = (&amp;#8217;git://git.host.example&amp;#8217;);&lt;/pre&gt;
&lt;p&gt;&amp;#8220;$projectroot&amp;#8221; ist hier der Pfad zu den von &lt;em&gt;gitosis &lt;/em&gt;angelegten Repositories, standardmäßig &lt;em&gt;/srv/gitosis/repositories&lt;/em&gt;; &amp;#8220;$projects_list&amp;#8221; umfasst die Repositories, die &lt;em&gt;gitweb &lt;/em&gt;anzeigen soll, und ist entweder ein Verzeichnis (bspw. &lt;em&gt;$projectroot&lt;/em&gt;), in dem die Repositories liegen, &lt;u&gt;oder&lt;/u&gt; eine Datei mit einer Liste der Repositories. Wenn man hier die Funktionalität von &lt;em&gt;gitosis &lt;/em&gt;nutzen will, in der &lt;em&gt;gitosis.conf&lt;/em&gt; zu steuern, welche Repositories &lt;em&gt;gitweb &lt;/em&gt;anzeigen soll, dann ist es wichtig, hier auf die von &lt;em&gt;gitosis&lt;/em&gt; erzeugte Projektliste zu verweisen, wie im obigen Beispiel geschehen! Wenn man sicherstellen will, daß &lt;em&gt;gitweb &lt;/em&gt;nicht nur die &lt;strong&gt;Anzeige&lt;/strong&gt; der Repositories auf die in der Liste gezeigten beschränkt, sondern auch nur diese Repositories überhaupt zum Abruf über das Webinterface anbietet, muß die Konfiguration hier noch um&lt;/p&gt;
&lt;pre&gt;
$strict_export = &amp;#8220;true&amp;#8221;;&lt;/pre&gt;
&lt;p&gt;ergänzt werden. Schließlich können noch allgemeine Parameter wie &amp;#8220;@git_base_url_list&amp;#8221; gesetzt werden.&lt;/p&gt;
&lt;h4&gt;b) apache2 &lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;Für den Webserver konfiguriere ich, wie einleitend beschrieben, einen eigenen vhost in &lt;em&gt;/etc/apache2/sites-available/gitweb&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;VirtualHost *:80&amp;gt;
 ServerName git.host.example
&amp;#160;ServerAdmin webmaster@host.example

 HeaderName HEADER

 # bogus but safe DocumentRoot
 DocumentRoot /var/cache/git

 #Alias /robots.txt /var/www/cvs.robots.txt
 Alias /gitweb.css /usr/share/gitweb/gitweb.css
 Alias /git-favicon.png /usr/share/gitweb/git-favicon.png
 Alias /git-logo.png /usr/share/gitweb/git-logo.png
 ScriptAlias / /usr/lib/cgi-bin/gitweb.cgi
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;
&lt;p&gt;Ich füge außerdem den Benutzer &lt;em&gt;www-data&lt;/em&gt;, unter dem der Apache-Webserver läuft, noch in &lt;em&gt;/etc/group&lt;/em&gt; zur Gruppe &lt;em&gt;gitosis&lt;/em&gt; hinzu, damit er die Repositories lesen kann.&lt;/p&gt;
&lt;p&gt;Danach aktiviere ich den zuvor angelegten vhost:&lt;/p&gt;
&lt;pre&gt;
a2ensite gitweb
/etc/init.d/apache2 reload&lt;/pre&gt;
&lt;p&gt;Jetzt sollte unter &lt;em&gt;http://git.host.example/&lt;/em&gt; das Webinterface von gitweb mit den freigegebenen - und befüllten! - Repositories auftauchen.&lt;/p&gt;
&lt;p&gt;Fertig! &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 14 Jan 2010 18:41:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1528-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>git</category>
<category>lenny</category>

</item>
<item>
    <title>LILO makes the difference</title>
    <link>http://th-h.de/blog/archives/1442-LILO-makes-the-difference.html</link>
            <category>Bits'n'Bytes</category>
            <category>Unmut</category>
    
    <comments>http://th-h.de/blog/archives/1442-LILO-makes-the-difference.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1442</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1442</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Dieser Tage war mal wieder ein Kernelupdate einzuspielen. Normalerweise mache ich das Maschine für Maschine, um bei möglicherweise auftretenden Problemen nur ein System bis zur Lösung lahmzulegen, und eigentlich nie abend, wenn ich eigentlich nur noch ins Bett gehen sollte. Dieses Mal dachte ich mir, das könne ich &amp;#8220;noch eben schnell&amp;#8221; erledigen - famous last words. Und weil es schnell gehen sollte, habe ich den Update-Prozess mehr oder weniger gleichzeitig gestartet und die ersten beiden Maschinen dann auch parallel rebootet. Während ich dann darauf wartete, daß sie ordnungsgemäß wieder hochkommen, hatte ich die übrigen Updates durchlaufen lassen.&lt;/p&gt; 
&lt;p&gt;Nur ... kamen die beiden rebooteten Maschinen nicht wieder hoch. Nada. Und natürlich handelte es sich dabei um gehostete Server, und natürlich um ältere solche, die über keine remote console verfügen. Nicht, daß mir das zwingend geholfen hätte.&lt;/p&gt; 
&lt;p&gt; Also hilft nur fluchen und ein Reboot in das sog. Rettungssystem, ein Minimal-Linux, das eine Untersuchung des Systems erlaubt. Und während ich noch grübelte und in den Logs nach möglichen Ursachen suchte, kam mir auch schon ein Gedanke - beides waren Altsysteme, die als Bootloader noch mit &lt;em&gt;LILO&lt;/em&gt;, nicht &lt;em&gt;grub&lt;/em&gt;, ausgestattet sind. Und ich konnte mich jedenfalls nicht bewußt erinnern, beim Upgrade irgendwelchen Output von &lt;em&gt;LILO&lt;/em&gt; gesehen zu haben ... Also die Partitionen ins Rettungssystem &lt;em&gt;mount&lt;/em&gt;en, in das Echtsystem &lt;em&gt;chroot&lt;/em&gt;en, &lt;em&gt;lilo&lt;/em&gt; ausführen, &lt;em&gt;unmount&lt;/em&gt;en, das Echtsystem rebooten und das beste hoffen.&lt;/p&gt; 
&lt;p&gt;Und, siehe da: das war die Lösung.&lt;/p&gt; 
&lt;p&gt;Jetzt frage ich mich nur: War das immer schon so, daß man bei einem Debian nach dem Kernelupdate von Hand &lt;em&gt;lilo&lt;/em&gt; ausführen mußte? Oder wurde das früher - unter Sarge oder Lenny - nicht automatisch von einem &lt;em&gt;postinstall&lt;/em&gt;-Script gemacht? &lt;strong&gt;kopfkratz&lt;/strong&gt; Und wenn letzteres: wie stelle ich dieses Verhalten wieder her?&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Wed, 10 Jun 2009 07:30:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1442-guid.html</guid>
    <category>debian</category>
<category>lenny</category>

</item>
<item>
    <title>Aufräumen schafft Platz</title>
    <link>http://th-h.de/blog/archives/1441-Aufraeumen-schafft-Platz.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1441-Aufraeumen-schafft-Platz.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1441</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1441</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 110px;&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://th-h.de/blog/uploads/2009-04-15-xerxes-df-day.png&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-15-xerxes-df-day.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:303 --&gt;&lt;img width=&quot;110&quot; height=&quot;80&quot; class=&quot;serendipity_image_left&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-15-xerxes-df-day.serendipityThumb.png&quot;    /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;/ lief voll.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt; &lt;/p&gt;
&lt;div class=&quot;serendipity_imageComment_right&quot; style=&quot;width: 110px;&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://th-h.de/blog/uploads/2009-06-06-munin-xerxes-df-week.png&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-06-06-munin-xerxes-df-week.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:318 --&gt;&lt;img width=&quot;110&quot; height=&quot;82&quot; class=&quot;serendipity_image_right&quot; src=&quot;http://th-h.de/blog/uploads/2009-06-06-munin-xerxes-df-week.serendipityThumb.png&quot;    /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Aufräumen hilft.&lt;/div&gt; 
&lt;/div&gt;Nach dem - inzwischen auf allen Rechnern abgeschlossenen - Upgrade auf Debian Lenny &lt;a title=&quot;Debian Lenny und Belkin Sentry Bulldog&quot; href=&quot;http://th-h.de/blog/archives/1400-Debian-Lenny-und-Belkin-Sentry-Bulldog.html&quot;&gt;beklagte&lt;/a&gt; ich unter anderem ein Volllaufen des Root-Filesystems auf einer Maschine, das ich damals bei der Einrichtung etwas arg knapp bemessen hatte. Mittlerweile stellte sich heraus, dass der verbliebene Platz noch nicht einmal mehr für das Einspielen von Kernel-Updates ausreichte; so geht das natrülich auf Dauer nicht.

&lt;p&gt;&amp;#160;&lt;/p&gt; 
&lt;p&gt;Auf der Suche nach einer Lösung stellte ich dann - glücklicherweise - fest, dass der große Platzverbrauch seine Ursache vor allem darin hatte, dass von allen jemals aktiv gewesen Kernel noch die zugehörigen Module auf der Platte lagen, insgesamt vier Verzeichnisse voll. Nach Beseitigung eines dieser Modul-Verzeichnisse (zugehörig zu einem schon weggeputzten Kernel - sah es mit dem Platz dann schon viel, viel besser aus, und auch das Kernel-Update ließ sich brav installieren.&lt;/p&gt; 
&lt;p&gt;So soll es sein. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Mon, 08 Jun 2009 07:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1441-guid.html</guid>
    <category>debian</category>
<category>lenny</category>

</item>
<item>
    <title>Munin-Plugin und BIND 9.5.1 revisited</title>
    <link>http://th-h.de/blog/archives/1422-Munin-Plugin-und-BIND-9.5.1-revisited.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1422-Munin-Plugin-und-BIND-9.5.1-revisited.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1422</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1422</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Ich hatte &lt;a href=&quot;http://th-h.de/blog/archives/1401-Debian-Lenny-und-Munin.html&quot; title=&quot;Debian Lenny und Munin&quot;&gt;bereits geschildert&lt;/a&gt;, daß das Munin-Plugin für BIND nicht mit dem Format der Statistikdatei von BIND 9.5.x umgehen kann, und auch eine Lösung vorgeschlagen, die bei mir dafür gesorgt hatte, daß die Lücke in den Munin-Daten für BIND sehr schmal blieb. Leider mußte ich jetzt - nachdem ich, bedingt durch Zeitmangel, erst nach&amp;#160;längerer Zeit wieder einmal einen Blick auf diese spezielle Grafik werfen konnte - feststellen, daß sich ein neues, bald zwei Wochen messendes Loch aufgetan hat. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Der Grund ist einfach: BIND 9.5.1 schreibt die Statistikdatei nicht immer wieder neu, sondern hängt die neuen Informationen am Ende an. So wird die Datei immer länger; hier waren es jetzt &amp;gt; 33 MB. Und da das Munin-Plugin die Datei schlicht zeilenweise liest und dabei auf das (letzte) Auftreten bestimmter Schlüsselbegriffe achtet, um die entsprechende Zeile dann auszuwerten, dauert das ab einer gewissen Dateigröße einfach so lange, daß dabei ein Timeout des entsprechenden Plugins entsteht. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/normal.png&quot; alt=&quot;:-|&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Weiß jemand zufällig, ob man BIND 9.5.1 beibringen kann, die Statistiken wie früher immer neu zu dumpen, statt sie an die alte Datei anzuhängen? Sonst wird sich wohl ein Cronjob der Sache annehmen müssen, der die Datei rotiert - oder regelmäßig löscht.&lt;/p&gt;  
    </content:encoded>

    <pubDate>Mon, 18 May 2009 07:40:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1422-guid.html</guid>
    <category>debian</category>
<category>lenny</category>
<category>Munin</category>

</item>
<item>
    <title>INN und SSL/TLS (Debian Lenny)</title>
    <link>http://th-h.de/blog/archives/1411-INN-und-SSLTLS-Debian-Lenny.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1411-INN-und-SSLTLS-Debian-Lenny.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1411</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1411</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Das Internet ist schon lange kein friedlicher Ort mehr, an dem jeder jedem trauen kann - und deshalb wurden die ursprünglichen, unverschlüsselten Kommunikationsprotokolle schon lange durch kryptograhpisch abgesicherte Variationen ersetzt. Telnet verwendet heute wohl niemand mehr offen im Netz, stattdessen gibt es SSH; auch im Mailverkehr pflegt man - hoffentlich - zumindest das Paßwort beim Abruf über POP3 via APOP und beim Versand via SMTP über eine SMTP-Aut-Variante mit Verschlüsselung zu sichern, wenn man nicht ohnehin die ganze Kommunikation SSL-verschlüsselt, und auch diejenigen, die FTP noch nicht durch SCP/SFTP ersetzt haben, nutzen hoffentlich wenigstens SSL, um die Paßwortübertragung zu verschlüsseln.&lt;/p&gt;
&lt;p&gt;So weit, so gut, aber schon vor einer ganzen Weile fiel mir auf, daß diese Regel für Netnews (NNTP) offenbar nicht gilt (und für UUCP oft auch nicht ...); denn zu seinem oder seinen Newsserver(n) verbindet man sich oft genug noch unverschlüsselt, obwohl auch dort ein Paßwort übertragen wird. So ging es zumindest mir, und ich habe mich am vergangenen Wochenende entschlossen, dagegen etwas zu unternehmen und auch die Verbindung zumindest zu meinem eigenen Newsserver zu verschlüsseln.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Das ist - mit dem INN 2.4.5-Paket aus Debian Lenny - eigentlich ganz einfach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ein SSL/TLS-fähiger &lt;em&gt;nnrpd&lt;/em&gt; ist bereits vorhanden (&lt;em&gt;nnrpd-ssl&lt;/em&gt;). Wer nicht das vorgenannte Paket verwendet, muß den INN (oder zumindest den &lt;em&gt;nnrpd&lt;/em&gt;) ggf. mit &amp;#8220;&lt;em&gt;configure --with-openssl&lt;/em&gt;&amp;#8221; noch einmal kompilieren.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Schlüssel muß man sich erzeugen, sofern noch nicht vorhanden. Vorhandene Zertifikate bzw. Schlüssel sollte man vielleicht am einfachsten kopieren; standardmäßig werden sie in &lt;em&gt;/etc/news &lt;/em&gt;gesucht. Das ist verhandelbar respektive konfigurierbar, aber das Zertifikat und der Schlüssel müssen dem User &lt;em&gt;news &lt;/em&gt;gehören und die Rechte &lt;em&gt;600 &lt;/em&gt;aufweisen. &lt;/li&gt;
&lt;li&gt;Die Konfigurationsdatei &lt;em&gt;/etc/news/sasl.conf&lt;/em&gt; muß editiert (oder ggf. angelegt) werden, um die korrekten Pfade zum Zertifikat und dem privaten Schlüssel des Servers aufzunehmen. &amp;#8220;&lt;em&gt;tls_cert_file&lt;/em&gt;&amp;#8221; und &amp;#8220;&lt;em&gt;tls_key_file&lt;/em&gt;&amp;#8221; sind die relevanten Parameter. &lt;/li&gt;
&lt;li&gt;Danach muß der &lt;em&gt;nnrpd-ssl&lt;/em&gt; nur noch veranlasst werden, auf Port 563 (NNTPS) zu lauschen. Das kann man u.a. über den &lt;em&gt;(x)inetd&lt;/em&gt; erreichen, indem man bspw. folgende Konfigurationsdatei in &lt;em&gt;/etc/xinet.d/ &lt;/em&gt;einwirft: 
&lt;blockquote&gt;
&lt;p&gt;service nntps&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160; socket_type&amp;#160;&amp;#160;&amp;#160;&amp;#160; = stream&lt;br /&gt;&amp;#160;&amp;#160; protocol&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = tcp&lt;br /&gt;&amp;#160;&amp;#160; wait&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = no&lt;br /&gt;&amp;#160;&amp;#160; user&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = news&lt;br /&gt;&amp;#160;&amp;#160; group&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = news&lt;br /&gt;&amp;#160;&amp;#160; server&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = /usr/lib/news/bin/nnrpd-ssl&lt;br /&gt;&amp;#160;&amp;#160; server_args&amp;#160;&amp;#160;&amp;#160;&amp;#160; = -S -p 563&lt;br /&gt;}&lt;/p&gt;
&lt;/blockquote&gt;Voraussetzung dafür ist, daß die &lt;em&gt;/etc/services&lt;/em&gt; den Service &amp;#8220;nntps&amp;#8221; kennt. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voila. Wer mag, kann auch noch eine CA daran anflanschen und bspw. Nutzer statt via Paßwort auch via Zertifikat authentifizieren, indem er die &lt;em&gt;readers.conf&lt;/em&gt; entsprechend anpaßt, aber daran habe ich keinen Bedarf; mir genügt die Verschlüsselung der Verbindung zwischen Server und Client.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;(Danke an &lt;a title=&quot;Viktor Kafke&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1239&amp;amp;entry_id=1411&quot;  onmouseover=&quot;window.status=&#039;http://www.kafke.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Viktor Kafke&lt;/a&gt; für die entsprechenden Tips.)&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 27 Apr 2009 20:55:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1411-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>inn</category>
<category>lenny</category>
<category>usenet</category>

</item>
<item>
    <title>Debian Lenny: erste Erfahrungen</title>
    <link>http://th-h.de/blog/archives/1402-Debian-Lenny-erste-Erfahrungen.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1402-Debian-Lenny-erste-Erfahrungen.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1402</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1402</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;div style=&quot;width: 110px;&quot; class=&quot;serendipity_imageComment_left&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a href=&quot;http://th-h.de/blog/uploads/2009-04-19-haystack-df.png&quot; class=&quot;serendipity_image_link&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-19-haystack-df.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:309 --&gt;&lt;img height=&quot;76&quot; width=&quot;110&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-19-haystack-df.serendipityThumb.png&quot;    class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Platzverbrauch auf / gestiegen.&lt;/div&gt; 
&lt;/div&gt; 
&lt;div style=&quot;width: 110px;&quot; class=&quot;serendipity_imageComment_right&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a href=&quot;http://th-h.de/blog/uploads/2009-04-19-greenmeadow-memory.png&quot; class=&quot;serendipity_image_link&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-19-greenmeadow-memory.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:308 --&gt;&lt;img height=&quot;92&quot; width=&quot;110&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-19-greenmeadow-memory.serendipityThumb.png&quot;    class=&quot;serendipity_image_left&quot; /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Speicherauslastung unter dem Strich unverändert.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;Nachdem ich in den letzten Tagen einige Maschinen - heimische und Mietserver, letztere mit und ohne serielle Konsole - von Debian Etch auf Lenny hochgezogen haben, sind mir dabei einige Gemeinsamkeiten aufgefallen. Zunächst vielleicht das wichtigste: die in den &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1110&amp;amp;entry_id=1402&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Release Notes for Debian GNU/Linux 5.0 (lenny), Chapter 4: Upgrading&quot;&gt;Release Notes&lt;/a&gt; angesprochenen Probleme mit neu nummerierten Devices oder gar Problemen beim Auffinden des Root-Filesystems beim Reboot (&lt;span class=&quot;section&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1111&amp;amp;entry_id=1402&quot; title=&quot;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#device-reorder&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#device-reorder&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Device enumeration reordering&lt;/a&gt;, &lt;span class=&quot;section&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url=aHR0cDovL3d3dy5kZWJpYW4ub3JnL3JlbGVhc2VzL2xlbm55L2kzODYvcmVsZWFzZS1ub3Rlcy9jaC11cGdyYWRpbmcuZW4uaHRtbCNib290LWhhbmdz&amp;amp;entry_id=1402&quot; title=&quot;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#boot-hangs&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#boot-hangs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;System boot hangs on &lt;code class=&quot;literal&quot;&gt;Waiting for root file
  system&lt;/code&gt;&lt;/a&gt;) sind bei mir glücklicherweise in keinem Fall aufgetreten; das verlief vielmehr alles durchaus problemlos, sei es mit &lt;em&gt;LILO&lt;/em&gt; als Bootloader (ggf. an Verkleinerung der RAM-Disk denken, &lt;span class=&quot;section&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1112&amp;amp;entry_id=1402&quot; title=&quot;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#prepare-initramfs&quot;  onmouseover=&quot;window.status=&#039;http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.en.html#prepare-initramfs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Prepare initramfs for &lt;acronym title=&quot;LInux LOader&quot;&gt;LILO&lt;/acronym&gt;&lt;/a&gt;!) oder mit &lt;em&gt;grub&lt;/em&gt;. Das hat mich besonders erleichtert, weil, wie gesagt, nicht alle entfernten Maschinen über eine serielle Konsole und damit über die Möglichkeit eines einfachen Zugriffs bei Bootproblemen verfügen.&lt;/p&gt; 
&lt;p&gt;Auch ansonsten verliefen die Upgrades an und für sich - bei der in den Release Notes empfohlenen Vorgehensweise - erfreulich unproblematisch. Das gehört auch zu den Dingen, die ich an Debian besonders schätze: der Upgrade-Prozeß ist in der Regel schmerzlos, gut dokumentiert und getestet. Hilfreich insbesondere, wenn man sich in den eher zentralen und maschinennahen Bereichen nicht so besonders auskennt und/oder keinen unmittelbaren Zugriff auf das System hat.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 110px;&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://th-h.de/blog/uploads/2009-04-19-flock-entropy.png&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-19-flock-entropy.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:306 --&gt;&lt;img height=&quot;60&quot; width=&quot;110&quot; class=&quot;serendipity_image_left&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-19-flock-entropy.serendipityThumb.png&quot;    /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Mehr Entropie ...&lt;/div&gt; 
&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_right&quot; style=&quot;width: 110px;&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://th-h.de/blog/uploads/2009-04-19-greenmeadow-entropy.png&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-19-greenmeadow-entropy.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:307 --&gt;&lt;img height=&quot;60&quot; width=&quot;110&quot; class=&quot;serendipity_image_right&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-19-greenmeadow-entropy.serendipityThumb.png&quot;    /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;... zumindest manchmal.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;Schon allein ein Blick auf Munin zeigt aber einige Veränderungen, die sich aus den in den Beitrag eingestreuten Graphiken ergeben. Dass der Platzverbrauch im Rootverzeichnis - genauer wohl in &lt;em&gt;/libs&lt;/em&gt; - gestiegen ist, hatte ich schon vorgestern nach dem Update der ersten Maschine &lt;a href=&quot;http://th-h.de/blog/archives/1400-Debian-Lenny-und-Belkin-Sentry-Bulldog.html&quot; title=&quot;Debian Lenny und Belkin Sentry Bulldog&quot;&gt;berichtet&lt;/a&gt;. Das ist aber natürlich nicht die einzige Veränderung - es gibt auch positives zu berichten. So hatte ich zuerst den Eindruck gewonnen, daß die Speicherauslastung zurückgegangen ist, nicht nur, soweit sich die Buffer nach dem Reboot erst einmal wieder füllen müssen, sondern auch, soweit der von Applikationen in Anspruch genommene Speicher betroffen ist. Das scheint mir aber ein Irrtum gewesen zu sein; mit der Zeit steuert die Auslastung wieder dem bisherigen Wert zu. Was sich aber definitiv direkt um Größenordnungen erhöht und insoweit verbessert hat, ist die zur Verfügung stehende Entropie, wichtig für die Erzeugung von Zufallswerten, insbesondere auch im Zusammenhang mit der Verschlüsselung. Auf den meisten Maschinen ist die Erhöhung eine generelle, auf einer Maschine ist sie zumindest eine temporäre. Zumindest auf einer Maschine hat sich auch die Anzahl der MySQL-Queries spürbar verringert; das erscheint mir aber eher zufällig zu sein (oder steckt vielleicht irgendwo im neuen INN drin - denn der dürfte auf dieser Maschine für die SQL-Queries in erster Linie verantwortlich sein).&lt;/p&gt; &lt;div style=&quot;width: 110px;&quot; class=&quot;serendipity_imageComment_right&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a href=&quot;http://th-h.de/blog/uploads/2009-04-19-haystack-mysql_queries.png&quot; class=&quot;serendipity_image_link&quot; onmouseover=&quot;return overlib(&#039;&lt;img src=/blog/uploads/2009-04-19-haystack-mysql_queries.png&gt;&#039;, WIDTH, 1, HEIGHT, 1);&quot; onmouseout=&quot;return nd();&quot; &gt;&lt;!-- s9ymdb:310 --&gt;&lt;img height=&quot;76&quot; width=&quot;110&quot; src=&quot;http://th-h.de/blog/uploads/2009-04-19-haystack-mysql_queries.serendipityThumb.png&quot;    class=&quot;serendipity_image_right&quot; /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Deutlich weniger MySQL-Queries.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;Ansonsten finden sich die meisten Veränderungen, wie in den Release Notes schon angekündigt, rund um den Apache herum: die Konfigurationsdatei wurde deutlich entschlackt und die Konfiguration von Modulen in die entsprechenden Module - in &lt;em&gt;mods-available/&lt;/em&gt; - verschoben, &lt;em&gt;phpMyAdmin&lt;/em&gt; wird nicht mehr über einen Symlink, sondern direkt über einen Alias aus der Serverkonfiguration (in &lt;em&gt;conf.d/phpmyadmin.conf&lt;/em&gt;, ein Symlin auf &lt;em&gt;/etc/phpmyadmin/apache.conf&lt;/em&gt;) eingebunden, und &lt;em&gt;mod_suphp&lt;/em&gt; muß auf einen anderen MIME-Type reagieren &lt;em&gt;(application/x-httpd-php&lt;/em&gt; statt &lt;em&gt;x-httpd-php&lt;/em&gt;) und wird per default für &lt;em&gt;/usr/share&lt;/em&gt;, wo die in Debian gepackageten Webapplikationen liegen, deaktiviert (in &lt;em&gt;mods-available/suphp.conf&lt;/em&gt;). Das erfordert ggf. einige Nacharbeit. Hat man zum Beispiel bisher den https-Zugriff auf &lt;em&gt;phpMyAdmin &lt;/em&gt;dadurch erzwungen, daß das &lt;em&gt;DocumentRoot&lt;/em&gt; für den normalen, unverschlüsselten Zugriff auf den Server nicht auf &lt;em&gt;/var/www/&lt;/em&gt; zeigt, sondern auf ein anderes Verzeichnis, so daß &lt;em&gt;phpMyAdmin&lt;/em&gt; nur beim Aufruf per https gefunden werden konnte, hilft das jetzt nicht mehr, denn per Alias-Direktive wird es immer eingebunden. Hier kann man stattdessen an der passenden Stelle ein &lt;em&gt;SSLRequireSSL&lt;/em&gt; in &lt;em&gt;/etc/phpmyadmin/apache.conf &lt;/em&gt;einsetzen. Wenn man auch die Webapplikationen (weiterhin) nicht unter &lt;em&gt;mod_php&lt;/em&gt;, sondern unter &lt;em&gt;mod_suphp&lt;/em&gt; laufen lassen will (vielleicht schon deshalb, weil man mod_php gar nicht installiert hat), dann sollte man die entsprechenden Änderungen in &lt;em&gt;mods-available/suphp.conf&lt;/em&gt; auskommentieren.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Schließlich beschwerte sich &lt;em&gt;pam_env&lt;/em&gt; bei mir seit dem Upgrade, daß es &lt;em&gt;/etc/default/locale&lt;/em&gt; nicht finden könne. Ein Anlegen der Datei beseitigt diese Fehlermeldungen aus dem Logfile.&lt;/p&gt; 
&lt;p&gt;Eine Sache ist mir allerdings noch etwas schleierhaft, und zwar hatte ich zumindest auf einer Maschine das Problem, das php-cgi ab und an segfaultet:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;Apr 16 19:50:37 machine kernel: [113175.233973] php-cgi[2618]: segfault at b6d62eae ip b638e3cf sp b6b940b8 error 4 in libgcc_s.so.1[b6387000+c000]&lt;br /&gt;Apr 17 01:25:27 machine kernel: [134723.984243] php-cgi[31344]: segfault at b6c94eae ip b62c03cf sp b6ac60b8 error 4 in libgcc_s.so.1[b62b9000+c000]&lt;br /&gt;Apr 17 18:08:37 machine kernel: [199692.119127] php-cgi[21780]: segfault at b6d2be90 ip b6d2be90 sp b6b5d3ac error 4 in librt-2.7.so[b771f000+7000]&lt;br /&gt;Apr 17 18:14:32 machine kernel: [200072.558515] php-cgi[22441]: segfault at b6cd9e90 ip b6cd9e90 sp b6b0b3ac error 4 in libtasn1.so.3.0.15[b759d000+f000]&lt;br /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Das tut es eben nicht immer, nur manchmal, vorher nicht und seitdem auch nicht mehr. Google hat mir eine entsprechende Anfrage eines Nutzers auf der &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1117&amp;amp;entry_id=1402&quot;  onmouseover=&quot;window.status=&#039;http://lists.debian.org/debian-user/2009/02/msg01717.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;php-cgi segfault problem&quot;&gt;Debian-User-Mailingliste&lt;/a&gt; aus dem Februar präsentiert, die allerdings bisher AFAIS ohne Antwort geblieben ist; dort scheinen mir dieselben Symptome dargestellt zu sein. Fällt jemand etwas dazu ein?&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 17 Apr 2009 20:12:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1402-guid.html</guid>
    <category>debian</category>
<category>lenny</category>

</item>
<item>
    <title>Apache 2.x, php-cgi, mod_suphp und &quot;No input file specified!&quot;</title>
    <link>http://th-h.de/blog/archives/1403-Apache-2.x,-php-cgi,-mod_suphp-und-No-input-file-specified!.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1403-Apache-2.x,-php-cgi,-mod_suphp-und-No-input-file-specified!.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1403</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1403</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Im Zusammenhang mit dem Update einer Maschine auf Debian Lenny bin ich auf das seltsame Phänomen einer - offensichtlich von PHP erzeugten - Fehlermedlung gestoßen: der Aufruf einer bestimmten Webseite (respektive des PHP-Scripts, das diese erzeugen sollte) ergibt nur die Meldung &amp;#8220;No input file specified!&amp;#8221;. Google führt einen zu diversen Threads, die sich vor allem um die Konfiguration des richtigen Handlers für die Interpretation von PHP-Scripts und um hilflose Fragen von Benutzern, die eigentlich nur ein fertiges Paket installieren wollten und nun nicht mehr weiter wissen, drehen. Erst ein alter Blogeintrag in &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1627&amp;amp;entry_id=1403&quot; title=&quot;http://blog.vodkamelone.de/archives/40-No-input-file-specified-reloaded-oder-komische-Fehlermeldungen-und-noch-komischere-Ursachen.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.vodkamelone.de/archives/40-No-input-file-specified-reloaded-oder-komische-Fehlermeldungen-und-noch-komischere-Ursachen.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ixs&amp;#8217; Vodkamelone&lt;/a&gt; (nein, das hat nichts mit einem Kamel Nr. Eins zu tun!) von 2005 half mir auf die Sprünge.&lt;/p&gt; 
&lt;p&gt;Der Grund dieser Fehlermeldung ist offenbar ein ganz seltsames Zusammenspiel der Ausführung von PHP als &lt;em&gt;mod_suphp&lt;/em&gt;, d.h. der CGI-Version von PHP in der Weise, daß Scripts unter den Rechten des jeweiligen Benutzers ausgeführt werden, mit der Vergabe von Datei- und Verzeichnisrechten. Die oben genannten Fehlermeldung tritt demnach genau dann auf, wenn zwar der Webserver auf die Datei bzw. ihr Verzeichnis zugreifen, sie also &amp;#8220;finden&amp;#8221; kann, der Benutzer selbst aber nicht. Dann findet der Webserver - unter der UID &lt;em&gt;www-data&lt;/em&gt; - das Script, erkennt es, ruft den Handler auf, der als suid root installiert ist, sich Root-Rechte verschafft, damit auf die UID des Benutzers wechselt und dann mit diesen Rechten den PHP-Interpreter aufruft, um ihn das Script ausführen zu lassen. Dieser PHP-Prozess, der jetzt aber im Kontext des Benutzers läuft, kann dann selbst auf das entsprechende Verzeichnis nicht mehr zugreifen, das Script also auch nicht ausführen, und reagiert dann mit der obigen Fehlermeldung, denn er findet ja keine Datei, die er ausführen könnte.&lt;/p&gt; 
&lt;p&gt;Vielleicht hilfts ja jemanden, wenn ich ixs&amp;#8217; Analyse her noch einmal wiedergebe und verlinke. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Fri, 17 Apr 2009 17:03:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1403-guid.html</guid>
    <category>Apache</category>
<category>Debian</category>
<category>Lenny</category>
<category>PHP</category>

</item>
<item>
    <title>Debian Lenny und Munin</title>
    <link>http://th-h.de/blog/archives/1401-Debian-Lenny-und-Munin.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1401-Debian-Lenny-und-Munin.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1401</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1401</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Beim Upgrade eines Systems, auf dem ein Munin-Client läuft, von Debian Etch auf Debian Lenny sind ggf. einige Handgriffe nötig, damit Munin weiterhin ordnungsgemäß funktioniert.&lt;/p&gt;
&lt;p&gt;Zum einen muß ggf. für die Apache-Statistiken der Konfigurationseintrag für &lt;em&gt;mod_status&lt;/em&gt; (wieder) ergänzt werden, weil er von der &lt;em&gt;apache2.conf&lt;/em&gt; in die Modulkonfiguration in &lt;em&gt;mods-available/status.conf&lt;/em&gt; umgezogen ist. &lt;em&gt;&amp;#8220;Allow from localhost 127.0.0.1&amp;#8221;&lt;/em&gt; sollte sich dort finden, und ggf. &lt;em&gt;&amp;#8220;ExtendedStatus On&amp;#8221;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Problematischer ist das Update von BIND auf Version 9.5.1; im Debian-Paket gibt es zwar ohnehin kein Plugin für den Nameserver, aber wer bisher das &lt;em&gt;bind_&lt;/em&gt;-Plugin von &lt;a title=&quot;MuninExchange&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1120&amp;amp;entry_id=1401&quot;  onmouseover=&quot;window.status=&#039;http://muninexchange.projects.linpro.no/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;MuninExchange&lt;/a&gt; verwendet hat, stößt auf das Problem, das dieses nicht mit BIND 9.5.x kompatibel ist. Der Grund dafür liegt in dem unterschiedlichen Format der von BIND erzeugten Statistikdatei. Die neue Version ist da viel ausführlicher, hat aber eben auch ein ganz anderes Format.&lt;/p&gt;
&lt;p&gt;Daher habe ich das Plugin quick&amp;#8217;n&amp;#8217;dirty auf das neue Format umgeschrieben. Ob es überhaupt noch möglich ist, die Statistiken nur für bestimmte Domains zu sammeln, wie es das &lt;em&gt;bind_&lt;/em&gt;-Plugin anbietet, weiß ich nicht; dieses Feature habe ich nicht benutzt. Jedenfalls kann man mit dem &amp;#8220;neuen&amp;#8221; Plugin nahtlos an die alten Munin-Graphiken anschließen; daher sammelt es auch nur (genau) die Daten, die auch das alte Plugin angeboten hat, auch wenn das neue Statistik-Format ggf. weitergehende Informationen bereit hält (mit einer Ausnahme: die Referrals scheinen nicht mehr geloggt zu werden). Meine Lösung ist nicht von der Perfektion weit entfernt, schon deshalb, weil sie teilweise Werte etwas willkürlich auf die alten Kategorien mappt (bspw. bei &amp;#8220;failures&amp;#8221;), aber es tut, und wie meine Graphen zeigen, sind die Werte von der Größenordnung her vergleichbar mit den früher erfassten. Dass BIND 9.5.x die Statistikdatei im übrigen nicht - wie offensichtlich früher der Fall - überschreibt, sondern die neuen Werte jeweils anhängt, stört gleichfalls nicht, weil das Plugin immer nur den letzten Match auswertet.&lt;/p&gt;
&lt;p&gt;Wenn jemand Interesse daran hat - oder sich um eine Verbesserung kümmern möchte, für die mir momentan die Zeit fehlt, kann er sich das Plugin &lt;a title=&quot;Munin-Plugin bind95&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1121&amp;amp;entry_id=1401&quot;  onmouseover=&quot;window.status=&#039;http://playground.th-h.de/kram/bind95&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;bind95&lt;/a&gt; gerne herunterladen; Kommentare sind willkommen.&lt;/p&gt;
&lt;p&gt;Wer seine bisherigen Munin-Graphen nahtlos weiterführen will, muß dafür sorgen, daß der symbolische Link - oder die Datei - in &lt;em&gt;/etc/munin/plugins/&lt;/em&gt; denselben Namen (&amp;#8220;&lt;em&gt;bind_&lt;/em&gt;&amp;#8221;) wie bisher trägt, oder die Datensammlungen in &lt;em&gt;/var/lib/munin/&lt;strong&gt;$DOMAIN&lt;/strong&gt;/&lt;/em&gt; entsprechend umbennen, d.h. von &lt;em&gt;/var/lib/munin/&lt;strong&gt;$DOMAIN&lt;/strong&gt;/&lt;strong&gt;$HOST&lt;/strong&gt;-bind_-*.rrd &lt;/em&gt;nach &lt;em&gt;/var/lib/munin/&lt;strong&gt;$DOMAIN&lt;/strong&gt;/&lt;strong&gt;$HOST&lt;/strong&gt;-bind95-*.rrd&lt;/em&gt;. Und, wie immer: ein Backup schadet nicht ...&lt;/p&gt;  
    </content:encoded>

    <pubDate>Thu, 16 Apr 2009 20:33:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1401-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>lenny</category>
<category>munin</category>

</item>

</channel>
</rss>