<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Berechtigungen – Serverküche</title><link>https://serverkueche.de/tags/berechtigungen/</link><description>Berechtigungen – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Sat, 22 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/berechtigungen/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux-Benutzer, Gruppen &amp; Dateirechte verstehen</title><link>https://serverkueche.de/tutorials/linux-benutzer-und-rechte/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/linux-benutzer-und-rechte/</guid><description>Wer darf was auf deinem Server? Dieser Grundlagen-Guide erklärt Benutzer, Gruppen und Dateirechte an echten Befehlen – die Basis für jedes sichere Setup.</description><content:encoded><![CDATA[<p>Fast jede „Permission denied“-Meldung, jeder falsch startende Container und jede unsichere Konfiguration hat dieselbe Wurzel: ein Missverständnis darüber, wer auf einem Linux-Server was darf. Dieser Guide räumt das ein für alle Mal auf – mit echten Befehlen statt Theorie.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Diesmal keinen Dienst, sondern das Fundament, auf dem alle anderen Rezepte stehen: das Rechtemodell von Linux. Am Ende verstehst du, was ein Benutzer und eine Gruppe sind, wie du <code>rwx</code>-Rechte und die Zahlen wie <code>755</code> liest und setzt, warum <code>www-data</code> und <code>docker</code> als Gruppen ständig auftauchen – und wann <code>sudo</code> das richtige Werkzeug ist und wann nicht. Alle Beispiele sind auf <strong>Debian 13</strong> ausgeführt und funktionieren auf jedem Linux-Server.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein Linux-Server mit Root- oder <code>sudo</code>-Zugang (dein <a href="/tutorials/erste-schritte-netcup-vps/">netcup-VPS</a> reicht)</li>
<li>Vertrautheit mit den <a href="/tutorials/wichtigste-terminal-befehle/">wichtigsten Terminal-Befehlen</a> (<code>ls</code>, <code>cd</code>, <code>cat</code>)</li>
<li>Kein zusätzliches Paket nötig – alle Werkzeuge sind Teil von Debian</li>
</ul>
<div class="not-prose my-6 overflow-hidden rounded-xl border border-paprika-200 bg-paprika-50 dark:border-paprika-800 dark:bg-paprika-900/20"
     data-track-content data-content-name="Affiliate-Box · /tutorials/linux-benutzer-und-rechte/" data-content-piece="VPS 1000 G12">
  <div class="flex items-center justify-between border-b border-paprika-200 bg-paprika-100 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-paprika-700 dark:border-paprika-800 dark:bg-paprika-900/40 dark:text-paprika-300">
    <span>🍳 Empfehlung</span>
    <span title="Mit * markierte Links sind Affiliate-Links.">Anzeige</span>
  </div>
  <div class="flex flex-col gap-4 p-4 sm:flex-row sm:items-center sm:justify-between">
    <div>
      <p class="text-lg font-bold text-slate-900 dark:text-white">VPS 1000 G12</p>
      <p class="mt-1 text-sm text-slate-600 dark:text-slate-300">4 vCore · 8 GB RAM · 256 GB NVMe</p>
      <p class="mt-1 text-sm font-semibold text-paprika-700 dark:text-paprika-400">ab 10,36 €/Monat</p>
      <p class="mt-2 text-sm text-slate-600 dark:text-slate-400">Zum Üben reicht jeder Server – die Befehle sind auf jedem Linux gleich.</p>
    </div>
    <a href="https://www.netcup.com/de/server/vps/vps-1000-g12-12m?ref=44083" rel="sponsored noopener" target="_blank"
   data-track-event="Affiliate|netcup: Affiliate-Box|VPS 1000 G12 · {page}"
   class="inline-flex shrink-0 items-center justify-center rounded-lg bg-paprika-600 px-5 py-2.5 font-semibold text-white transition-colors hover:bg-paprika-700">
  Zu netcup →
