chown – Änderung von Besitzer und Gruppe bei Dateien & Verzeichnissen

Inhaltsverzeichnis

Warum du chown kennen solltest

Als Systemadministrator bist du dafür verantwortlich, dass nur die richtigen Nutzer auf bestimmte Dateien und Verzeichnisse zugreifen können. Ein zentraler Baustein dafür ist der Befehl chown, mit dem du den Besitzer und die Gruppe von Dateien und Verzeichnissen gezielt steuerst. Besonders in Multi-User-Umgebungen, bei Webservern oder auf geteilten Systemen ist chown unverzichtbar, um Sicherheit und klare Verantwortlichkeiten zu gewährleisten.

Grundlagen von chown

Der Befehl chown steht für „change owner“ und dient dazu, den Besitzer und optional die Gruppe einer Datei oder eines Verzeichnisses zu ändern. In der Regel darf nur root oder ein Benutzer mit entsprechenden Rechten den Besitzer ändern, während der Dateibesitzer selbst oft nur die Gruppe anpassen darf.

Die grundlegende Syntax sieht so aus:

chown [OPTIONEN] NEUER_BESITZER[:NEUE_GRUPPE] DATEI… 

Dabei gibst du als neuen Besitzer entweder den Benutzernamen oder numerische UID an, und optional die Gruppe oder GID hinter einem Doppelpunkt.

Wichtige Optionen und Variationen

Besitzer ändern

Mit der einfachsten Form änderst du nur den Besitzer einer Datei. Diese Variante nutzt du, wenn nur der Benutzer wechseln soll und die Gruppenzugehörigkeit unverändert bleiben kann. Sie ist besonders praktisch, wenn Dateien zwischen Konten oder Service-Accounts verschoben wurden und nun einem anderen Account zugeordnet werden müssen.

chown neueruser datei.txt
# Zusätzliches Hinzufügen zur primären Gruppe des neueruser
chown neueruser: datei.txt

Hier wird datei.txt dem Benutzer neueruser als Besitzer zugewiesen, während die bisherige Gruppe unverändert bleibt.

Gruppe ändern

Du kannst mit chown auch ausschließlich die Gruppe ändern, indem du den Besitzer weglässt und nur eine Gruppe angibst. Diese Form ist sinnvoll, wenn mehrere Benutzer über eine gemeinsame Gruppe auf Dateien zugreifen sollen, ohne den eigentlichen Dateibesitzer zu verändern. So kannst du etwa Projektverzeichnisse einer dedizierten Arbeitsgruppe zuordnen, um gemeinsame Schreibrechte zu ermöglichen.

chown :devteam datei.txt

In diesem Beispiel bleibt der Besitzer gleich, aber die Gruppe von datei.txt wird auf devteam gesetzt.

Besitzer und Gruppe gleichzeitig ändern

Häufig willst du sowohl Besitzer als auch Gruppe in einem Schritt setzen. Diese Variante ist besonders nützlich, wenn du komplette Verzeichnisbäume für einen Dienst, etwa einen Webserver oder eine Anwendung, an einen spezifischen Service-User und dessen Gruppe übergeben willst. So stellst du sicher, dass sowohl Dienstprozesse als auch Mitglieder der zugehörigen Gruppe konsistent Zugriffsrechte erhalten.

chown appuser:appgroup config.yaml

Damit wird config.yaml dem Benutzer appuser und der Gruppe appgroup zugeordnet.

Rekursives Ändern mit -R

Wenn du die Eigentümerstruktur eines ganzen Verzeichnisbaums anpassen willst, nutzt du die Option -R oder --recursive. Mit -R änderst du Besitzer und/oder Gruppe des angegebenen Verzeichnisses sowie aller darin enthaltenen Dateien und Unterverzeichnisse. Das ist essenziell bei der Einrichtung neuer Homeverzeichnisse, Webroot-Verzeichnisse oder Anwendungsdaten, damit der gesamte Baum konsistent dem gewünschten Account gehört.

chown -R john:build /tmp/src

Dieses Beispiel setzt den Besitzer und die Gruppe von /tmp/src sowie aller enthaltenen Objekte auf john und build.

Verbose-Ausgabe mit -v und Änderungen protokollieren

Mit der Option -v oder --verbose kannst du dir für jede Datei anzeigen lassen, welche Änderung chown vorgenommen hat. Das ist insbesondere hilfreich bei Skripten, in denen du nachvollziehen möchtest, ob die rekursiven Änderungen tatsächlich wie geplant ausgeführt wurden. Gerade bei größeren Verzeichnisbäumen erkennst du so schnell, ob bestimmte Dateien von Rechten oder ACLs blockiert wurden.

chown -Rv webuser:webgroup /var/www

Hier bekommst du für jedes Element unter /var/www eine Ausgabe, die den alten und neuen Besitzer beziehungsweise die Gruppe zeigt.

Nur bei tatsächlichen Änderungen mit -c

Die Option -c oder --changes verhält sich ähnlich wie -v, zeigt aber nur dann eine Meldung, wenn tatsächlich eine Änderung vorgenommen wurde. Diese Option ist sehr praktisch, wenn du regelmäßig die gleichen chown-Befehle in Deployments oder Wartungsskripten ausführst und dein Log nicht mit unnötigen Meldungen füllen willst. Du siehst damit nur die Fälle, in denen sich wirklich etwas geändert hat, und kannst diese gezielt prüfen.

