# NFS-Freigaben

> Artikel ist in Bearbeitung! (14/07/25)

## Inhalt

- [NFS-Freigaben](#nfs-freigaben)
  - [Inhalt](#inhalt)
  - [Anleitung](#anleitung)
    - [Was bedeutet das im Detail?](#was-bedeutet-das-im-detail)
      - [Zeile 1: `email-spenge:/daten /daten nfs4 rw,hard,intr,_netdev 0 0`](#zeile-1-email-spengedaten-daten-nfs4-rwhardintr_netdev-0-0)
      - [Zeile 2: `email-spenge:/daten/skotarczak /home/skotarczak nfs4 rw,exec,nosuid,nodev,_netdev 0 0`](#zeile-2-email-spengedatenskotarczak-homeskotarczak-nfs4-rwexecnosuidnodev_netdev-0-0)
    - [Wieso solltest du dich ohne lokalen Benutzer anmelden können?](#wieso-solltest-du-dich-ohne-lokalen-benutzer-anmelden-können)
    - [Praktisch](#praktisch)
    - [1. Verzeichnis `/daten`](#1-verzeichnis-daten)
      - [Schritte Verzeichnis 1](#schritte-verzeichnis-1)
    - [2. Verzeichnis `/home/skotarczak`](#2-verzeichnis-homeskotarczak)
      - [Schritte Verzeichnis 2](#schritte-verzeichnis-2)
    - [3. Automatisches Mounten](#3-automatisches-mounten)
    - [Zusammenfassung](#zusammenfassung)
    - [Warum sind UID und GID wichtig?](#warum-sind-uid-und-gid-wichtig)
      - [Was passiert, wenn sie nicht übereinstimmen?](#was-passiert-wenn-sie-nicht-übereinstimmen)
    - [Schritt 1: Die UID und GID auf dem NFS-Server herausfinden](#schritt-1-die-uid-und-gid-auf-dem-nfs-server-herausfinden)
    - [Schritt 2: Den Benutzer lokal anlegen](#schritt-2-den-benutzer-lokal-anlegen)
    - [Schritt 3: Rechte für das Home-Verzeichnis festlegen](#schritt-3-rechte-für-das-home-verzeichnis-festlegen)
    - [Schritt 4: Überprüfen, ob der Benutzer richtig eingerichtet wurde](#schritt-4-überprüfen-ob-der-benutzer-richtig-eingerichtet-wurde)
    - [Schritt 5: Mounten der NFS-Freigaben](#schritt-5-mounten-der-nfs-freigaben)
      - [Zum Beispiel manuelles Mounten](#zum-beispiel-manuelles-mounten)
    - [Zusammenfassung UID und GID](#zusammenfassung-uid-und-gid)

---

## Anleitung

Eine Netzwerkfreigabe Nutzen um eine entfernte Ressource nach `/home/nutzername` zu mounten.
Eine kleine praktische Reise zum Thema `mount`, `/etc/fstab` und die nfs-Freigaben um allgemeinen.

### Was bedeutet das im Detail?

#### Zeile 1: `email-spenge:/daten /daten nfs4 rw,hard,intr,_netdev 0 0`

- **email-spenge:/daten**: Das ist der NFS-Server (`email-spenge`), der das Verzeichnis `/daten` freigibt.
- **/daten**: Dies ist der Punkt auf deinem lokalen System, wo dieses freigegebene Verzeichnis eingebunden wird.
- **nfs4**: Das ist die Version des NFS-Protokolls, in diesem Fall NFS Version 4.
- **rw**: Lese- und Schreibzugriff auf das Verzeichnis.
- **hard**: Der Mount wird "hart" gemacht, was bedeutet, dass der Client, wenn der Server nicht erreichbar ist, unendlich viele Versuche unternimmt, die Verbindung wiederherzustellen.
- **intr**: Unterbricht NFS-Operationen, falls der Server nicht erreichbar ist.
- **\_netdev**: Das bedeutet, dass das Mounten dieses Verzeichnisses erst erfolgt, wenn die Netzwerkverbindung hergestellt ist. Das ist besonders wichtig für Netzwerkmounts, damit der Mount nicht vorzeitig ausgeführt wird.
- **0 0**: Diese beiden Zahlen beziehen sich auf die Mount-Optionen für das Dateisystem. Die erste Zahl (`0`) bedeutet, dass dieses Verzeichnis nicht für die Sicherung berücksichtigt wird. Die zweite Zahl (`0`) steht für die Reihenfolge der Dateisystem-Prüfung beim Booten.

#### Zeile 2: `email-spenge:/daten/skotarczak /home/skotarczak nfs4 rw,exec,nosuid,nodev,_netdev 0 0`

- **email-spenge:/daten/skotarczak**: Das ist ein weiteres freigegebenes Verzeichnis auf dem NFS-Server, in diesem Fall das Unterverzeichnis `/daten/skotarczak`.
- **/home/skotarczak**: Hier wird das Verzeichnis in dein eigenes Home-Verzeichnis eingebunden (also `/home/skotarczak`).
- **rw**: Auch hier hast du Lese- und Schreibzugriff.
- **exec**: Das bedeutet, dass ausführbare Dateien im gemounteten Verzeichnis ausgeführt werden dürfen.
- **nosuid**: Das verhindert, dass Dateien mit Set-UID oder Set-GID-Berechtigungen auf diesem gemounteten Verzeichnis ausgeführt werden, was ein Sicherheitsmerkmal ist.
- **nodev**: Geräte-Dateien werden im gemounteten Verzeichnis ignoriert (wiederum ein Sicherheitsmerkmal).
- **\_netdev**: Wie bei der ersten Zeile – das Verzeichnis wird erst gemountet, wenn das Netzwerk verfügbar ist.

### Wieso solltest du dich ohne lokalen Benutzer anmelden können?

Die entscheidende Frage ist, warum du dich ohne lokalen Benutzer anmelden kannst.
Dies liegt daran, dass beim **NFS-Mounten** die Benutzer- und Gruppen-IDs (UIDs und GIDs) aus dem entfernten System (in diesem Fall von `email-spenge`) übernommen werden.

Das bedeutet:

- Wenn du in `/home/skotarczak` auf das Verzeichnis zugreifst, wird der Inhalt dieses Verzeichnisses vom NFS-Server bereitgestellt.
- Das Besondere dabei ist, dass es auf dem NFS-Server ein Verzeichnis für den Benutzer `skotarczak` gibt (unter `/daten/skotarczak`), und dass beim Mounten dieses Verzeichnisses von deinem Rechner aus, dein lokales Benutzerkonto direkt auf die Daten zugreifen kann, als ob es auf dem Server lokal gespeichert wäre.

**Wichtiger Punkt**: Auf deinem Rechner muss kein lokaler Benutzer `skotarczak` existieren, weil der Zugriff auf das Verzeichnis durch die UID (Benutzer-ID) und GID (Gruppen-ID) geregelt wird.
Solange diese ID auf dem NFS-Server vorhanden ist, weiß das System, dass es sich um den richtigen Benutzer handelt, auch wenn der Benutzer lokal nicht existiert.

### Praktisch

- Du kannst dich also über NFS auf einem Rechner anmelden und auf das gemountete Verzeichnis zugreifen, ohne dass der Benutzer lokal vorhanden sein muss. Alles, was du benötigst, ist, dass die UID und GID des Benutzers auf dem Server und auf dem Client (also deinem Rechner) übereinstimmen.

### 1. Verzeichnis `/daten`

Das Verzeichnis **`/daten`** ist der Mount-Punkt für die NFS-Freigabe **`email-spenge:/daten`**.
Da dies eine Freigabe vom Server ist, musst du sicherstellen, dass das Verzeichnis auf deinem lokalen System existiert, bevor das NFS-Verzeichnis dort gemountet wird.

#### Schritte Verzeichnis 1

- Erstelle das Verzeichnis mit dem Befehl:

  ```bash
  sudo mkdir /daten
  ```

- **Benutzer und Rechte**: Da dieses Verzeichnis als allgemeiner Mount-Punkt dient, brauchst du in der Regel keine speziellen Benutzerrechte.
  Du kannst das Verzeichnis dem `root`-Benutzer gehören lassen und den Zugriff für alle Benutzer erlauben:

  ```bash
  sudo chown root:root /daten
  sudo chmod 755 /daten
  ```

### 2. Verzeichnis `/home/skotarczak`

Das Verzeichnis **`/home/skotarczak`** ist der Mount-Punkt für die NFS-Freigabe **`email-spenge:/daten/skotarczak`**.
Es sollte den gleichen Namen wie dein Benutzername haben und als dein Home-Verzeichnis fungieren.
Wenn du dieses Verzeichnis noch nicht hast, musst du es ebenfalls anlegen.

#### Schritte Verzeichnis 2

- Erstelle das Verzeichnis:

  ```bash
  sudo mkdir /home/skotarczak
  ```

- **Benutzer und Rechte**: Für das Verzeichnis `/home/skotarczak` musst du sicherstellen, dass der Benutzer **`skotarczak`** darauf zugreifen kann, da es als dein Home-Verzeichnis fungieren wird.
  Setze den Besitzer des Verzeichnisses auf den Benutzer `skotarczak` und die Gruppe ebenfalls auf `skotarczak`:

  ```bash
  sudo chown skotarczak:skotarczak /home/skotarczak
  ```

  Falls der Benutzer `skotarczak` auf deinem System noch nicht existiert (weil du ja ohne lokalen Benutzer arbeiten willst), kannst du den Benutzer mit der gleichen UID (User ID) wie auf dem NFS-Server erstellen.
  Alternativ kannst du auch einfach die UID und GID des Benutzers `skotarczak` auf deinem lokalen System mit den NFS-Berechtigungen übereinstimmen lassen, sodass die Benutzerrechte korrekt zugewiesen werden.

- Setze die Rechte so, dass du (als Benutzer `skotarczak`) vollen Zugriff auf das Verzeichnis hast:

  ```bash
  sudo chmod 700 /home/skotarczak
  ```

### 3. Automatisches Mounten

Wenn du die Verzeichnisse erstellt hast, kannst du die **`/etc/fstab`**-Datei konfigurieren, damit die NFS-Freigaben automatisch beim Systemstart gemountet werden.
Das hast du ja vermutlich schon erhalten, aber falls du es noch nicht getan hast, solltest du sicherstellen, dass die folgenden Zeilen in deiner **`/etc/fstab`** stehen:

```plaintext
email-spenge:/daten            /daten            nfs4 rw,hard,intr,_netdev       0 0
email-spenge:/daten/skotarczak  /home/skotarczak   nfs4 rw,exec,nosuid,nodev,_netdev 0 0
```

Damit wird das Verzeichnis **`/daten`** vom Server **`email-spenge`** gemountet und das NFS-Verzeichnis **`/daten/skotarczak`** in dein Home-Verzeichnis eingebunden.

### Zusammenfassung

- **`/daten`** muss auf deinem lokalen System existieren, aber du musst keinen speziellen Benutzer anlegen.
  Rechte sollten so gesetzt werden, dass der `root`-Benutzer darauf zugreifen kann.
- **`/home/skotarczak`** muss existieren und dem Benutzer `skotarczak` gehören, damit das NFS-Home-Verzeichnis korrekt gemountet werden kann.
- Wenn der Benutzer `skotarczak` auf deinem lokalen Rechner nicht existiert, kannst du ihn mit den entsprechenden UID/GID-Werten anlegen oder die Rechte manuell zuweisen, sodass der Zugriff funktioniert.

Hoffentlich hilft dir das weiter! Hast du noch Fragen oder ist etwas unklar?

### Warum sind UID und GID wichtig?

Wenn du dich über NFS auf das Verzeichnis **`/home/skotarczak`** zugreifst, müssen die UID und GID deines lokalen Benutzers `skotarczak` mit denen des Benutzers auf dem NFS-Server übereinstimmen.
Ansonsten könnte es zu Berechtigungsproblemen kommen, weil das NFS-Dateisystem diese IDs verwendet, um zu bestimmen, welcher Benutzer und welche Gruppe auf die Dateien zugreifen dürfen.

#### Was passiert, wenn sie nicht übereinstimmen?

- Wenn die **UID und GID** des lokalen Benutzers `skotarczak` anders sind als auf dem NFS-Server, kann es zu Zugriffsproblemen kommen, da der NFS-Server diese IDs nicht mit deinem lokalen Benutzer verknüpfen kann.
- Das bedeutet, du würdest möglicherweise keine Berechtigungen haben, um auf das NFS-Verzeichnis zuzugreifen.

### Schritt 1: Die UID und GID auf dem NFS-Server herausfinden

Du musst herausfinden, welche **UID** und **GID** der Benutzer `skotarczak` auf dem NFS-Server hat. Du kannst dies auf dem NFS-Server folgendermaßen tun:

1. **UID und GID des Benutzers herausfinden**:
   Auf dem NFS-Server kannst du die UID und GID des Benutzers `skotarczak` mit dem folgenden Befehl herausfinden:

   ```bash
   id skotarczak
   ```

   Beispielausgabe:

   ```bash
   uid=1001(skotarczak) gid=1001(skotarczak) Gruppen=1001(skotarczak)
   ```

   In diesem Beispiel hat der Benutzer `skotarczak` die UID `1001` und die GID `1001`.

### Schritt 2: Den Benutzer lokal anlegen

Nun musst du auf deinem lokalen Rechner einen Benutzer mit derselben UID und GID anlegen. Das geht mit dem Befehl `useradd` (unter Linux) wie folgt:

1. **Benutzer mit der gleichen UID und GID anlegen**:
   Wenn die UID und GID des Benutzers `skotarczak` auf dem NFS-Server z. B. `1001` sind, dann kannst du den Benutzer auf deinem lokalen System anlegen:

   ```bash
   sudo useradd -u 1001 -g 1001 -m skotarczak
   ```

   Hierbei:

   - `-u 1001`: Setzt die UID des Benutzers auf `1001`.
   - `-g 1001`: Setzt die GID der Benutzergruppe auf `1001`.
   - `-m`: Erstellt das Home-Verzeichnis des Benutzers (z. B. `/home/skotarczak`).
2. **Passwort setzen**:
   Falls du ein Passwort für den Benutzer setzen möchtest, kannst du das mit `passwd` tun:

   ```bash
   sudo passwd skotarczak
   ```

   Gib das gewünschte Passwort ein.

### Schritt 3: Rechte für das Home-Verzeichnis festlegen

Nachdem der Benutzer angelegt wurde, solltest du sicherstellen, dass das Home-Verzeichnis des Benutzers korrekt eingerichtet ist, damit er dort auch wirklich zugreifen kann.
Setze die Rechte für das Verzeichnis `/home/skotarczak`:

```bash
sudo chown skotarczak:skotarczak /home/skotarczak
sudo chmod 700 /home/skotarczak
```

### Schritt 4: Überprüfen, ob der Benutzer richtig eingerichtet wurde

Prüfe, ob der Benutzer korrekt angelegt wurde und ob die UID und GID stimmen:

```bash
id skotarczak
```

Die Ausgabe sollte die gleiche UID und GID wie auf dem NFS-Server zeigen.

### Schritt 5: Mounten der NFS-Freigaben

Wenn der Benutzer angelegt ist und die Verzeichnisse `/daten` und `/home/skotarczak` vorhanden sind, kannst du nun die NFS-Freigaben manuell mounten oder den nächsten Neustart abwarten, wenn du die **`/etc/fstab`** bereits angepasst hast.

#### Zum Beispiel manuelles Mounten

```bash
sudo mount -a
```

Das sollte die Verzeichnisse gemäß deiner **`/etc/fstab`** einbinden.

---

### Zusammenfassung UID und GID

- **UID und GID sind sehr wichtig**, um sicherzustellen, dass der Benutzer korrekt auf die NFS-Freigaben zugreifen kann.
- Du kannst den Benutzer `skotarczak` mit der gleichen UID und GID auf deinem lokalen Rechner anlegen, um sicherzustellen, dass es keine Berechtigungsprobleme gibt.
- Der Befehl `useradd -u <UID> -g <GID> -m skotarczak` wird verwendet, um den Benutzer anzulegen.
- Wenn alles korrekt eingerichtet ist, kannst du dich wie gewohnt anmelden und auf die NFS-Freigaben zugreifen.