</a>

  </div><div class="px-4 pb-4"><p class="not-prose my-3 flex flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-herb-500/40 bg-herb-50 px-3 py-2 text-sm text-slate-700 dark:bg-herb-900/20 dark:text-slate-200">
  <span>💶 <strong>5 € Gutschein</strong> für netcup-Neukunden:</span><code data-track-voucher="36nc17844976032"
        class="rounded bg-white px-2 py-0.5 font-mono text-sm font-semibold text-herb-800 dark:bg-slate-800 dark:text-herb-400">36nc17844976032</code>
  <span class="text-xs text-slate-500 dark:text-slate-400">(nur Neukunden, keine Domains)</span>
</p></div>
</div>

<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="schritt-1-wer-bin-ich-benutzer-und-ihre-ids">Schritt 1: Wer bin ich? Benutzer und ihre IDs</h3>
<p>Jeder Prozess und jede Datei gehört einem <strong>Benutzer</strong>. Wer du gerade bist, zeigt <code>id</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">id</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">uid=0(root) gid=0(root) groups=0(root)</span></span></code></pre></div>
</div>
<p>Drei Dinge stehen hier: die <strong>UID</strong> (User-ID, <code>0</code> = root, der Administrator), die primäre <strong>GID</strong> (Group-ID) und alle Gruppen, in denen du Mitglied bist. Menschliche Benutzer bekommen auf Debian UIDs ab <code>1000</code>, darunter liegen Systembenutzer für Dienste.</p>
<p>Benutzer sind in <code>/etc/passwd</code> hinterlegt – eine schlichte Textdatei:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">grep -E <span class="s1">&#39;^(root|www-data|nobody):&#39;</span> /etc/passwd</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">root:x:0:0:root:/root:/bin/bash
</span></span><span class="line"><span class="cl">www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
</span></span><span class="line"><span class="cl">nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin</span></span></code></pre></div>
</div>
<p>Die Felder sind Name, Passwort-Platzhalter (<code>x</code> = das echte Hash steht in <code>/etc/shadow</code>), UID, GID, Kommentar, Home-Verzeichnis und Login-Shell. Wichtig: <code>www-data</code> – der Benutzer, unter dem Webserver laufen – hat als Shell <code>/usr/sbin/nologin</code>. Solche <strong>Dienstbenutzer</strong> können sich absichtlich nicht einloggen; sie existieren nur, damit ein Prozess mit minimalen Rechten läuft statt als root.</p>
<h3 id="schritt-2-einen-benutzer-anlegen">Schritt 2: Einen Benutzer anlegen</h3>
<p>Für alles außer der Erstkonfiguration solltest du nicht als root arbeiten. Lege einen normalen Benutzer an – hier <code>koch</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">useradd -m -s /bin/bash koch</span></span></code></pre></div>
</div>
<p><code>-m</code> erstellt das Home-Verzeichnis <code>/home/koch</code>, <code>-s /bin/bash</code> setzt die Login-Shell. Ein Passwort vergibst du mit <code>passwd koch</code>. Prüfe das Ergebnis:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">id koch</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">uid=1000(koch) gid=1000(koch) groups=1000(koch)</span></span></code></pre></div>
</div>
<p><code>useradd</code> hat automatisch eine gleichnamige <strong>primäre Gruppe</strong> <code>koch</code> (GID 1000) angelegt. Das ist der Debian-Standard: Jeder Benutzer bekommt seine eigene Gruppe – so ist eine neue Datei nie versehentlich für andere lesbar, nur weil sie eine gemeinsame Gruppe teilen.</p>
<h3 id="schritt-3-rechte-lesen--das-rwx-modell">Schritt 3: Rechte lesen – das <code>rwx</code>-Modell</h3>
<p>Jede Datei kennt drei Rechte-Sätze: für den <strong>Besitzer</strong>, für die <strong>Gruppe</strong> und für <strong>alle anderen</strong>. Sieh sie dir mit <code>ls -l</code> an:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ls -l</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rw-r--r-- 1 root root  0 Jul 24 19:02 datei.txt
</span></span><span class="line"><span class="cl">drwxr-xr-x 2 root root 40 Jul 24 19:02 ordner</span></span></code></pre></div>
</div>
<p>Die erste Spalte ist der Schlüssel. Zerlege <code>drwxr-xr-x</code>:</p>
<ul>
<li><strong>Zeichen 1</strong> – der Typ: <code>-</code> Datei, <code>d</code> Verzeichnis, <code>l</code> symbolischer Link.</li>
<li><strong>Zeichen 2–4</strong> (<code>rwx</code>) – Rechte des <strong>Besitzers</strong>: lesen (<code>r</code>), schreiben (<code>w</code>), ausführen (<code>x</code>).</li>
<li><strong>Zeichen 5–7</strong> (<code>r-x</code>) – Rechte der <strong>Gruppe</strong>.</li>
<li><strong>Zeichen 8–10</strong> (<code>r-x</code>) – Rechte <strong>aller anderen</strong>.</li>
</ul>
<p>Danach folgen Besitzer (<code>root</code>) und Gruppe (<code>root</code>). Bei <code>datei.txt</code> darf also nur root schreiben, alle dürfen lesen.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-sky-300 bg-sky-50 dark:border-sky-800 dark:bg-sky-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">ℹ️</span>x bedeutet bei Verzeichnissen etwas anderes
  </p>
  <div class="prose-kitchen text-sm">Bei einer Datei heißt <code>x</code> „ausführbar“ (ein Programm oder Skript). Bei einem <strong>Verzeichnis</strong> heißt <code>x</code> „hineinwechseln dürfen“ (<code>cd</code>). Ein Ordner ohne <code>x</code> ist unbetretbar, selbst wenn du <code>r</code> hast – ein häufiger Stolperstein.</div>
