<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://wiki.redatek.de/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://wiki.redatek.de/feed.php">
        <title>dynaDAT | UNIXoni | REDATEK | ITVeteran  - wiki</title>
        <description></description>
        <link>http://wiki.redatek.de/</link>
        <image rdf:resource="http://wiki.redatek.de/_media/logo.png" />
       <dc:date>2026-10-16T21:55:35+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:adaptec_logicaldrive?rev=1777790831&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:ausfall_raid_hdd?rev=1777790822&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:dokuwiki?rev=1788783843&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:informix_rowid?rev=1777790819&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:iphone_video?rev=1777790832&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:letsencrypt_webpath_docker_renew?rev=1777790807&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:logger?rev=1788972589&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:sudoer?rev=1788783843&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.redatek.de/wiki:xfs_error_kernel?rev=1777790816&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://wiki.redatek.de/_media/logo.png">
        <title>dynaDAT | UNIXoni | REDATEK | ITVeteran </title>
        <link>http://wiki.redatek.de/</link>
        <url>http://wiki.redatek.de/_media/logo.png</url>
    </image>
    <item rdf:about="http://wiki.redatek.de/wiki:adaptec_logicaldrive?rev=1777790831&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:47:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adaptec_logicaldrive</title>
        <link>http://wiki.redatek.de/wiki:adaptec_logicaldrive?rev=1777790831&amp;do=diff</link>
        <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;austausch_von_festplatten_und_erstellen_eines_neuen_logical_drives_mit_arcconf&quot;&gt;Austausch von Festplatten und Erstellen eines neuen Logical Drives mit arcconf&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dieser Beitrag beschreibt, wie man ein defektes Logical Drive ersetzt, indem alle vier Festplatten (HDDs) ausgetauscht werden. Achte darauf, dass alle Festplatten vom gleichen Typ sind, da unterschiedliche Laufwerksgeometrien zu Ausfällen führen können.
&lt;/p&gt;

&lt;p&gt;
Das Tool „arcconf“ kann von der offiziellen Seite von ADAPTEC heruntergeladen werden:  
&lt;a href=&quot;https://storage.microsemi.com/en-us/downloads/storage_manager/sm/productid=sas-6805e&amp;amp;dn=adaptec+raid+6805e.php&quot; class=&quot;urlextern&quot; title=&quot;https://storage.microsemi.com/en-us/downloads/storage_manager/sm/productid=sas-6805e&amp;amp;dn=adaptec+raid+6805e.php&quot; rel=&quot;ugc nofollow&quot;&gt;ADAPTEC RAID 6805E Downloadseite&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Austausch von Festplatten und Erstellen eines neuen Logical Drives mit arcconf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;austausch_von_festplatten_und_erstellen_eines_neuen_logical_drives_mit_arcconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-587&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;schritt-fuer-schritt-anleitung&quot;&gt;Schritt-für-Schritt-Anleitung&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;1. Logical Drive löschen&lt;/strong&gt;
Um das bestehende Logical Drive zu löschen, nutze den folgenden Befehl:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  
  linux_x64/arcconf delete 1 logicaldrive 2
  &lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;2. Überprüfen des HDD-Status&lt;/strong&gt;
Prüfe nach dem Löschen des Logical Drives, ob alle Festplatten im Status „Ready“ zur Verfügung stehen:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; 
  linux_x64/arcconf getconfig 1
  &lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;3. Neues Logical Drive erstellen&lt;/strong&gt;
Erstelle ein neues Logical Drive mit den folgenden Parametern:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  
  linux_x64/arcconf create 1 logicaldrive max 10 0 4 0 5 0 6 0 7
  &lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;4. Status des neuen Drives überprüfen&lt;/strong&gt;
Stelle sicher, dass das neu erstellte Logical Drive den Status „optimal“ hat:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  
  linux_x64/arcconf getconfig 1 ld
  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Schritt-f\u00fcr-Schritt-Anleitung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;schritt-fuer-schritt-anleitung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;588-1342&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;wichtige_hinweise&quot;&gt;Wichtige Hinweise&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Achte darauf, dass alle Festplatten vom gleichen Typ sind.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Unterschiedliche Laufwerksgeometrien können zu Ausfällen führen.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Verwende immer die aktuellste Version von arcconf.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Durch diese Schritte wird ein neues Logical Drive mit den ausgetauschten Festplatten erstellt und korrekt konfiguriert.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wichtige Hinweise&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wichtige_hinweise&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1343-1683&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;Adaptec, arcconf, RAID, Logical Drive, HDD, 6805E&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1684-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:ausfall_raid_hdd?rev=1777790822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:47:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ausfall_raid_hdd</title>
        <link>http://wiki.redatek.de/wiki:ausfall_raid_hdd?rev=1777790822&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;arcconf_arbeiten_mit_raid-volumes_unter_linux&quot;&gt;arcconf – Arbeiten mit RAID-Volumes unter Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ein Logical Drive (LD) meldet eine ausgefallene Festplatte (HDD). Die folgenden Schritte helfen bei der Diagnose und Reparatur mittels `arcconf`.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;arcconf \u2013 Arbeiten mit RAID-Volumes unter Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arcconf_arbeiten_mit_raid-volumes_unter_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-212&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;rescan_aller_devices&quot;&gt;1. Rescan aller Devices&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Führt eine erneute Erkennung aller Geräte durch.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf rescan 1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Rescan aller Devices&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rescan_aller_devices&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;213-329&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;rebuild_anstossen_wenn_automatisch_moeglich&quot;&gt;2. Rebuild anstoßen (wenn automatisch möglich)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ein funktionierender Versuch:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf task start 1 device 0 initialize
linux_x64/arcconf rescan 1&lt;/pre&gt;

&lt;p&gt;
→ Danach begann automatisch ein Rebuild.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. Rebuild ansto\u00dfen (wenn automatisch m\u00f6glich)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rebuild_anstossen_wenn_automatisch_moeglich&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;330-547&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;device_feststellen&quot;&gt;3. Device feststellen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Listet physikalische und logische Geräte auf.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf getconfig 1 pd&lt;/pre&gt;

&lt;p&gt;
Hinweis:  
* &lt;strong&gt;PD&lt;/strong&gt; = Physical Device  
* &lt;strong&gt;LD&lt;/strong&gt; = Logical Device
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. Device feststellen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;device_feststellen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;548-731&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;device_loeschen_clear&quot;&gt;4. Device löschen (clear)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Setzt ein Device zurück (z. B. nach Austausch oder Fehlerstatus).  
Achtung: Vorher Device-Nummer herausfinden über `getconfig`.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf task start 1 device 0 1 clear&lt;/pre&gt;

