MacOS NFS Client to Linux NFS Server
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:
- Ändern des kurzen Benutzernamens
- Anlegen der Gruppe "laub"
- Ändern der UID
- Ä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:
- Anlegen des Benutzers "andreas" (UID 1001) und der Gruppe "laub" (GID 1001)
- 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.