</div>
<h3 id="schritt-4-rechte-als-zahl--warum-755-und-644">Schritt 4: Rechte als Zahl – warum <code>755</code> und <code>644</code></h3>
<p>Dieselben Rechte schreibt man kompakt als Oktalzahl. Jede Ziffer steht für einen der drei Sätze, und sie ist die Summe aus: <strong>lesen = 4</strong>, <strong>schreiben = 2</strong>, <strong>ausführen = 1</strong>.</p>
<ul>
<li><code>7</code> = 4+2+1 = <code>rwx</code> (alles)</li>
<li><code>6</code> = 4+2 = <code>rw-</code> (lesen + schreiben)</li>
<li><code>5</code> = 4+1 = <code>r-x</code> (lesen + ausführen)</li>
<li><code>4</code> = <code>r--</code> (nur lesen)</li>
</ul>
<p>Damit ergeben sich die zwei häufigsten Muster von selbst: <strong><code>644</code></strong> (<code>rw-r--r--</code>) für normale Dateien und <strong><code>755</code></strong> (<code>rwxr-xr-x</code>) für Verzeichnisse und Programme. <code>stat</code> zeigt beide Schreibweisen nebeneinander:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">stat -c <span class="s1">&#39;%A %a %U %G %n&#39;</span> datei.txt ordner</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rw-r--r-- 644 root root datei.txt
</span></span><span class="line"><span class="cl">drwxr-xr-x 755 root root ordner</span></span></code></pre></div>
</div>
<h3 id="schritt-5-rechte-setzen-mit-chmod">Schritt 5: Rechte setzen mit <code>chmod</code></h3>
<p><code>chmod</code> ändert die Rechte – entweder numerisch oder symbolisch. Numerisch setzt du alle drei Sätze auf einmal. So machst du eine Datei nur für Besitzer und Gruppe lesbar:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chmod <span class="m">640</span> datei.txt
</span></span><span class="line"><span class="cl">stat -c <span class="s1">&#39;%A %a %n&#39;</span> datei.txt</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rw-r----- 640 datei.txt</span></span></code></pre></div>
</div>
<p>Symbolisch änderst du gezielt einzelne Bits: <code>u</code> (user/Besitzer), <code>g</code> (group), <code>o</code> (others), <code>a</code> (all), mit <code>+</code>/<code>-</code>/<code>=</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chmod u+x,g-r datei.txt
</span></span><span class="line"><span class="cl">stat -c <span class="s1">&#39;%A %a %n&#39;</span> datei.txt</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rwx------ 700 datei.txt</span></span></code></pre></div>
</div>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>Niemals chmod 777
  </p>
  <div class="prose-kitchen text-sm"><code>chmod 777</code> gibt <em>jedem</em> auf dem System volle Schreibrechte – ein klassischer Anfängerfehler, um schnell ein Rechteproblem „wegzumachen“. Es ist fast immer die falsche Lösung und ein echtes Sicherheitsloch. Richtig ist, den korrekten <strong>Besitzer</strong> zu setzen (Schritt 6), nicht die Rechte aufzuweichen.</div>