&lt;p&gt;
→ Syntax: `device &amp;lt;Channel&amp;gt; &amp;lt;Device&amp;gt;`
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4. Device l\u00f6schen (clear)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;device_loeschen_clear&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;732-996&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;device_pruefen_oder_reparieren&quot;&gt;5. Device prüfen oder reparieren&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf task start 1 device 0 0 verify
linux_x64/arcconf task start 1 device 0 0 verify_fix&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5. Device pr\u00fcfen oder reparieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;device_pruefen_oder_reparieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;997-1149&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;danachdevices_erneut_scannen&quot;&gt;6. Danach: Devices erneut scannen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf rescan 1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6. Danach: Devices erneut scannen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;danachdevices_erneut_scannen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1150-1225&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;logical_drive_pruefen&quot;&gt;7. Logical Drive prüfen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf task start 1 logicaldrive 0 verify_fix&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;7. Logical Drive pr\u00fcfen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logical_drive_pruefen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1226-1322&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;hdd_austauschen_und_identifizieren&quot;&gt;8. HDD austauschen und identifizieren&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lässt die LED des betreffenden Geräts blinken, zur physischen Identifikation.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux_x64/arcconf identify 1 device 0 0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;8. HDD austauschen und identifizieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hdd_austauschen_und_identifizieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1323-1495&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;hinweise&quot;&gt;Hinweise&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Immer vorher aktuelle Konfiguration sichern.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Im Zweifel zuerst `getconfig` nutzen.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Prüfen, ob „hot spare“ eingerichtet ist.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rebuild-Status regelmäßig beobachten mit:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;  linux_x64/arcconf getstatus 1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hinweise&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hinweise&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;1496-1744&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;RAID, arcconf, Adaptec, Logical Drive, HDD, Rebuild, Linux&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;1745-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:dokuwiki?rev=1788783843&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-07T12:24:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dokuwiki</title>
        <link>http://wiki.redatek.de/wiki:dokuwiki?rev=1788783843&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki&quot;&gt;DokuWiki&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/wiki%3Adokuwiki&quot; class=&quot;media&quot; title=&quot;https://www.dokuwiki.org/wiki%3Adokuwiki&quot;&gt;&lt;img src=&quot;http://wiki.redatek.de/_media/wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; DokuWiki is a simple to use and highly versatile Open Source &lt;a href=&quot;https://en.wikipedia.org/wiki/wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/wiki&quot;&gt;wiki&lt;/a&gt; software that doesn&amp;#039;t require a database. It is loved by users for its clean and readable &lt;a href=&quot;http://wiki.redatek.de/wiki:syntax&quot; class=&quot;wikilink2&quot; title=&quot;wiki:syntax&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;syntax&lt;/a&gt;. The ease of maintenance, backup and integration makes it an administrator&amp;#039;s favorite. Built in &lt;a href=&quot;https://www.dokuwiki.org/acl&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/acl&quot;&gt;access controls&lt;/a&gt; and &lt;a href=&quot;https://www.dokuwiki.org/auth&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/auth&quot;&gt;authentication connectors&lt;/a&gt; make DokuWiki especially useful in the enterprise context and the large number of &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;plugins&lt;/a&gt; contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.
&lt;/p&gt;

&lt;p&gt;
Read the &lt;a href=&quot;https://www.dokuwiki.org/manual&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/manual&quot;&gt;DokuWiki Manual&lt;/a&gt; to unleash the full power of DokuWiki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-704&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;download&quot;&gt;Download&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki is available at &lt;a href=&quot;https://download.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://download.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;https://download.dokuwiki.org/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Download&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;705-784&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;read_more&quot;&gt;Read More&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All documentation and additional information besides the &lt;a href=&quot;http://wiki.redatek.de/wiki:syntax&quot; class=&quot;wikilink2&quot; title=&quot;wiki:syntax&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;syntax description&lt;/a&gt; is maintained in the DokuWiki at &lt;a href=&quot;https://www.dokuwiki.org/&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/&quot;&gt;www.dokuwiki.org&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;About DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/features&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/features&quot;&gt;A feature list&lt;/a&gt; &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/users&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/users&quot;&gt;Happy Users&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/press&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/press&quot;&gt;Who wrote about it&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/blogroll&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/blogroll&quot;&gt;What Bloggers think&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.wikimatrix.org/show/DokuWiki&quot; class=&quot;urlextern&quot; title=&quot;https://www.wikimatrix.org/show/DokuWiki&quot; rel=&quot;ugc nofollow&quot;&gt;Compare it with other wiki software&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Installing DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/requirements&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/requirements&quot;&gt;System Requirements&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://download.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://download.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Download DokuWiki&lt;/a&gt; &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/changes&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/changes&quot;&gt;Change Log&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/Install&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Install&quot;&gt;How to install or upgrade&lt;/a&gt; &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;Configuration&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Using DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/syntax&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax&quot;&gt;Wiki Syntax&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/manual&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/manual&quot;&gt;The manual&lt;/a&gt; &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/FAQ&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/FAQ&quot;&gt;Frequently Asked Questions (FAQ)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/glossary&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/glossary&quot;&gt;Glossary&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Customizing DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/tips&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/tips&quot;&gt;Tips and Tricks&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/Template&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Template&quot;&gt;How to create and use templates&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Installing plugins&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/development&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/development&quot;&gt;Development Resources&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;DokuWiki Feedback and Community&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/newsletter&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/newsletter&quot;&gt;Subscribe to the newsletter&lt;/a&gt; &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/mailinglist&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/mailinglist&quot;&gt;Join the mailing list&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://forum.dokuwiki.org&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org&quot; rel=&quot;ugc nofollow&quot;&gt;Check out the user forum&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/irc&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/irc&quot;&gt;Talk to other users in the IRC channel&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/splitbrain/dokuwiki/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/splitbrain/dokuwiki/issues&quot; rel=&quot;ugc nofollow&quot;&gt;Submit bugs and feature wishes&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/thanks&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/thanks&quot;&gt;Some humble thanks&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Read More&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;read_more&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;785-2217&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;copyright&quot;&gt;Copyright&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
2004-2020 © Andreas Gohr &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; and the DokuWiki Community
&lt;/p&gt;

&lt;p&gt;
The DokuWiki engine is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.gnu.org/licenses/gpl.html&quot; rel=&quot;ugc nofollow&quot;&gt;GNU General Public License&lt;/a&gt; Version 2. If you use DokuWiki in your company, consider &lt;a href=&quot;https://www.dokuwiki.org/donate&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/donate&quot;&gt;donating&lt;/a&gt; a few bucks &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;.
&lt;/p&gt;

&lt;p&gt;
Not sure what this means? See the &lt;a href=&quot;https://www.dokuwiki.org/faq%3Alicense&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Alicense&quot;&gt;FAQ on the Licenses&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Copyright&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;copyright&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2218-2730&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;DokuWiki, Wiki, Wiki-Syntax, Dokumentation, Open Source, Installation, Konfiguration, Plugins, &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt;, Authentifizierung, Backups&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2731-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Please do not contact me for help and support – use the &lt;a href=&quot;https://www.dokuwiki.org/mailinglist&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/mailinglist&quot;&gt;mailinglist&lt;/a&gt; or &lt;a href=&quot;https://forum.dokuwiki.org&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org&quot; rel=&quot;ugc nofollow&quot;&gt;forum&lt;/a&gt; instead&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:informix_rowid?rev=1777790819&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:46:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>informix_rowid</title>
        <link>http://wiki.redatek.de/wiki:informix_rowid?rev=1777790819&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nutzung_der_rowid_in_sql_statements&quot;&gt;Nutzung der rowid in SQL Statements&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Die Verwendung der `rowid` in SQL-Statements sollte mit Vorsicht erfolgen und nach Möglichkeit vermieden werden. Dies gilt insbesondere im Kontext von Datenbankmigrationen oder bei der Verwendung von Datenbank-Wrapping-Technologien wie z.B. dem &lt;strong&gt;Informix-Wrapper&lt;/strong&gt; für PostgreSQL.
&lt;/p&gt;

