Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| linux:share [2025/04/26 12:49] – swe | linux:share [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| In der Standardkonfiguration von Linux ist der Home-Ordner eines Benutzers nur für diesen Benutzer zugänglich. Wenn ein Ordner in einem Home-Verzeichnis liegt, können andere Gruppenmitglieder ihn **nicht** erreichen, solange ihnen der Zugriff auf den Home-Ordner selbst verweigert wird. | In der Standardkonfiguration von Linux ist der Home-Ordner eines Benutzers nur für diesen Benutzer zugänglich. Wenn ein Ordner in einem Home-Verzeichnis liegt, können andere Gruppenmitglieder ihn **nicht** erreichen, solange ihnen der Zugriff auf den Home-Ordner selbst verweigert wird. | ||
| - | ### Hierarchie | + | **Hierarchie** |
| Die Berechtigungen des Home-Ordners schränken den Zugriff auf darunterliegende Dateien und Verzeichnisse ein. Standardmäßig hat ein Home-Ordner Berechtigungen wie: | Die Berechtigungen des Home-Ordners schränken den Zugriff auf darunterliegende Dateien und Verzeichnisse ein. Standardmäßig hat ein Home-Ordner Berechtigungen wie: | ||
| ```bash | ```bash | ||
| Line 20: | Line 20: | ||
| + | --- | ||
| + | ## Lösung: Erstellen eines gemeinsamen Ordner | ||
| - | ### Lösungen, um den Zugriff zu ermöglichen | + | **Annahme** |
| + | - Benutzer 1: **alice** | ||
| + | - Benutzer 2: **bob** | ||
| + | |||
| + | **Später kommen hinzu** | ||
| + | - Gemeinsame Gruppe: **projektgruppe** | ||
| + | - Gemeinsames Verzeichnis: | ||
| + | |||
| + | |||
| + | |||
| + | ## Schritt-für-Schritt Anleitung: | ||
| + | |||
| + | ### Benutzer anlegen | ||
| + | |||
| + | Zuerst legen wir die beiden Benutzer `alice` und `bob` an und vergeben auch die Passwörter | ||
| - | #### Option 1: chmod für den Home-Ordner (nicht so eine super Idee) | ||
| - | Ändere die Berechtigungen des Home-Ordners, | ||
| ```bash | ```bash | ||
| - | chmod 750 /home/benutzer | + | sudo useradd -m -s /bin/bash alice |
| + | sudo useradd -m -s / | ||
| + | |||
| + | sudo passwd alice | ||
| + | sudo passwd bob | ||
| ``` | ``` | ||
| - | - Besitzer (`benutzer`): | ||
| - | - Gruppe: Ausführen und Betreten (`r-x`). | ||
| - | - Andere: Kein Zugriff (`---`). | ||
| - | Damit können Gruppenmitglieder `/ | ||
| - | #### Option 2: Den Ordner an einen neutralen Ort verschieben (bevorzugt) | + | --- |
| - | Wenn du den Zugriff auf den Home-Ordner nicht ändern möchtest, verschiebe den gemeinsamen Ordner an einen neutralen Ort, z. B. `/srv`, `/opt`, oder `/ | + | |
| + | ### Gemeinsame Gruppe erstellen | ||
| + | |||
| + | Nun erstellen wir die gemeinsame Gruppe | ||
| ```bash | ```bash | ||
| - | sudo mkdir / | + | sudo groupadd |
| - | sudo chgrp projektgruppe | + | |
| - | sudo chmod 770 / | + | |
| ``` | ``` | ||
| - | Danach kann der Ordner von allen Gruppenmitgliedern genutzt werden. | + | Benutzer zur gemeinsamen Gruppe hinzufügen |
| - | #### Option 3: Symbolischer Link (nur bei existierendem Zugriff) | ||
| - | Erstelle einen symbolischen Link zu einem gemeinsamen Ordner außerhalb des Home-Verzeichnisses: | ||
| ```bash | ```bash | ||
| - | ln -s / | + | sudo usermod |
| + | sudo usermod -aG projektgruppe bob | ||
| ``` | ``` | ||
| - | Beachte: Dies funktioniert nur, wenn der Zielpfad bereits für die Gruppe zugänglich ist. | + | ### Erstmal falsch |
| - | ### Empfehlung | + | **Falsch #1**: Homeordner von alice für alle freigeben |
| - | - **Wenn möglich**: Verschiebe gemeinsame Ordner an einen neutralen Ort, der nicht an persönliche Home-Verzeichnisse gebunden ist. | + | ```bash |
| - | - **Falls notwendig**: Passe die Berechtigungen des Home-Ordners an, aber sei vorsichtig, um nicht unbeabsichtigt sensible Daten freizugeben. | + | chmod 755 / |
| + | ``` | ||
| + | Eine richtig doofe Idee! **Don't do this**. Zwar kommen wir jetzt auf den Home-Ordner von `alice`. Allerding gilt das nun auch für jeden. | ||
| - | ## setgid-Bit (Set Group ID) | ||
| + | **Falsch #2**: Gemeinsame Gruppe - Ordner im Homeordner von alice erstellen und Gruppe ändern | ||
| ```bash | ```bash | ||
| - | chmod g+s /shared-folder | + | chmod 770 /home/ |
| ``` | ``` | ||
| - | **Problem | + | |
| - | - **Wirkung auf Verzeichnisse**: | + | - Pfad kann nicht beschritten werden |
| - | enn das `setgid`-Bit auf einem Verzeichnis gesetzt wird, erhalten alle neuen Dateien und Unterverzeichnisse innerhalb dieses Verzeichnisses automatisch die Gruppe des Verzeichnisses, | + | - Pfad muss vollumfänglich begehbar sein |
| + | |||
| + | ### Jetzt aber richtig | ||
| + | |||
| + | #### Gemeinsames Verzeichnis erstellen | ||
| + | |||
| + | Erstelle ein Verzeichnis, | ||
| + | |||
| + | Wer muss das machen? `sudo` | ||
| + | |||
| + | ```bash | ||
| + | sudo mkdir / | ||
| + | ``` | ||
| + | andere gute Orte `/srv` und `/ | ||
| + | |||
| + | |||
| + | --- | ||
| + | |||
| + | #### Besitzrechte des Verzeichnisses ändern | ||
| + | |||
| + | Ändere den Besitzer des Verzeichnisses so, dass die Gruppe `projektgruppe` das Verzeichnis verwaltet: | ||
| + | |||
| + | ```bash | ||
| + | sudo chown : | ||
| + | ``` | ||
| + | |||
| + | Setze die Berechtigungen so, dass Mitglieder der Gruppe lesen, schreiben und ausführen können: | ||
| + | |||
| + | ```bash | ||
| + | sudo chmod 770 / | ||
| + | ``` | ||
| + | |||
| + | Das bedeutet: | ||
| + | - Der Besitzer (root) hat vollen Zugriff. | ||
| + | - Die Mitglieder der Gruppe `projektgruppe` können lesen, schreiben und ausführen. | ||
| + | - Andere Benutzer haben keinen Zugriff. | ||
| + | |||
| + | --- | ||
| + | |||
| + | #### Überprüfen der Berechtigungen | ||
| + | |||
| + | Stelle sicher, dass die Berechtigungen korrekt gesetzt sind: | ||
| + | |||
| + | ```bash | ||
| + | ls -l /home | ||
| + | ``` | ||
| + | |||
| + | Du solltest eine Ausgabe wie diese sehen: | ||
| + | |||
| + | ```bash | ||
| + | drwxrwx--- 2 root projektgruppe 4096 Dez 9 12:34 alicebob | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | |||
| + | #### Testen des Zugriffs | ||
| + | |||
| + | Melde dich nun als Benutzer `alice` an und erstelle eine Datei im Verzeichnis `alicebob`: | ||
| + | |||
| + | ```bash | ||
| + | su - alice | ||
| + | touch / | ||
| + | ``` | ||
| + | |||
| + | Melde dich dann als Benutzer `bob` an und prüfe, ob du auf die Datei zugreifen kannst: | ||
| + | |||
| + | ```bash | ||
| + | su - bob | ||
| + | cat / | ||
| + | ``` | ||
| + | |||
| + | Da beide Benutzer in der Gruppe `projektgruppe` sind, sollten sie in der Lage sein, auf die Datei zuzugreifen. | ||
| + | |||
| + | --- | ||
| + | |||
| + | #### Empfehlung | ||
| + | Verschiebe gemeinsame Ordner an einen neutralen Ort, der nicht an persönliche Home-Verzeichnisse gebunden ist. | ||
| + | |||
| + | --- | ||
| + | ### setgid-Bit (Set Group ID) | ||
| + | |||
| + | **Problem: Standardgruppe neuer Dateien festzurren** | ||
| + | - **Ohne setgid-Bit**: | ||
| + | - **Wirkung auf Verzeichnisse**: | ||
| - **Wirkung auf ausführbare Dateien**: Wenn das `setgid`-Bit auf einer Datei gesetzt ist, wird diese Datei mit den **Gruppenrechten** des Besitzers ausgeführt, | - **Wirkung auf ausführbare Dateien**: Wenn das `setgid`-Bit auf einer Datei gesetzt ist, wird diese Datei mit den **Gruppenrechten** des Besitzers ausgeführt, | ||
| **Beispiel für ein Verzeichnis: | **Beispiel für ein Verzeichnis: | ||
| ```bash | ```bash | ||
| - | chmod g+s /shared-folder | + | chmod g+s /home/ |
| ``` | ``` | ||
| Wenn Benutzer `alice` eine Datei im Ordner erstellt, wird diese Datei der Gruppe des Ordners zugewiesen. | Wenn Benutzer `alice` eine Datei im Ordner erstellt, wird diese Datei der Gruppe des Ordners zugewiesen. | ||
| Line 81: | Line 181: | ||
| drwxrws--- 2 alice projektgruppe 4096 Nov 23 12:00 shared-folder | drwxrws--- 2 alice projektgruppe 4096 Nov 23 12:00 shared-folder | ||
| ``` | ``` | ||
| - | + | --- | |
| - | ## Sticky-Bit | + | ### Sticky-Bit |
| **Problem 3: Nur Besitzer soll Datei löschen und umbenennen dürfen** | **Problem 3: Nur Besitzer soll Datei löschen und umbenennen dürfen** | ||
| - | Das **Sticky Bit** hat eine andere Funktion und wird hauptsächlich in Verzeichnissen verwendet, um zu verhindern, dass Benutzer Dateien in einem Verzeic | + | Das **Sticky Bit** hat eine andere Funktion und wird hauptsächlich in Verzeichnissen verwendet, um zu verhindern, dass Benutzer Dateien in einem Verzeichnis |
| - | hnis löschen oder umbenennen, die **nicht** ihnen gehören. | + | |
| #### Verzeichnis mit Sticky Bit | #### Verzeichnis mit Sticky Bit | ||
| Line 105: | Line 204: | ||
| Das `t` am Ende der Berechtigungen zeigt an, dass das Sticky Bit gesetzt ist. | Das `t` am Ende der Berechtigungen zeigt an, dass das Sticky Bit gesetzt ist. | ||
| + | --- | ||
| + | ### Unterschiede zwischen setgid und Sticky Bit | ||
| - | ## Unterschiede zwischen setgid und Sticky Bit | + | | Merkmal |
| - | + | ||
| - | | Merkmal | + | |
| |------------------------|-----------------------------------------------------|---------------------------------------------------| | |------------------------|-----------------------------------------------------|---------------------------------------------------| | ||
| - | | **Hauptfunktion** | Erbt die Gruppe des Verzeichnisses für neue Dateien | Verhindert das Löschen/ | + | | Hauptfunktion |
| - | | **Verzeichniswirkung** | Neue Dateien erben die Gruppe des Verzeichnisses | + | | Verzeichniswirkung |
| - | | **Dateiwirkung** | Ändert die Gruppenrechte bei der Ausführung | + | | Dateiwirkung |
| - | | **Häufige Verwendung** | Gemeinsame Ordner für eine Gruppe | + | | Häufige Verwendung |