</div>
<h3 id="schritt-6-besitz-übertragen-mit-chown">Schritt 6: Besitz übertragen mit <code>chown</code></h3>
<p>Wem eine Datei gehört, änderst du mit <code>chown</code> – im Format <code>benutzer:gruppe</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chown koch:koch datei.txt
</span></span><span class="line"><span class="cl">stat -c <span class="s1">&#39;%A %a %U %G %n&#39;</span> datei.txt</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rwx------ 700 koch koch datei.txt</span></span></code></pre></div>
</div>
<p>Für einen ganzen Verzeichnisbaum hängst du <code>-R</code> (rekursiv) an – genau das brauchst du ständig bei Docker-Volumes, wenn ein Container als bestimmter Benutzer schreiben muss:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chown -R koch:koch /opt/meineapp/data</span></span></code></pre></div>
</div>
<p>Was passiert, wenn die Rechte fehlen? Als <code>koch</code> eine nur-für-root lesbare Datei öffnen:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">su - koch -c <span class="s2">&#34;cat /tmp/secret.txt&#34;</span></span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">cat: /tmp/secret.txt: Permission denied</span></span></code></pre></div>
</div>
<p>Genau diese Meldung ist der häufigste Rechte-Fehler überhaupt – jetzt weißt du, dass sie nichts Kaputtes bedeutet, sondern das Modell wie vorgesehen greift.</p>
<h3 id="schritt-7-gruppen--gemeinsamer-zugriff">Schritt 7: Gruppen – gemeinsamer Zugriff</h3>
<p>Gruppen bündeln Benutzer, die auf dieselben Dateien zugreifen sollen. Ein Benutzer wird mit <code>usermod -aG</code> (append to Group) einer weiteren Gruppe hinzugefügt:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">usermod -aG docker koch
</span></span><span class="line"><span class="cl">id koch</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">uid=1000(koch) gid=1000(koch) groups=1000(koch),990(docker)</span></span></code></pre></div>
</div>
<p>Das <code>-a</code> ist entscheidend: Ohne <code>-a</code> <strong>ersetzt</strong> <code>usermod -G</code> alle Nebengruppen, statt eine hinzuzufügen – so fliegt man versehentlich aus <code>sudo</code> oder <code>docker</code>. Zwei Gruppen begegnen dir ständig:</p>
<ul>
<li><strong><code>sudo</code></strong> – wer hier Mitglied ist, darf mit vorangestelltem <code>sudo</code> Befehle als root ausführen.</li>
<li><strong><code>docker</code></strong> – wer hier Mitglied ist, darf Docker steuern. Das ist praktisch, aber sicherheitsrelevant: Zugriff auf den Docker-Socket ist faktisch Root-Zugriff (siehe Warnung unten).</li>
</ul>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>Neue Gruppe erst nach neuem Login aktiv
  </p>
  <div class="prose-kitchen text-sm">Eine frisch zugewiesene Gruppe gilt erst in einer <strong>neuen Sitzung</strong>. Nach <code>usermod -aG</code> musst du dich aus- und wieder einloggen (oder <code>newgrp docker</code> starten), sonst zeigt <code>id</code> die Gruppe zwar an, <code>docker ps</code> scheitert aber weiter mit „permission denied“.</div>