&lt;p&gt;
Laut IBM-Dokumentation wird empfohlen, sich nicht auf `rowid` zu verlassen, da sie systemabhängig ist und sich unter bestimmten Umständen ändern kann.
(vgl. &lt;a href=&quot;https://www.ibm.com/docs/de/informix-servers/12.10.0?topic=statements-rowid-values-in-select&quot; class=&quot;urlextern&quot; title=&quot;https://www.ibm.com/docs/de/informix-servers/12.10.0?topic=statements-rowid-values-in-select&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.ibm.com/docs/de/informix-servers/12.10.0?topic=statements-rowid-values-in-select&lt;/a&gt;)
&lt;/p&gt;

&lt;p&gt;
In Informix ist `rowid` ein Integer-Wert. In PostgreSQL gibt es kein direktes Äquivalent, aber es existiert die systeminterne Spalte `ctid`, die eine ähnliche Funktion übernimmt.
(vgl. &lt;a href=&quot;https://www.enterprisedb.com/postgres-tutorials/what-equivalent-rowid-postgresql?lang=en&quot; class=&quot;urlextern&quot; title=&quot;https://www.enterprisedb.com/postgres-tutorials/what-equivalent-rowid-postgresql?lang=en&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.enterprisedb.com/postgres-tutorials/what-equivalent-rowid-postgresql?lang=en&lt;/a&gt; und &lt;a href=&quot;https://www.postgresql.org/docs/current/ddl-system-columns.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.postgresql.org/docs/current/ddl-system-columns.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.postgresql.org/docs/current/ddl-system-columns.html&lt;/a&gt;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nutzung der rowid in SQL Statements&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nutzung_der_rowid_in_sql_statements&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-950&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;unterschiede_zwischen_informix_rowid_und_postgresql_ctid&quot;&gt;Unterschiede zwischen Informix rowid und PostgreSQL ctid&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Der Informix-Wrapper leitet die `rowid` grundsätzlich an die PostgreSQL-`ctid` weiter. Dabei gibt es jedoch wichtige technische Unterschiede:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `rowid` in Informix ist ein einfacher &lt;strong&gt;Integer&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `ctid` in PostgreSQL ist ein &lt;strong&gt;Tupel bestehend aus (page_number, tuple_index)&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Der Informix-Wrapper setzt `rowid` auf den ersten Wert von `ctid`, also ergibt sich die übergebene Form: &lt;strong&gt;`ctid = (rowid, 0)`&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Unterschiede zwischen Informix rowid und PostgreSQL ctid&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unterschiede_zwischen_informix_rowid_und_postgresql_ctid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;951-1440&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;technische_eigenschaften_der_ctid_in_postgresql&quot;&gt;Technische Eigenschaften der ctid in PostgreSQL&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `ctid` ändert sich bei jeder &lt;strong&gt;UPDATE-Operation&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wird durch &lt;strong&gt;VACUUM FULL&lt;/strong&gt; neu zugewiesen.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Kann nach &lt;strong&gt;VACUUM ANALYZE&lt;/strong&gt; wiederverwendet werden.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ist systemintern und nicht als dauerhaft eindeutiger Schlüssel geeignet.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Technische Eigenschaften der ctid in PostgreSQL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;technische_eigenschaften_der_ctid_in_postgresql&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1441-1738&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;beste_praktiken&quot;&gt;Beste Praktiken&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Statt `rowid` oder `ctid` zu verwenden, sollten möglichst &lt;strong&gt;logische Identifikatoren&lt;/strong&gt; eingesetzt werden. Empfohlene Alternativen:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Primärschlüssel&lt;/strong&gt; nutzen (z.B. durch `SERIAL` oder `BIGSERIAL` erzeugt).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aufbau geeigneter &lt;strong&gt;Indexstrukturen&lt;/strong&gt; zur Performanceoptimierung.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Logische Referenzen&lt;/strong&gt; statt physischer Adressen (z.B. Foreign Keys auf Primärschlüssel).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Anpassung der Anwendung, um auf `rowid`/`ctid` zu verzichten.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Beste Praktiken&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;beste_praktiken&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1739-2215&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;moegliche_loesungen_bei_migration_oder_wrapper-nutzung&quot;&gt;Mögliche Lösungen bei Migration oder Wrapper-Nutzung&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Wenn eine bestehende Anwendung auf `rowid` angewiesen ist, gibt es folgende Workarounds:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Anlage einer &lt;strong&gt;eigenen physischen Spalte&lt;/strong&gt; `rowid` vom Typ `BIGSERIAL` in der PostgreSQL-Zielstruktur.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aufbau eines &lt;strong&gt;dedizierten Index&lt;/strong&gt; zur effizienten Suche.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Anpassung der SQL-Statements in der Anwendung, um die neue Struktur zu unterstützen.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Hinweis&lt;/strong&gt;: Die Verwendung von `ctid` als langfristiger Zeilenidentifikator sollte vermieden werden, da er sich durch normale Datenbankoperationen wie `UPDATE`, `VACUUM`, etc. verändern kann und somit nicht stabil ist.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;M\u00f6gliche L\u00f6sungen bei Migration oder Wrapper-Nutzung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;moegliche_loesungen_bei_migration_oder_wrapper-nutzung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2216-2855&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;fazit&quot;&gt;Fazit&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Die `rowid` bzw. `ctid` sind für temporäre oder systeminterne Zwecke nützlich, sollten jedoch &lt;strong&gt;nicht als zuverlässige Referenz&lt;/strong&gt; in langlebigen Anwendungen oder Datenmodellen verwendet werden. Stattdessen ist auf &lt;strong&gt;Primärschlüssel-basierte Logik&lt;/strong&gt; umzusteigen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fazit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fazit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2856-3143&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;Informix, PostgreSQL, rowid, ctid, FDW, Migration, Primärschlüssel&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3144-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:iphone_video?rev=1777790832&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:47:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iphone_video</title>
        <link>http://wiki.redatek.de/wiki:iphone_video?rev=1777790832&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;iphone_video_mov_in_mp4_umwandeln&quot;&gt;iPhone Video (.mov) in MP4 umwandeln&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Der, für mich, einfachste Weg:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  ffmpeg -i &amp;#039;iPhone.mov&amp;#039; -vcodec h264 -acodec mp2 video.mp4&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;iPhone Video (.mov) in MP4 umwandeln&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;iphone_video_mov_in_mp4_umwandeln&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-149&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;ffmpeg, iPhone, MOV, MP4, Video, Konvertierung&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;150-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:letsencrypt_webpath_docker_renew?rev=1777790807&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:46:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>letsencrypt_webpath_docker_renew</title>
        <link>http://wiki.redatek.de/wiki:letsencrypt_webpath_docker_renew?rev=1777790807&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;apache_konfiguration_fuer_let_s_encrypt_zertifikats-erneuerung_mit_podman&quot;&gt;Apache Konfiguration für Let&amp;#039;s Encrypt Zertifikats-Erneuerung mit Podman&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Um Let&amp;#039;s Encrypt Zertifikate in einem Container zu erneuern, ist eine spezifische Konfiguration des Apache Virtual Hosts erforderlich, da die Zertifikatserneuerung über einen Container erfolgt. Die folgende Konfiguration stellt sicher, dass Anfragen an die &lt;code&gt;/.well-known/acme-challenge&lt;/code&gt;-Ressourcen erfolgreich verarbeitet werden, selbst wenn der eigentliche DocumentRoot für die Webseite anders gesetzt ist.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Apache Konfiguration f\u00fcr Let&amp;#039;s Encrypt Zertifikats-Erneuerung mit Podman&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apache_konfiguration_fuer_let_s_encrypt_zertifikats-erneuerung_mit_podman&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-502&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;apache_vhost_konfiguration&quot;&gt;Apache VHost Konfiguration&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In der Apache-Konfigurationsdatei des Virtual Hosts wird der DocumentRoot auf das Verzeichnis der Webseite gesetzt. Da &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt; jedoch auf &lt;code&gt;/.well-known/acme-challenge&lt;/code&gt; zugreift, um die Zertifikate zu validieren, ist eine Alias-Direktive erforderlich, um Anfragen korrekt umzuleiten. Der relevante Ausschnitt der Konfiguration:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;.... &amp;lt;VirtualHost *:80&amp;gt; 
DocumentRoot /var/www/html/redatek 
Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/ 
... &amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Erklärung:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;DocumentRoot&lt;/strong&gt; legt das Verzeichnis fest, das die Hauptinhalte der Webseite enthält. In diesem Beispiel: `/var/www/html/redatek`.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Alias&lt;/strong&gt; definiert eine Umleitung für das Verzeichnis &lt;code&gt;/.well-known/acme-challenge/&lt;/code&gt; auf `/var/www/html/.well-known/acme-challenge/`. Dadurch können Let&amp;#039;s Encrypt Validierungsanfragen unabhängig vom DocumentRoot beantwortet werden.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Apache VHost Konfiguration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apache_vhost_konfiguration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;503-1453&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;beachten_im_containerbetrieb&quot;&gt;Beachten im Containerbetrieb&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Apache Config für http (80) anpassen:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;If &amp;quot;%{THE_REQUEST} !~ m# /.well-known/?#i&amp;quot;&amp;gt;
       RedirectPermanent / https://url.tld/
&amp;lt;/If&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Zumindest Apache &amp;gt; 2.4 &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Beachten im Containerbetrieb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;beachten_im_containerbetrieb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1454-1678&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;zertifikat_generieren&quot;&gt;Zertifikat generieren&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
den Webroot Ordner angeben –&amp;gt; certbot certonly –webroot /var/www/ -d domain.tld
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zertifikat generieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zertifikat_generieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1679-1792&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;let_s_encrypt_zertifikats-erneuerung_im_container&quot;&gt;Let&amp;#039;s Encrypt Zertifikats-Erneuerung im Container&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Da die Zertifikatserneuerung über &lt;strong&gt;Podman&lt;/strong&gt; in einem Container stattfindet, wird das Verzeichnis für die Webseiten-Validierung gemountet. Dies erfolgt mittels Volumemapping, um sicherzustellen, dass Let&amp;#039;s Encrypt auf die notwendigen Verzeichnisse zugreifen kann.
&lt;/p&gt;

&lt;p&gt;
Der Befehl für die Zertifikats-Erneuerung im Container sieht wie folgt aus:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;podman run --rm -it
-v &amp;quot;/container/letsencrypt/log:/var/log/letsencrypt&amp;quot;
-v &amp;quot;/var/www/html:/var/www/&amp;quot;
-v &amp;quot;/container/letsencrypt/cert:/etc/letsencrypt&amp;quot;
docker.io/certbot/certbot renew&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Erklärung:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;–rm&lt;/strong&gt; löscht den Container nach der Ausführung, um Speicherplatz freizugeben.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;-it&lt;/strong&gt; ermöglicht eine interaktive Ausführung im Terminal.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;-v „/container/letsencrypt/log:/var/log/letsencrypt“&lt;/strong&gt; legt das Log-Verzeichnis fest, um Protokolle der Zertifikats-Erneuerung zu speichern.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;-v „/var/www/html:/var/www/„&lt;/strong&gt; mappt das lokale Webverzeichnis `/var/www/html` in das Verzeichnis `/var/www/` innerhalb des Containers.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;-v “/container/letsencrypt/cert:/etc/letsencrypt“&lt;/strong&gt; weist das Verzeichnis für die Zertifikate zu.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Let&amp;#039;s Encrypt Zertifikats-Erneuerung im Container&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;let_s_encrypt_zertifikats-erneuerung_im_container&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1793-2965&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;neustart_nicht_vergessen&quot;&gt;Neustart nicht vergessen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
nach dem
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;podman run --rm -it -v &amp;quot;/container/letsencrypt/log:/var/log/letsencrypt&amp;quot; -v &amp;quot;/var/www/html:/var/www/&amp;quot; -v &amp;quot;/container/letsencrypt/cert:/etc/letsencrypt&amp;quot; docker.io/certbot/certbot renew -v&lt;/pre&gt;

&lt;p&gt;
unbedingt die betreffenden Dienste neu starten damit der neue Key aktiv geladen wird.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl restart httpd
podman container restart mailserver&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Neustart nicht vergessen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;neustart_nicht_vergessen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2966-3379&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;problematik_ohne_alias-direktive&quot;&gt;Problematik ohne Alias-Direktive&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ohne das Alias-Mapping schlägt der Erneuerungsprozess fehl, da Let&amp;#039;s Encrypt auf &lt;code&gt;/.well-known/acme-challenge&lt;/code&gt; zugreifen muss. Der angegebene &lt;strong&gt;DocumentRoot&lt;/strong&gt; für die Webseite (&lt;code&gt;/var/www/html/redatek&lt;/code&gt;) enthält jedoch dieses Verzeichnis nicht direkt. Daher ist das Alias in der Apache-Konfiguration notwendig, um die Validierung erfolgreich abzuschließen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Problematik ohne Alias-Direktive&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;problematik_ohne_alias-direktive&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3380-3789&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;zusammenfassung&quot;&gt;Zusammenfassung&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Diese Konfiguration ermöglicht es, Let&amp;#039;s Encrypt Zertifikate über einen Podman-Container zu erneuern, indem die Apache-Konfiguration angepasst wird, um die notwendigen Ressourcen bereitzustellen. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;DocumentRoot&lt;/strong&gt; verweist auf den Hauptinhalt der Webseite.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Alias&lt;/strong&gt; stellt sicher, dass die Zertifikatsanfragen von Let&amp;#039;s Encrypt korrekt beantwortet werden.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Podman Container&lt;/strong&gt;-Setup mit Volumemapping ermöglicht den Zugriff auf die Verzeichnisse für Logs und Zertifikate sowie auf das Webverzeichnis für die Validierung.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zusammenfassung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zusammenfassung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3790-4359&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;Let&amp;#039;s Encrypt, ACME, Apache, Alias, VirtualHost, certbot, Podman, Docker, Zertifikat, /.well-known&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4360-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:logger?rev=1788972589&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-09T16:49:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>logger</title>
        <link>http://wiki.redatek.de/wiki:logger?rev=1788972589&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;protokollierung_von_benutzeraktionen_mit_username_in_syslog&quot;&gt;Protokollierung von Benutzeraktionen mit Username in Syslog&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Protokollierung von Benutzeraktionen mit Username in Syslog&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;protokollierung_von_benutzeraktionen_mit_username_in_syslog&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-75&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;bevorzugte_loesung&quot;&gt;Bevorzugte Lösung&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Diese Lösung wird von mir bevorzugt.&lt;/strong&gt; Sie verwendet `auditd` zur Erfassung der Befehle, ein eigenes Formatter-Skript zum Zusammenführen und Aufbereiten der Audit-Datensätze sowie `rsyslogd` zum Schreiben der fertigen Meldung nach `/var/log/syslog`.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bevorzugte L\u00f6sung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bevorzugte_loesung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;76-363&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;standardloesungrohe_audit-meldungen&quot;&gt;Standardlösung: rohe Audit-Meldungen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Die übliche Standardlösung leitet die Audit-Meldungen lediglich weiter und schreibt sie beispielsweise nach `/var/log/user-audit.log`. Dort stehen die einzelnen Audit-Datensätze (`SYSCALL`, `EXECVE` und `EOE`) jedoch getrennt und im technischen Rohformat. Ein einzelnes Ereignis verteilt sich dadurch auf mehrere schwer lesbare Logzeilen; Username und Befehlsargumente sind nicht übersichtlich in einer Meldung zusammengefasst.
&lt;/p&gt;

&lt;p&gt;
Die Datei kann beispielsweise mit `ausearch` ausgewertet werden:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; ausearch &lt;span class=&quot;re5&quot;&gt;-k&lt;/span&gt; user_commands&lt;/pre&gt;

&lt;p&gt;
Diese Standardlösung ist für die nachträgliche technische Analyse geeignet, erzeugt aber keine kompakte Meldung der Form „Zeit, eingeloggter Benutzer, ausführender Benutzer, Befehl“. Deshalb wird in diesem Beitrag die oben beschriebene Formatter-Lösung bevorzugt.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Standardl\u00f6sung: rohe Audit-Meldungen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;standardloesungrohe_audit-meldungen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;364-1239&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;ziel&quot;&gt;Ziel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Diese Konfiguration protokolliert ausgeführte Befehle mit folgenden Informationen:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Zeitpunkt der Ausführung&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ursprünglich eingeloggter Benutzer (Audit-ID, AUID)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; tatsächlich ausführender Benutzer (UID)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ausgeführter Befehl einschließlich Argumenten&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Der Datenfluss ist:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auditd -&amp;gt; Audit-Formatter -&amp;gt; rsyslogd -&amp;gt; /var/log/syslog&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;Hinweis:&lt;/code&gt; Eine reine rsyslogd-Regel kann die getrennten Audit-Datensätze (SYSCALL und EXECVE) nicht zuverlässig zu einem vollständigen Ereignis zusammenführen. Diese Aufgabe übernimmt der Formatter. rsyslogd schreibt anschließend die fertige Meldung in die Syslog-Datei.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ziel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ziel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1240-1903&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;voraussetzungen&quot;&gt;Voraussetzungen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Debian/Ubuntu:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; apt update
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; auditd audispd-plugins rsyslog&lt;/pre&gt;

&lt;p&gt;
Das Formatter-Skript aus dem Projekt ist:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;audit-format-syslog.py&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Voraussetzungen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;voraussetzungen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1904-2115&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;audit-regeln_einrichten&quot;&gt;1. Audit-Regeln einrichten&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Datei `/etc/audit/rules.d/user-commands.rules` anlegen oder bearbeiten:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-a always,exit -F arch=b64 -S execve,execveat -F auid&amp;gt;=1000 -F auid!=unset -k user_commands
-a always,exit -F arch=b32 -S execve,execveat -F auid&amp;gt;=1000 -F auid!=unset -k user_commands&lt;/pre&gt;

&lt;p&gt;
Die Regeln überwachen die Ausführung von Programmen durch angemeldete Benutzer. Der Schlüssel `user_commands` erleichtert die spätere Suche mit `ausearch`.
&lt;/p&gt;

&lt;p&gt;
Regeln laden:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; augenrules &lt;span class=&quot;re5&quot;&gt;--load&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; auditctl &lt;span class=&quot;re5&quot;&gt;-l&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Audit-Regeln einrichten&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;audit-regeln_einrichten&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2116-2665&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;audit-formatter_installieren&quot;&gt;2. Audit-Formatter installieren&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Das Skript installieren:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt; 0755 \
  &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;path&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;to&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;audit-format-syslog.py \
  &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sbin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;audit-format-syslog.py&lt;/pre&gt;

&lt;p&gt;
Der Formatter liest die Audit-Meldungen über die Standardeingabe. Er sammelt die zusammengehörigen `SYSCALL`, `EXECVE` und `EOE`-Datensätze, löst die UID-Nummern in Benutzernamen auf und schreibt anschließend eine formatierte Syslog-Meldung.
&lt;/p&gt;

&lt;p&gt;
Der vollständige Quelltext des Formatters:
&lt;/p&gt;
&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#!/usr/bin/env python3&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;binascii&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;pwd&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;re&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;shlex&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; functools &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; lru_cache
&amp;nbsp;
&amp;nbsp;
EVENT_RE &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;re&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;compile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r&lt;span class=&quot;st0&quot;&gt;&amp;quot;msg=audit&lt;span class=&quot;es0&quot;&gt;\(&lt;/span&gt;([^:]+):(&lt;span class=&quot;es0&quot;&gt;\d&lt;/span&gt;+)&lt;span class=&quot;es0&quot;&gt;\)&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
FIELD_RE &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;re&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;compile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r&lt;span class=&quot;st0&quot;&gt;&#039;([A-Za-z_][A-Za-z0-9_]*)=(&amp;quot;[^&amp;quot;]*&amp;quot;|[^ ]+)&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; fields&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;key: value.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; FIELD_RE.&lt;span class=&quot;me1&quot;&gt;findall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;lru_cache&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;maxsize&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; username&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; value &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;unset&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;4294967295&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;pwd&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getpwuid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pw_name&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;KeyError&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; value
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; argument&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; value &lt;span class=&quot;kw1&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; value.&lt;span class=&quot;me1&quot;&gt;startswith&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; value.&lt;span class=&quot;me1&quot;&gt;endswith&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; value&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;re&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fullmatch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r&lt;span class=&quot;st0&quot;&gt;&amp;quot;[0-9A-Fa-f]+&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;binascii&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;unhexlify&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;decode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;replace&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;binascii&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;UnicodeError&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
      &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; value
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; emit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
  syscall &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; event.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;syscall&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  execve &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; event.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;execve&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; syscall &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; execve &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; syscall.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;user_commands&amp;quot;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    timestamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;localtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;epoch&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;KeyError&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;OverflowError&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    timestamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;
&amp;nbsp;
  args &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;argument&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;execve.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;st0&quot;&gt;&amp;quot;a{index}&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; index &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;execve.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;argc&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;shlex&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;quote&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; value &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; args&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; command.&lt;span class=&quot;me1&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;n&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  login_user &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; username&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;syscall.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;auid&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; syscall.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;AUID&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  executing_user &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; username&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;syscall.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;uid&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; syscall.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;UID&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;LOG_INFO&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; f&lt;span class=&quot;st0&quot;&gt;&amp;quot;user-audit: {timestamp}, {login_user}, {executing_user}, {command}&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
current &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
EVENT_TIMEOUT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;openlog&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;audit-format&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;LOG_PID&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;syslog&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;LOG_LOCAL6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; line &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stdin&lt;/span&gt;:
  match &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; EVENT_RE.&lt;span class=&quot;me1&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; match:
    &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
  epoch&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; serial &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; match.&lt;span class=&quot;me1&quot;&gt;groups&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  event &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; current.&lt;span class=&quot;me1&quot;&gt;setdefault&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;serial&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;epoch&amp;quot;&lt;/span&gt;: epoch&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; line.&lt;span class=&quot;me1&quot;&gt;startswith&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;type=SYSCALL&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    event&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;syscall&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fields&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; line.&lt;span class=&quot;me1&quot;&gt;startswith&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;type=EXECVE&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    event&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;execve&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fields&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; line.&lt;span class=&quot;me1&quot;&gt;startswith&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;type=EOE&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    emit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    current.&lt;span class=&quot;me1&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;serial&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  now &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  expired &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
    key &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pending &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; current.&lt;span class=&quot;me1&quot;&gt;items&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; now - &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pending&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;epoch&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; EVENT_TIMEOUT
  &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; key &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; expired:
    current.&lt;span class=&quot;me1&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;key&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Die erzeugte Meldung hat dieses Format:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user-audit: 2026-09-09 14:30:01, alice, root, &amp;#039;apt&amp;#039; &amp;#039;update&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Die Reihenfolge ist:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Zeit, eingeloggter Benutzer, ausführender Benutzer, Befehl&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. Audit-Formatter installieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;audit-formatter_installieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2666-5778&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;audit-plugin_konfigurieren&quot;&gt;3. Audit-Plugin konfigurieren&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Datei `/etc/audit/plugins.d/audit-format.conf` anlegen:
&lt;/p&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re1&quot;&gt;active&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;direction&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; out&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; /usr/local/sbin/audit-format-syslog.py&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; always&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; string&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Auch bei neueren Debian- und Ubuntu-Versionen ist `audispd` in `auditd` integriert; die Plugin-Konfiguration bleibt dabei versionsabhängig. Die Werte müssen zur installierten `auditd`-Version passen. Das Skript muss ausführbar sein (`chmod 0755`). Wenn AppArmor oder SELinux aktiv ist, müssen zusätzlich der Zugriff auf den Skriptpfad und der passende Sicherheitskontext geprüft werden.
&lt;/p&gt;

&lt;p&gt;
Das Skript verwendet die Syslog-Facility `local6` und den Programmnamen `audit-format`.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. Audit-Plugin konfigurieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;audit-plugin_konfigurieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5779-6486&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;rsyslogd_konfigurieren&quot;&gt;4. rsyslogd konfigurieren&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Datei `/etc/rsyslog.d/30-audit-format.conf` anlegen:
&lt;/p&gt;
&lt;pre class=&quot;code rsyslog&quot;&gt;module(load=&amp;quot;imuxsock&amp;quot;)
&amp;nbsp;
template(
    name=&amp;quot;AuditSyslogFormat&amp;quot;
    type=&amp;quot;string&amp;quot;
    string=&amp;quot;%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n&amp;quot;
)
&amp;nbsp;
if ($programname == &amp;quot;audit-format&amp;quot; and
    $syslogfacility-text == &amp;quot;local6&amp;quot;) then {
    action(
        type=&amp;quot;omfile&amp;quot;
        file=&amp;quot;/var/log/syslog&amp;quot;
        template=&amp;quot;AuditSyslogFormat&amp;quot;
        createMode=&amp;quot;0640&amp;quot;
    )
    stop
}&lt;/pre&gt;

&lt;p&gt;
Dadurch werden nur die vom Formatter erzeugten Audit-Meldungen nach `/var/log/syslog` geschrieben.
&lt;/p&gt;

&lt;p&gt;
`imuxsock` ist erforderlich, weil die Python-Syslog-Bibliothek die Meldung an `/dev/log` sendet. Auf Systemen, die zusätzlich oder hauptsächlich `imjournal` verwenden, sollte geprüft werden, dass `imuxsock` geladen ist und keine doppelte Verarbeitung über `journald` entsteht.
&lt;/p&gt;

&lt;p&gt;
Beispiel:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Sep  9 14:30:01 server audit-format[1234]: user-audit: 2026-09-09 14:30:01, alice, root, &amp;#039;apt&amp;#039; &amp;#039;update&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Der erste Zeitstempel wird von rsyslogd ergänzt. Der zweite Zeitstempel stammt aus dem Audit-Ereignis.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4. rsyslogd konfigurieren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rsyslogd_konfigurieren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6487-7609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;dienste_neu_starten&quot;&gt;5. Dienste neu starten&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Zuerst die rsyslogd-Konfiguration prüfen:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; rsyslogd &lt;span class=&quot;re5&quot;&gt;-N1&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Bei erfolgreicher Prüfung Dienste neu starten:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; systemctl restart rsyslog
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service auditd restart&lt;/pre&gt;

&lt;p&gt;
Auf manchen Distributionen wird ein direkter Neustart von `auditd` über `systemctl` aus Sicherheitsgründen abgelehnt. Verwende dann `service auditd restart` oder lade nach einer Regeländerung zunächst mit `sudo augenrules –load` die Audit-Regeln neu.
&lt;/p&gt;

&lt;p&gt;
Status prüfen:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; systemctl status rsyslog
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; systemctl status auditd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5. Dienste neu starten&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dienste_neu_starten&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7610-8211&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;funktion_testen&quot;&gt;6. Funktion testen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Einen Befehl ausführen und Syslog beobachten:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;id&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-la&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tmp
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;syslog&lt;/pre&gt;

&lt;p&gt;
Bei einem Aufruf über `sudo` kann die Ausgabe beispielsweise so aussehen:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Sep  9 14:35:12 server audit-format[1234]: user-audit: 2026-09-09 14:35:12, alice, root, &amp;#039;id&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Dabei bedeutet:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `alice`: ursprünglich eingeloggter Benutzer (`auid`)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `root`: Benutzer, unter dem der Prozess tatsächlich ausgeführt wurde (`uid`)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `&amp;#039;id&amp;#039;`: ausgeführter Befehl&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6. Funktion testen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;funktion_testen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;8212-8734&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;fehlerdiagnose&quot;&gt;7. Fehlerdiagnose&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Audit-Regeln prüfen:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; auditctl &lt;span class=&quot;re5&quot;&gt;-l&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; ausearch &lt;span class=&quot;re5&quot;&gt;-k&lt;/span&gt; user_commands&lt;/pre&gt;

&lt;p&gt;
Dienste und Fehlermeldungen prüfen:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; journalctl &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; auditd &lt;span class=&quot;re5&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; journalctl &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; rsyslog &lt;span class=&quot;re5&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Prüfen, ob das Log geschrieben wird:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; audit-format &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;syslog&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;7. Fehlerdiagnose&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fehlerdiagnose&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;8735-9080&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;sicherheit_und_betrieb&quot;&gt;Sicherheit und Betrieb&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Die Audit-Regeln können viele Meldungen erzeugen. Die Datei `/var/log/syslog` sollte deshalb regelmäßig rotiert und vor unbefugtem Zugriff geschützt werden.
&lt;/p&gt;

&lt;p&gt;
Bei produktivem Betrieb sollte geprüft werden, ob die vorhandene Logrotate-Konfiguration für `/var/log/syslog` aktiv ist. Zusätzlich sollten die Berechtigungen der Logdatei und des Verzeichnisses kontrolliert werden.
&lt;/p&gt;

&lt;p&gt;
Die Audit-Daten sind sicherheitsrelevant. Benutzer mit Root-Rechten können lokale Logdateien grundsätzlich verändern. Für manipulationsgeschützte Protokollierung ist eine Weiterleitung an einen zentralen Logserver erforderlich.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sicherheit und Betrieb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sicherheit_und_betrieb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9081-9733&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;Linux, auditd, Audit, Benutzeraktionen, execve, sudo, rsyslog, syslog, audispd, Systemprotokoll, Sicherheitsprotokoll, Logdatei&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;9734-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:sudoer?rev=1788783843&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-07T12:24:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sudoer</title>
        <link>http://wiki.redatek.de/wiki:sudoer?rev=1788783843&amp;do=diff</link>
        <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sudoerssichere_konfiguration_und_best_practices_admin-level&quot;&gt;SUDOERS: Sichere Konfiguration und Best Practices (Admin-Level)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Die `/etc/sudoers`-Datei (oder Dateien im `/etc/sudoers.d/`-Verzeichnis) ist das zentrale Konfigurationselement, um Benutzern und Gruppen die Ausführung von Befehlen mit Root-Rechten oder als anderer Benutzer zu ermöglichen, ohne das Root-Passwort direkt preiszugeben.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SUDOERS: Sichere Konfiguration und Best Practices (Admin-Level)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sudoerssichere_konfiguration_und_best_practices_admin-level&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-349&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;grundprinzip_und_sicherheitsaspekte&quot;&gt;1. Grundprinzip und Sicherheitsaspekte&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
`sudoers` definiert, welche Benutzer/Gruppen (`User_Alias`, `Cmnd_Alias`), auf welchen Hosts (`Host_Alias`) welche Befehle (`Cmnd_Alias`) mit welchen Rechten (`Runas_Alias`) ausführen dürfen. Das Kernziel ist das *Prinzip der geringsten Privilegien*, um die Angriffsfläche bei kompromittierten Benutzerkonten zu minimieren.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;ABSOLUTE &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; WARNUNG &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; VOR: `User ALL=(ALL) NOPASSWD: ALL`&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Die Konfiguration `User ALL=(ALL) NOPASSWD: ALL` (oder vergleichbare für Gruppen) ist ein &lt;strong&gt;erhebliches Sicherheitsrisiko&lt;/strong&gt; und sollte auf produktiven Systemen &lt;strong&gt;niemals verwendet werden&lt;/strong&gt;. Dies bedeutet:
*   Jeder Benutzer (oder die betreffende Gruppe) kann *jeden* Befehl als *jeden* anderen Benutzer (inkl. Root) ohne Passwort ausführen.
*   Dies macht eine Rechteausweitung extrem einfach, wenn das Benutzerkonto kompromittiert wird.
*   Es gibt keine Kontrolle mehr darüber, welche Aktionen tatsächlich als Root ausgeführt werden.
&lt;/p&gt;

&lt;p&gt;
Diese Einstellung untergräbt das gesamte Konzept von `sudo` und der Rechteverwaltung unter Linux und ist nur für Testsysteme ohne Sicherheitsrelevanz oder in sehr speziellen, hochgradig kontrollierten Umgebungen (z.B. spezielle CI/CD-Agents) denkbar, wo das Risiko durch andere Maßnahmen abgefangen wird.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Grundprinzip und Sicherheitsaspekte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;grundprinzip_und_sicherheitsaspekte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;350-1644&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;sichere_granulare_sudoers_-konfiguration&quot;&gt;2. Sichere, granulare `sudoers`-Konfiguration&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Statt pauschaler Freigaben sollte `sudoers` präzise Rechte für spezifische Befehle vergeben. Hier ein Beispiel, das `adminuser` erlaubt, den Apache-Dienst neu zu starten und den Status abzufragen, sowie `logreader` erlaubt, `journalctl` ohne Paging zu nutzen:
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Konfiguration in `/etc/sudoers` oder `/etc/sudoers.d/01_custom_admin` (bevorzugt):&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Definition von Aliasen für Benutzer, Hosts, Befehle
User_Alias      WEBADMINS = adminuser
User_Alias      LOGREADERS = logreader

Cmnd_Alias      WEB_SERVICE = /bin/systemctl restart apache2, /bin/systemctl status apache2
Cmnd_Alias      VIEW_LOGS = /bin/journalctl

# Zuweisung der Rechte
WEBADMINS ALL=(ALL) NOPASSWD: WEB_SERVICE
LOGREADERS ALL=(ALL) NOPASSWD: VIEW_LOGS&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Erläuterung:&lt;/strong&gt;
*   `User_Alias`: Definiert Gruppen von Benutzern.
*   `Cmnd_Alias`: Definiert Gruppen von Befehlen. &lt;strong&gt;Jeder Befehl muss mit seinem absoluten Pfad angegeben werden!&lt;/strong&gt;
*   `WEBADMINS ALL=(ALL) NOPASSWD: WEB_SERVICE`: Der Benutzer `adminuser` darf auf allen Hosts jeden Befehl aus der `WEB_SERVICE`-Liste als jeder beliebige User (Standard: root) ohne Passworteingabe ausführen.
*   `LOGREADERS ALL=(ALL) NOPASSWD: VIEW_LOGS`: Der Benutzer `logreader` darf `journalctl` ohne Passwort ausführen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. Sichere, granulare `sudoers`-Konfiguration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sichere_granulare_sudoers_-konfiguration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1645-2958&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;verhinderung_von_befehlsketten_und_rechteerschleichung&quot;&gt;3. Verhinderung von Befehlsketten und Rechteerschleichung&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Eine der größten Fallen bei `sudoers` sind Befehlsketten. Wenn ein Befehl erlaubt ist, der weitere Befehle ausführen kann, kann dies zur Rechteausweitung führen. Beispiele hierfür sind:
*   Editoren wie `vi` oder `nano` (`sudo vi /etc/shadow`)
*   Paging-Programme wie `less` oder `more` (`sudo less /var/log/audit/audit.log`, dann über `!bash` eine Shell öffnen)
*   Programme, die Shell-Befehle ausführen können (z.B. `find -exec`, `awk -F /etc/passwd &amp;#039;{print $1}&amp;#039;`, `ssh`)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. Verhinderung von Befehlsketten und Rechteerschleichung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;verhinderung_von_befehlsketten_und_rechteerschleichung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2959-3513&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;argumente_mit_regex_exakt_begrenzen&quot;&gt;3.1 Argumente mit Regex exakt begrenzen&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Bei aktuellen sudo-Versionen (ab 1.9.10) können die komplette Befehlszeile und ihre Argumente mit einer Regex eingeschränkt werden. Die Regex sollte mit `^` beginnen und mit `$` enden. Dadurch sind keine zusätzlichen Argumente erlaubt.
&lt;/p&gt;

&lt;p&gt;
Beispiel: `deployuser` darf nur genau dieses Skript mit genau einem nicht-leeren, leerzeichenfreien Dateinamen ausführen:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Cmnd_Alias DEPLOY = ^/usr/local/sbin/deploy[[:space:]]+[^[:space:];&amp;amp;|&amp;lt;&amp;gt;$()]+$
deployuser ALL=(root) NOPASSWD: DEPLOY&lt;/pre&gt;

&lt;p&gt;
Damit wird beispielsweise folgender Aufruf erlaubt:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/local/sbin/deploy release.tar&lt;/pre&gt;

&lt;p&gt;
Nicht erlaubt sind zusätzliche Argumente oder eine vermeintliche Befehlsverkettung wie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/local/sbin/deploy release.tar\;id&lt;/pre&gt;

&lt;p&gt;
`&lt;a href=&quot;http://wiki.redatek.de/space:digit:start&quot; class=&quot;wikilink2&quot; title=&quot;space:digit:start&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;space:digit:start&quot;&gt;digit&lt;/a&gt;` bedeutet nicht „Leerzeichen und Ziffern verhindern“, sondern matcht ein einzelnes Zeichen, das entweder Leerraum oder eine Ziffer ist. Für „ein oder mehrere Zeichen, aber niemals Leerraum“ wird `[^[:space:]]+` verwendet. Im obigen Beispiel werden zusätzlich `;`, `&amp;amp;`, `|`, `&amp;lt;`, `&amp;gt;`, `$` und runde Klammern ausgeschlossen.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Wichtig:&lt;/strong&gt; `sudo` startet den freigegebenen Befehl nicht automatisch über eine Shell. Zeichen wie `;`, `&amp;amp;&amp;amp;` oder `|` werden daher bei einem normalen Programm nicht als Verkettung interpretiert. Eine Befehlskette wird gefährlich, sobald ein freigegebenes Programm selbst eine Shell oder einen Interpreter startet, zum Beispiel:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/bin/sh -c ...
/bin/bash -c ...
/usr/bin/python ...
/usr/bin/perl ...&lt;/pre&gt;

&lt;p&gt;
Solche Programme dürfen nicht freigegeben werden, wenn eine isolierte Einzelaktion beabsichtigt ist. Am sichersten ist ein fest installiertes Root-Skript ohne frei wählbare Argumente oder mit einer eigenen, strikten Argumentprüfung. Das Skript muss absolut referenziert werden und darf keine vom Benutzer kontrollierten Shell-Kommandos ausführen.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Best Practices zur Verhinderung:&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
1.  &lt;strong&gt;Absolute Pfade und Argumente:&lt;/strong&gt; Geben Sie Befehle &lt;strong&gt;immer&lt;/strong&gt; mit ihrem absoluten Pfad an. Wenn möglich, beschränken Sie auch die erlaubten Argumente oder verwenden Sie reguläre Ausdrücke (Regex) in `sudoers` (mit Vorsicht).
2.  &lt;strong&gt;Keine Shell-Escapes:&lt;/strong&gt; Erlauben Sie keine Programme, die interne Shell-Escapes oder die Ausführung externer Programme zulassen (z.B. `vi`, `nano`, `more`, `less`, `man`, `find`, `awk`, `perl`, `python` ohne `sudo -i`).
3.  &lt;strong&gt;Umfeldbeschränkung (`env_reset`, `SETENV`):&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;   `Defaults env_reset` (Standard) bereinigt die Umgebungsvariablen. Dies ist wichtig, um Manipulationen wie `LD_PRELOAD` zu verhindern.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;   Vermeiden Sie `SETENV` für sensible Befehle, da dies eine manipulierte Umgebung zulassen könnte.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;   Setzen Sie `PATH` in der `sudoers`-Datei explizit für Root-Aktionen, um PATH-Hijacking zu verhindern.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
4.  &lt;strong&gt;Minimale `NOPASSWD`-Verwendung:&lt;/strong&gt; Verwenden Sie `NOPASSWD` nur, wenn es absolut notwendig ist, und nur für sehr spezifische, „dumme“ Befehle, die keine weiteren Subprozesse starten oder Dateien manipulieren können (z.B. `/bin/systemctl status &amp;lt;service&amp;gt;`).
5.  &lt;strong&gt;Listen Sie alle abhängigen Befehle auf:&lt;/strong&gt; Wenn ein Skript als `sudo` ausgeführt wird, das intern weitere Root-Aktionen ausführt, müssen diese weiteren Aktionen ebenfalls explizit in `sudoers` erlaubt werden.
6.  &lt;strong&gt;`visudo` verwenden:&lt;/strong&gt; Bearbeiten Sie die `sudoers`-Datei &lt;strong&gt;immer&lt;/strong&gt; mit `visudo`, da dies Syntaxfehler prüft und somit Systemausfälle verhindert.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.1 Argumente mit Regex exakt begrenzen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;argumente_mit_regex_exakt_begrenzen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3514-6951&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;ueberpruefung_der_sudoers_-konfiguration&quot;&gt;4. Überprüfung der `sudoers`-Konfiguration&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Verwenden Sie den Befehl `sudo -l -U &amp;lt;username&amp;gt;` um zu prüfen, welche `sudo`-Rechte ein bestimmter Benutzer tatsächlich hat. Dies ist unerlässlich nach jeder Änderung.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4. \u00dcberpr\u00fcfung der `sudoers`-Konfiguration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ueberpruefung_der_sudoers_-konfiguration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6952-7180&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;fazit_und_best_practices_fuer_administratoren&quot;&gt;5. Fazit und Best Practices für Administratoren&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Das Prinzip der geringsten Privilegien ist nicht verhandelbar.&lt;/strong&gt; Jeder unnötige Zugriff ist ein Sicherheitsrisiko.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Pauschale `NOPASSWD: ALL`-Konfigurationen sind extrem gefährlich&lt;/strong&gt; und sollten vermieden werden.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Genaue Befehlspfade und beschränkte Argumente&lt;/strong&gt; minimieren das Missbrauchspotenzial.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Achten Sie auf Befehlsketten&lt;/strong&gt; und vermeiden Sie die Freigabe von interaktiven Programmen oder Skriptinterpretern per `sudo`.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Nutzen Sie `visudo` und testen Sie Konfigurationen&lt;/strong&gt; immer mit `sudo -l -U &amp;lt;username&amp;gt;`.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
`sudo` ist ein mächtiges Werkzeug, das bei korrekter Konfiguration die Systemsicherheit erhöht. Bei unsachgemäßer Handhabung kann es jedoch eine der größten Schwachstellen darstellen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5. Fazit und Best Practices f\u00fcr Administratoren&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fazit_und_best_practices_fuer_administratoren&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7181-7976&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;sudo, sudoers, visudo, Linux, Root-Rechte, Rechteverwaltung, Least Privilege, NOPASSWD, User_Alias, Cmnd_Alias, Host_Alias, Runas_Alias, Regex, Rechteausweitung, Systemsicherheit&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7977-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://wiki.redatek.de/wiki:xfs_error_kernel?rev=1777790816&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-05-03T06:46:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xfs_error_kernel</title>
        <link>http://wiki.redatek.de/wiki:xfs_error_kernel?rev=1777790816&amp;do=diff</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;xfs_fehler_nach_kernel-update&quot;&gt;XFS Fehler nach Kernel-Update&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;fehlerbeschreibung&quot;&gt;Fehlerbeschreibung&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Nach einem Update auf folgenden Kernel:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Linux 4.18.0-553.58.1.el8_10.x86_64&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
trat beim Booten bzw. Mounten des XFS-Dateisystems folgender Fehler auf:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `kernel: XFS (dm-0): Corruption detected. Unmount and run xfs_repair`&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `kernel: XFS (dm-0): Internal error i != 1 at line 481 of file fs/xfs/libxfs/xfs_alloc.c. Caller xfs_alloc_fixup_trees+0x198/0x3b0 [xfs]`&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;aenderungen_an_kernel-konfiguration&quot;&gt;Änderungen an Kernel-Konfiguration&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
In der Datei `config-4.18.0-553.58.1.el8_10.x86_64` wurden folgende Optionen aktiviert:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CONFIG_XFS_FS=y&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CONFIG_XFS_QUOTA=y&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CONFIG_XFS_POSIX_&lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt;=y&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CONFIG_XFS_RT=y&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CONFIG_XFS_ONLINE_SCRUB=y&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;analyse_hintergrundwissen&quot;&gt;Analyse &amp;amp; Hintergrundwissen&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Fehlerursache&lt;/strong&gt;: Der Fehler `i != 1` in `xfs_alloc.c` deutet auf eine Inkonsistenz in den freien Speicherbaumstrukturen des Dateisystems hin. Dies kann durch eine beschädigte Metastruktur oder durch eine fehlerhafte Kernel-Implementierung ausgelöst werden.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;xfs_repair&lt;/strong&gt;: Das Tool `xfs_repair` sollte verwendet werden, um die Dateisystemstruktur zu prüfen und zu reparieren. Wichtig: Das Dateisystem muss vorher &lt;strong&gt;ausgehängt&lt;/strong&gt; werden.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;CONFIG_XFS_RT&lt;/strong&gt;: Aktiviert Unterstützung für „Real-Time Subvolumes“, eine selten genutzte Funktion. Falls nicht benötigt, kann sie deaktiviert werden, um Komplexität zu reduzieren.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;CONFIG_XFS_ONLINE_SCRUB&lt;/strong&gt;: Ermöglicht die Online-Prüfung von Dateisystemstrukturen. Diese Funktion ist experimentell und kann bei bestimmten Kernel-Versionen instabil sein.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Kernel-Kompatibilität&lt;/strong&gt;: Änderungen an XFS-bezogenen Optionen können zu Inkompatibilitäten mit bestehenden Dateisystemen führen, insbesondere wenn das Dateisystem mit einem älteren Kernel erstellt wurde.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;empfehlung&quot;&gt;Empfehlung&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; System im &lt;strong&gt;Rescue-Modus&lt;/strong&gt; starten.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; betroffene Partition &lt;strong&gt;aushängen&lt;/strong&gt; (`umount /dev/dm-0`)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `xfs_repair /dev/dm-0` ausführen.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bei wiederholtem Auftreten: Kernel-Konfiguration prüfen, insbesondere experimentelle Optionen wie `CONFIG_XFS_RT` und `CONFIG_XFS_ONLINE_SCRUB`.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Backup wichtiger Daten vor weiteren Tests!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In meinem konkreten Fall war das root Filesystem betroffen &lt;img src=&quot;http://wiki.redatek.de/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; und ich bin das Risiko, ohne xfs_repair auf ausgegangenem Device, mit geänderter Konfiguration neu zu starten, eingegangen.  
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;quellen_tools&quot;&gt;Quellen &amp;amp; Tools&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; `man xfs_repair`&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://xfs.org&quot; class=&quot;urlextern&quot; title=&quot;https://xfs.org&quot; rel=&quot;ugc nofollow&quot;&gt;https://xfs.org&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Kernel-Quellcode: `fs/xfs/libxfs/xfs_alloc.c`&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XFS Fehler nach Kernel-Update&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xfs_fehler_nach_kernel-update&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2445&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;stichworte&quot;&gt;Stichworte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;XFS, Kernel, RHEL, EL8, xfs_repair, Filesystem, Korruption, CONFIG_XFS_RT, Rescue&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stichworte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stichworte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2446-&amp;quot;} --&gt;</description>
    </item>
</rdf:RDF>