chown -Rc backup:backup /srv/backup

In diesem Beispiel werden nur die Dateien in der Ausgabe angezeigt, deren Besitzer oder Gruppe tatsächlich angepasst wurden.

Fehlerausgabe reduzieren mit -f, --quiet oder --silent

Wenn du nicht möchtest, dass chown bei jeder nicht änderbaren Datei eine Fehlermeldung ausgibt, kannst du -f, --quiet oder --silent verwenden. Das ist nützlich in automatisierten Skripten, in denen erwartete Fehlermeldungen (z. B. bei schreibgeschützten oder nicht zugänglichen Dateien) nicht jedes Mal das Log füllen sollen. Du musst aber sicherstellen, dass du Fehlerbehandlung anderweitig im Blick behältst, damit kritische Probleme nicht unbemerkt bleiben.

chown -Rf appuser:appgroup /opt/appdata

Hier werden die meisten Fehlermeldungen unterdrückt, während chown trotzdem so viele Dateien wie möglich anpasst.

Standardmäßig wirkt chown auf die Zieldatei eines symbolischen Links, nicht auf den Link selbst. Mit -h oder --no-dereference kannst du stattdessen den Besitzer des Links selbst ändern, sofern dein System dies unterstützt. Dies ist relevant, wenn du bewusst zwischen Rechten auf den Link und auf die verknüpfte Datei unterscheiden willst, zum Beispiel in komplexen Filesystem-Layouts oder bei Chroot-Umgebungen. So behältst du eine feine Kontrolle über die Metadaten der Links, ohne die Zieldateien ungewollt zu verändern.

chown -h admin:support symlink.log

In diesem Beispiel wird der symbolische Link symlink.log umgehängt, nicht die Datei, auf die er zeigt.

Besitzer anhand einer Referenzdatei setzen: --reference

Mit der Option --reference=DATEI kannst du Besitzer und Gruppe einer oder mehrerer Dateien exakt an einer bestehenden Referenzdatei ausrichten. Das ist besonders praktisch, wenn du ein Set von Dateien auf exakt die gleichen Eigentümer-Einstellungen bringen willst wie eine bekannte, korrekt konfigurierte Datei. Du vermeidest Tippfehler bei Benutzer- oder Gruppennamen und stellst eine konsistente Konfiguration sicher.

chown --reference=/var/www/index.html /var/www/app/*.php

Alle .php-Dateien bekommen denselben Besitzer und dieselbe Gruppe wie index.html.

Selektives Ändern mit --from

--from=AKTUELLER_BESITZER:AKTUELLE_GRUPPE sorgt dafür, dass chown nur dann eine Datei ändert, wenn deren aktueller Besitzer und/oder deren Gruppe den angegebenen Werten entspricht. Diese Option eignet sich, wenn du gezielt nur Dateien umhängen willst, die aktuell einem bestimmten Konto gehören, zum Beispiel bei einer Migration von useralt zu userneu. So verhinderst du, dass versehentlich Dateien angepasst werden, die bereits manuell korrigiert wurden oder einem anderen Konto zugeordnet sind.

chown --from=olduser:oldgroup newuser:newgroup projekt/*

Nur Dateien, die olduser:oldgroup gehören, werden hier auf newuser:newgroup geändert.

Praktische Einsatzszenarien für chown

Im Sysadmin-Alltag begegnet dir chown in vielen wiederkehrenden Situationen. Ein typischer Fall ist etwa das Einrichten eines DocumentRoot für einen Webserver, bei dem alle Dateien einem speziellen Webserver-User und dessen Gruppe gehören sollen.

Ein zweites, häufiges Szenario ist das Anlegen oder Migrieren von Homeverzeichnissen, bei dem du sicherstellen musst, dass alle Dateien im Home des Users auch wirklich diesem User gehören. Ebenso spielt chown eine wichtige Rolle bei Backup- und Restore-Prozessen, um nach einer Rücksicherung die ursprünglichen Besitzverhältnisse wiederherzustellen.

# Webserver-Verzeichnis vorbereiten
chown -R apache:httpd /var/www/domainname.de

# Neues Home-Verzeichnis zuweisen
chown -R alice:alice /home/alice

Im ersten Beispiel wird das Web-Verzeichnis dem typischen Webserver-User apache und der Gruppe httpd übergeben, wie es bei vielen Distributionen üblich ist. Im zweiten Beispiel stellst du sicher, dass das Homeverzeichnis von alice vollständig diesem Benutzer gehört und sich keine Reste anderer Benutzer darin finden.

Zusammenfassung

Der Befehl chown ist ein zentrales Werkzeug, um die Eigentumsverhältnisse von Dateien und Verzeichnissen in Linux zielgerichtet zu verwalten. Mit seiner flexiblen Syntax und Optionen wie -R, -v, --reference und --from kannst du sowohl einfache Einzeldatei-Anpassungen als auch komplexe, rekursive Änderungen in größeren Verzeichnisbäumen sicher umsetzen.

Für dich als Systemadministrator ist ein sicherer Umgang mit chown entscheidend, um Zugriffsrechte korrekt zu vergeben, Dienste sauber zu isolieren und Audits über Dateibesitz bestehen zu können. Je besser du die Optionen und typischen Einsatzszenarien kennst, desto effizienter und fehlerärmer kannst du dein System im täglichen Betrieb administrieren.

Fediverse reactions

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

226 Beiträge
14 Folgende