</div>
<h3 id="schritt-8-sudo-statt-dauer-root">Schritt 8: <code>sudo</code> statt Dauer-Root</h3>
<p>Als root eingeloggt zu bleiben ist gefährlich: Ein Tippfehler löscht das halbe System, und jeder kompromittierte Prozess läuft mit vollen Rechten. Der sichere Weg ist ein normaler Benutzer in der Gruppe <code>sudo</code>, der einzelne Befehle bei Bedarf erhöht:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">usermod -aG sudo koch</span></span></code></pre></div>
</div>
<p>Danach führt <code>koch</code> administrative Befehle mit vorangestelltem <code>sudo</code> aus (<code>sudo apt update</code>) und wird nach seinem <em>eigenen</em> Passwort gefragt. Das ist nachvollziehbar (jede Aktion steht im Log unter <code>/var/log/auth.log</code>), reversibel und deutlich sicherer als ein Dauer-Root-Login. Genau darauf baut das Tutorial <a href="/tutorials/ssh-absichern/">SSH absichern</a> auf, wenn es den direkten Root-Login abschaltet.</p>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<div class="troubleshoot not-prose">
<p><strong><code>Permission denied</code>, obwohl die Rechte stimmen.</strong> Prüfe die Rechte des <em>übergeordneten</em> Verzeichnisses: Fehlt dort das <code>x</code>-Recht, kommst du gar nicht erst an die Datei heran, egal wie ihre eigenen Rechte aussehen. <code>ls -ld /pfad/zum/ordner</code> zeigt es.</p>
<p><strong><code>docker ps</code> sagt weiter „permission denied“ nach <code>usermod -aG docker</code>.</strong> Die neue Gruppe ist in der aktuellen Sitzung noch nicht aktiv – aus- und wieder einloggen (siehe Warn-Box in Schritt 7). <code>id</code> in der <em>neuen</em> Sitzung muss <code>docker</code> anzeigen.</p>
<p><strong>Neue Dateien haben unerwartete Rechte.</strong> Das bestimmt die <code>umask</code> – sie zieht Rechte von den Vorgaben ab. Der Debian-Standard <code>umask 0022</code> führt zu <code>644</code> für Dateien und <code>755</code> für Verzeichnisse. Prüfen mit dem Befehl <code>umask</code> (ohne Argument).</p>
<p><strong>Ein Container schreibt nicht ins Volume.</strong> Der Prozess im Container läuft unter einer bestimmten UID (oft nicht root). Setze den Besitzer des Host-Verzeichnisses passend: <code>chown -R 1000:1000 ./data</code> – die richtige UID nennt die Doku des Images (Umgebungsvariablen wie <code>PUID</code>/<code>PGID</code>).</p>
<p><strong><code>usermod</code> hat den Benutzer aus Gruppen geworfen.</strong> Du hast <code>-G</code> ohne <code>-a</code> benutzt. <code>-G</code> <em>ersetzt</em> die Nebengruppen. Immer <code>usermod -aG</code> verwenden. Reparatur: die fehlenden Gruppen mit <code>usermod -aG gruppe1,gruppe2 benutzer</code> wieder ergänzen.</p>

</div>

<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<ul>
<li><strong>Rechte sind selten Wartungsaufgabe, aber ein Audit lohnt sich.</strong> Suche gelegentlich nach weltweit schreibbaren Dateien – ein häufiges Sicherheitsleck: <code>find /opt -perm -0002 -type f</code>. Treffer solltest du mit <code>chmod o-w</code> entschärfen.</li>
<li><strong>Der Docker-Socket ist Root-Äquivalent.</strong> <code>ls -l /var/run/docker.sock</code> zeigt Besitz <code>root:docker</code> – wer in der Gruppe <code>docker</code> ist, kann Container mit gemountetem Host-Dateisystem starten und damit alles lesen und schreiben. Nimm nur vertrauenswürdige Konten in diese Gruppe.</li>
<li><strong>Backups brauchen die Rechte mit.</strong> Wenn du Daten sicherst, achte darauf, dass Besitz und Rechte erhalten bleiben – <code>restic</code> und <code>rsync -a</code> tun das automatisch. Sonst gehört nach einem Restore plötzlich alles root, und Dienste starten nicht mehr. Wie das sauber läuft, zeigt <a href="/tutorials/backups-mit-restic/">Backups mit Restic</a>.
</content>
</invoke></li>
</ul>
]]></content:encoded></item></channel></rss>