===== chmod - Dateirechte ändern =====
**Kurzfassung:** Mit ''chmod'' werden die Zugriffsrechte (Permissions) von Dateien und Verzeichnissen geändert. Das Kommando ermöglicht die Steuerung von Lese-, Schreib- und Ausführungsrechten für Eigentümer, Gruppe und andere Benutzer. Essentiell für die Sicherheit und Zugriffsverwaltung in Linux-Systemen.
==== Übersicht ====
''chmod'' (change mode) ist ein grundlegendes Linux-Kommando zur Änderung von Dateiberechtigungen. Es unterstützt sowohl symbolische als auch oktale Notation und ermöglicht präzise Kontrolle über Zugriffsrechte.
==== Voraussetzungen ====
* Root-Rechte oder Eigentümerschaft der Datei/des Verzeichnisses
* Grundkenntnisse über Linux-Dateiberechtigungen
* Verständnis von User/Group/Other-Konzept
==== Syntax ====
chmod [Optionen] Modus Datei
==== Modus-Notation ====
=== Oktale Notation ===
Numerische Darstellung der Rechte (empfohlen für klare Definitionen):
^ User ||^ Gruppe ||^ Rest ||^
| r | w | x | r | w | x | r | w | x |
| 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
# Beispiel: 755 = rwxr-xr-x
# User: 7 (4+2+1 = rwx)
# Group: 5 (4+0+1 = r-x)
# Other: 5 (4+0+1 = r-x)
chmod 755 script.sh
=== Symbolische Notation ===
Buchstaben-basierte Notation für relative Änderungen:
**Benutzer:**
* ''u'' = User (Eigentümer)
* ''g'' = Group (Gruppe)
* ''o'' = Others (Andere)
* ''a'' = All (Alle)
**Operatoren:**
* ''+'' = Rechte hinzufügen
* ''-'' = Rechte entfernen
* ''='' = Rechte setzen (überschreibt bestehende)
**Rechte:**
* ''r'' = Read (Lesen)
* ''w'' = Write (Schreiben)
* ''x'' = Execute (Ausführen)
# Ausführungsrecht für User hinzufügen
chmod u+x datei
# Schreibrecht für Group entfernen
chmod g-w datei
# Alle Rechte für Other entfernen
chmod o= datei
==== Wichtige Optionen ====
-R # Rekursiv für Unterverzeichnisse anwenden
-v # Verbose - zeigt alle Änderungen an
-c # Zeigt nur tatsächliche Änderungen
--reference=REF # Kopiert Rechte von Referenzdatei
==== Anleitung ====
=== Schritt 1: Häufige Berechtigungen setzen ===
# Normale Datei (rw-r--r--)
chmod 644 dokument.txt
# Ausführbare Datei/Script (rwxr-xr-x)
chmod 755 script.sh
# Privater Ordner (rwx------)
chmod 700 ~/.ssh
# Öffentlicher Ordner (rwxr-xr-x)
chmod 755 /var/www/html
# Konfig-Datei mit sensiblen Daten (rw-------)
chmod 600 ~/.ssh/id_rsa
=== Schritt 2: Rekursive Änderungen ===
# Alle Dateien und Verzeichnisse rekursiv anpassen
chmod -R 755 /var/www/projekt
# Nur Verzeichnisse rekursiv auf 755 setzen
find /pfad -type d -exec chmod 755 {} \;
# Nur Dateien rekursiv auf 644 setzen
find /pfad -type f -exec chmod 644 {} \;
=== Schritt 3: Symbolische Notation nutzen ===
# Ausführungsrecht für alle hinzufügen
chmod a+x script.sh
# Schreibrecht für Group und Other entfernen
chmod go-w datei.txt
# Nur User hat alle Rechte, Rest nur Lesen
chmod u=rwx,go=r datei
==== Hinweise ====
* **Sicherheit:** Niemals ''777'' für Produktionsdateien verwenden
* **SSH-Keys:** Private Keys müssen ''600'' sein, sonst verweigert SSH die Nutzung
* **Web-Verzeichnisse:** Standard ist ''755'' für Verzeichnisse, ''644'' für Dateien
* **Scripts:** Benötigen ''x''-Recht (execute) zum Ausführen
* **Rekursiv vorsichtig:** ''-R'' ändert alle Unterelemente, kann ungewollt Ausführungsrechte setzen
* **Backup:** Bei kritischen Systemen vor Massenänderungen Rechte sichern
==== Siehe auch ====
* [[sammlung:chown|chown - Eigentümer ändern]]
* [[sammlung:chgrp|chgrp - Gruppe ändern]]
* [[sammlung:dateirechte_uebersicht|Dateirechte Übersicht]]
* [[sammlung:suid_sgid|SUID/SGID/Sticky Bit]]
* [[sammlung:acl|ACL - Erweiterte Zugriffsrechte]]
==== Quellen ====
* [[https://man7.org/linux/man-pages/man1/chmod.1.html|chmod Man Page]]
* [[https://wiki.ubuntuusers.de/chmod/|Ubuntu Wiki - chmod]]
----
{{tag>cli permissions utilities basics}}
----