MacOS NFS Client to Linux NFS Server

Aus Laub-Home Wiki

Allgemein

Hat man einen Linux Server und will ihn als Fileserver nutzen, gibt es mehrere Möglichkeiten, Samba, AFP oder eben NFS. Da NFS die beste Performance bietet und ohne weiteres in beiden Welten funktioniert, fällt meine Wahl auf das NFS Protokoll.

Mein Ausgangspunkt ist ein Funktionsfähiger Debian Squeeze Fileserver, auf dem bereits ein Samba Server für die Windows Clients läuft. Dieser Samba Share soll nun zusätzlich für die MacOS Clients (alle MacOS Lion) via NFS verfügbar gemacht werden.

!!!Achtung: Mac OS X bzw. dessen Finder nutz ein anderes Verfahren für UTF8, was dafür sorgt das man keinen Zugriff auf Dateien oder Ordner mit Umlauten bekommt, wenn diese nicht unter dem Finder angelegt wurden. Umgekehrt natürlich das selbe Spiel, legt man eine Datei im Finder mit einem Umlaut an, hat man auf der Linux Box keinen Zugriff darauf!

Installationen und Konfigurationen

Linux Server

Installation des NFS Server

aptitude update
aptitude install nfs-kernel-server

Konfiguration der NFS Freigabe

/etc/exports

/srv/samba            192.168.1.0/24(rw,sync,insecure,no_root_squash,crossmnt,no_subtree_check)

Hier wird der Ordner /srv/samba für das gesamte Subnetz 192.168.1.0 freigegeben. Wichtige Option hier ist noch die insecure Option, ohne die der Mac nicht mittels Finder das NFS Share mounten kann.
Um das ganze zu aktivieren einfach den NFS Server neustarten:

/etc/init.d/nfs-kernel-server restart

Mit Avahi NFS Freigabe Publizieren

!!!Achtung Dies funktioniert seit Mac OS 10.4 irgendwie nicht mehr. Falls Avahi nicht installiert ist, einfach via aptitude nach installieren

aptitude install avahi-daemon

Um den AFP Service via Avahi zu veröffentlichen, erstellt man die folgende Datei und füllt sie mit dem nachfolgenden Inhalt:
/etc/avahi/services/nfs.service

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name>DatenFreigabe</name>
  <service>
    <type>_nfs._tcp</type>
    <port>2049</port>
    <txt-record>path=/srv/freigabe</txt-record>
  </service>
</service-group>

Mac Client

Das Mounten der NFS Laufwerke geht im MacOS im Festplatten Dienstprogramm, hier Unter dem Menüpunkt Ablage NFS-Mounts auswählen und das gewünschte Laufwerk hinzufügen.

Dateirechte - UserIDs und GruppenIDs synchronisieren

Hat man nun das NFS Laufwerk gemountet, wird man schnell merken, das es Probleme mit den Dateiberechtigungen gibt. Das liegt meist daran, das die Benutzer und Gruppen und deren IDs nicht die gleichen sind. Diese müssen nun auf allen Systemen synchronisiert werden. Das Hauptproblem liegt meist daran, das MacOS seinen Benutzern IDs ab 500 gibt, also hat meist der erste Benutzer die ID 501. Unter Linux (Ubuntu/Debian) fangen die IDs bei 1000 an, also hat der angelegt Benutzer, wenn nicht direkt beim Erstellen festgelegt die ID 1001. MacOS verwendet die Gruppe "Staff" als Standard Benutzergruppe mit der ID20 welche unter Linux der Gruppe "Dialout" gehört. Nun muss man Ordnung in dieses Chaos bringen.

Konfiguration der UIDs und GIDs

Ich habe mich für einen Benutzer "andreas" mit der UID 1001 und eine Gruppe "laub" mit der GID 1001 entschieden.
Nun musste ich um dies zu erreichen auf meinen Macs diese Einstellungen auf die bereits angelegten und natürlich eingerichteten Benutzer übertragen:

  1. Ändern des kurzen Benutzernamens
  2. Anlegen der Gruppe "laub"
  3. Ändern der UID
  4. Ändern der Dateirechte des User-Home Ordners


Hierfür muss unter "Systemeinstellungen" --> "Benutzer & Gruppen" gegangen und das Schloss Symbol unten, entriegelt werden. Dann einfach mit der rechten Maustaste auf den umzubenennenden Benutzer klicken und "Erweiterte Optionen" auswählen. Hier dann die "Benutzer-ID", die "Gruppe", den "Accountame" und natürlich dementsprechend den "Benutzerordner" ändern und mit "OK" schließen. Die Frage mit dem Benutzerordner verschieben mit muss mit "OK" beantwortet und der Systemneustart ausgewählt werden. Nach dem Neustart wieder in das "Benutzer & Gruppen" Fenster wechseln und auf das kleine "+" klicken und eine Neue Gruppe anlegen (hinter dem "Neu" einfach im Dropdown Menü Gruppe wählen). Klickt man nun die Gruppe mit der Rechten Maustaste an, kommen auch hier die "Erweiterten Optionen" zum Vorschein. Hier kann dann die "Gruppen-ID" angepasst werden. Dann mit einem links Klick auf die angelegte Benutzergruppe noch den Benutzer an haken und das System Neustarten.
Um nun wieder das alte Benutzerprofil zu bekommen müssen ein paar Befehle im Terminal abgesetzt werden:
zuerst prüfen wir ob der alte und neue Benutzerordner existiert:

cd /Users
ls -la

sind beider Ordner da, wird zuerst der des Neuene Benutzernamens gelöscht, da dieser keinen Inhalt hat, dannach wird der alte Benutzerordner umbenannt und ihm die neuen richtigen Rechte gegeben:

sudo rm -rf andreas
mv andreaslaub andreas
sudo mv testuser testuser1
sudo chown -R andreas:laub andreas

Nun nochmals das System neustarten und einloggen. Nun sollten alle Einstellungen und Dateien da sein.

Auf dem Linux Server sind folgende Schritte auszuführen:

  1. Anlegen des Benutzers "andreas" (UID 1001) und der Gruppe "laub" (GID 1001)
  2. setzten der Rechte auf den NFS Share Ordner
groupadd -g 1001 laub
useradd -u 1001 -g laub -m andreas -s /bin/false
chown -R andreas:laub /srv/samba

will man das sich der Benutzer auf einer Shell einloggen darf, sollte man das -s /bin/false weglassen oder -s /bin/bash verwenden um dem User die Bash als Shell zu geben.