jeudi 12 mai 2016

Automonter des partages Samba et NFS sous OSX (et le répertoire spécial /net)

Au lieu de manuellement rajouter des appels à mount_nfs dans son .bash_profile ou autres scripts lancés au démarrage on peut utiliser le système d'automounter autofs supporté par OSX.

Dans /etc/auto_master on va commencer par référencer deux nouveaux fichiers /etc/auto_nfs et /etc/auto_smb qui contiendront nos paramètres de connexion spécifiques au NFS et au Samba. #
# Automounter master map
#
+auto_master # Use directory service
/net -hosts -nobrowse,hidefromfinder,nosuid
/home auto_home -nobrowse,hidefromfinder
/Network/Servers -fstab
/- -static
/- auto_nfs -nosuid
/- auto_smb -nosuid
Ensuite on crée nous mêmes les fichiers /etc/auto_nfs et /etc/auto_smb ainsi que les répertoires de montage: mkdir /Users/myuser/nfs
mkdir /Users/myuser/smb

auto_nfs
/Users/myuser/nfs -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.10/home/linuxuser/nfsshare

auto_smb
/Users/myuser/smb -fstype=smbfs,soft,noowners ://guest:@192.168.1.10/exchange
Au redémarrage on vérifie bien que les partages sont montés: mount

/dev/disk1 on / (hfs, NFS exported, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
map auto_nfs on /Users/myuser/nfs (autofs, nosuid, automounted, nobrowse)
192.168.1.10:/home/linuxuser/nfsshare on /Users/myuser/nfs (nfs, nodev, nosuid, automounted, noowners, nobrowse)
map auto_smb on /Users/myuser/smb (autofs, nosuid, automounted, nobrowse)
//guest:@192.168.1.10/exchange on /Users/myuser/smb (smbfs, nodev, nosuid, automounted, noowners, nobrowse)
Autre solution. Utiliser le répertoire spécial /net/

Si l'on a un serveur nfs sur 192.168.1.10 on peut automatiquement naviguer dedans par /net. ls /net renvoie vide mais si l'on fait /net/192.168.1.10/ on a accès aux répertoires partagés via NFS.

mardi 3 mai 2016

Partage NFS de Linux vers OSX

Avec la configuration présentée dans mon billet précédent si l'on essaie de monter le répertoire NFS Linux sous OSX on pourra lire son contenu mais on aura un "Permission denied" lors de la tentative d'écriture dans le répertoire. Ceci est du à la difference de UID/GID entre l'utilisateur Linux (typiquement 1000/1000) et l'utilisateur OSX (typiquement 501/20)

Pour rendre l'export Linux compatible avec un client OSX il faut utiliser les paramètres suivants dans /etc/exports
/home/linuxuser/nfsshare *(rw,sync,insecure,no_subtree_check,all_squash,anongid=65534,anonuid=65534)
Une fois exports modifié relancer avec:
sudo exportfs -ra L'option all_squash indique au serveur NFS d'exécuter toutes les requêtes distantes en tant qu'utilisateur anonyme. Les options anongid et anonuid spécifient l'identité de l'utilisateur anonyme (nobody,nogroup)

A noter que dans cet exemple j'ai utilisé l'utilisateur anonyme nobody mais on peut très bien "squasher" les connexions vers un autre utilisateur que nobody ( typiquement 1000/1000 ).

lundi 2 mai 2016

Partage NFS de Linux (Ubuntu) à Linux

Sélectionner le répertoire à partager. Par example /home/linuxuser/nfsshare et lui donner les droits en accès de l'utilisateur anonyme (nobody/nogroup)
sudo chown nobody /home/linuxuser/nfsshare
sudo chown nogroup /home/linuxuser/nfsshare
Définir les paramètres d'export dans /etc/exports
/home/linuxuser/nfsshare *(rw,sync,insecure,no_subtree_check)
* pour que toutes les IP aient accès au partage.
Lancer ou relancer le service nfs. Par besoin de relancer le service si l'on fait des modifs ultérieures.
sudo service nfs-kernel-server restart
Exporter le partage:
sudo exportfs -ra
Vérifier la liste des répertoires partagés avec:
showmount -e
A partir de ce moment sous Linux on peut monter le partage comme ceci:
sudo mkdir /mnt/nfslinux
sudo mount 192.168.1.100:/home/linuxuser/nfsshare /mnt/nfslinux
Et le démonter:
sudo umount -f -l /mnt/nfslinux

Partager un répertoire via NFS sous OSX

Par l'interface utilisateur d'OSX on peut partager des fichiers via AFP (avec d'autres Macs) ou par Samba avec des PC Linux ou Windows. NFS est considéré plus stable et moins consommateur en ressources mais doit être configuré en ligne de commande. Ayant eu des problèmes de partage via Samba entre mon Mac et mon Raspberry j'ai décidé de passer au partage via NFS.

Pour ce faire il suffit de créer le fichier /etc/exports et d'y spécifier le répertoire à partager:
sudo nano /etc/exports
/Volumes/DATA/Media -maproot=nobody
Le système va détecter automatiquement cette modification et lancer le service nfsd. Plus tard si l'on modifie à nouveau le fichier exports on peut s'assurer de la prise en compte des nouveaux paramètres par:
sudo kill -1 `cat /var/run/mountd.pid`
sudo nfsd enable
On peut vérifier que l'export se fait sans erreur par:
sudo nfsd checkexports
Et lister les répertoires exportés par: showmount -e A distance sur mon Raspberry je peux également lister les fichiers partagés sur le Mac en faisant: showmount -e 192.168.1.100