Synology macOS : monter les dossiers partagés du NAS automatiquement au démarrage

emptiness

Nouveau membre
9 Février 2023
4
1
3
Bonjour,
je n'ai pas trouvé de sujet sur le forum. Je cherche à avoir accès à mes dossiers partagés du NAS (en SMB) au démarrage de mon macbook de manière transparente ( comme un mappage de lecteur réseau sous windows).
J'ai essayer avec les options de configuration user et group/ démarrage mais à chaque démarrage le finder ouvre une fenêtre pas dossier partagé. qu'il faut que je ferme une à une... Il me semble aussi qu'il me demande le mot de passe et id pour se connecter...

Ce que j'aimerais, c'est avoir accès aux lecteurs via le panneau latéral réseau dans le finder, et des alias placés par exemple dans un dossier NAS sur le bureau. C'est possible ?
 
BOnjour,
À une époque je procédais au montage automatique de certains dossiers partagés de mon NAS via un .app fait via l'éditeur de script de macOS. Mais c'était pas super pratique.
Là je ne fais plus de montage automatique, je lance une connexion quand j'en ai besoin.

Sinon, sur le net, la méthode la plus plébiscitée c'est :


Au besoin voilà un exemple de script que j'utilisais pour faire un .app que je mettais ensuite dans les éléments d'ouverture de session :
AppleScript:
display notification "Montage du partage réseau dans 10 s, le temps que le réseau soit opérationnel." with title "Photos sur NAS"
delay 10
display notification "Montage du partage réseau maintenant !" with title "Photos sur NAS"
(* tell application "Finder" to open location "smb://Syno-DS920Plus/Photos" *)
mount volume "smb://Syno-DS920Plus/Photos"
Ensuite tu exportes et tu choisis une application :
1681203359479.png
Et ensuite (avec macOS Ventura) tu ajoutes le .app dans les éléments d'ouverture :
1681203459721.png
Cette partie est la même que celle des tutos internet, dont j'ai mis un lien plus haut.
Attention, avec les macOS précédents, ça se trouve ailleurs.

Pour info, je ne me rappelle plus pourquoi j'ai fait un .app et pas utilisé la technique mentionnée dans le lien...
Essaye les deux, et fait-toi ton avis ^^
 
La solution la plus pérenne est d'utiliser autofsd(8) présent depuis la toute première version publique de Mac OS X en 2001 et encore disponible avec les derniers iOs pardon macOS.

Cela fonctionne parfaitement quelque soit le protocole réseau de partage de points de montage distants.

En pièce-jointe un PDF d'Apple concernant autofsd(8) à l'époque où Mac OS X/Darwin était un excellent système.
 

Pièces jointes

Autofs n'est pas présent sur macOS Ventura, ni de base ni via HomeBrew :
1681215534405.png
 
1681223949245.png
J'ai ceci sur mon macOS Ventura, pas installé via homebrew, donc probablement de base.
Est-ce cette commande ?
Si oui, pas besoin d'installer am-utils
 
Bonjour Emptiness,

D'abord, taper Cmd K, tu entres l'IP locale du serveur. Il montera sur le bureau, ensuite tu glisses l'icône du bureau vers Pref système/Général/ouverture
 
Bonjour Emptiness,

D'abord, taper Cmd K, tu entres l'IP locale du serveur. Il montera sur le bureau, ensuite tu glisses l'icône du bureau vers Pref système/Général/ouverture
C'est ce que le lien que j'ai posté plus haut dit de faire :)
 
Voir la pièce jointe 8758
J'ai ceci sur mon macOS Ventura, pas installé via homebrew, donc probablement de base.
Est-ce cette commande ?

automount(8) étant la commande pour gérer autofsd(8) oui il est présent de base si automount(8) existe.
Tu peux le vérifier avec kextstat(8) (cela affiche les modules chargés par le kernel XNU) :

Bash:
root@<redacted>:~ # kextstat -ab com.apple.filesystems.autofs
Index Refs Address            Size       Wired      Architecture       Name (Version) UUID <Linked Against>
  166    0 0xffffff7f83ee6000 0x9000     0x9000     x86_64             com.apple.filesystems.autofs (3.0) 2D9D6176-5ED5-3E51-969C-6C371CDD09CC <165 8 7 6 5 3 2 1>

Si oui, pas besoin d'installer am-utils

Ouep
Message automatiquement fusionné :

Bonjour Emptiness,

D'abord, taper Cmd K, tu entres l'IP locale du serveur. Il montera sur le bureau, ensuite tu glisses l'icône du bureau vers Pref système/Général/ouverture

Cela peut poser des problèmes de connexion à la session de l'utilisateur car le Finder utilise sa propre méthode de découverte qui de par expérience est franchement mal fichue. Cela a je pense dû à la réécriture du Finder avec Big Sur de mémoire et je le souhaite, changé avec les dernières versions de macOS.

autofsd(8) passant par des nœuds XPC, c'est beaucoup plus robuste et pérenne ;)
 
automount(8) étant la commande pour gérer autofsd(8) oui il est présent de base si automount(8) existe.
Tu peux le vérifier avec kextstat(8) (cela affiche les modules chargés par le kernel XNU) :

Bash:
root@<redacted>:~ # kextstat -ab com.apple.filesystems.autofs
Index Refs Address            Size       Wired      Architecture       Name (Version) UUID <Linked Against>
  166    0 0xffffff7f83ee6000 0x9000     0x9000     x86_64             com.apple.filesystems.autofs (3.0) 2D9D6176-5ED5-3E51-969C-6C371CDD09CC <165 8 7 6 5 3 2 1>



Ouep
Message automatiquement fusionné :



Cela peut poser des problèmes de connexion à la session de l'utilisateur car le Finder utilise sa propre méthode de découverte qui de par expérience est franchement mal fichue. Cela a je pense dû à la réécriture du Finder avec Big Sur de mémoire et je le souhaite, changé avec les dernières versions de macOS.

autofsd(8) passant par des nœuds XPC, c'est beaucoup plus robuste et pérenne ;)
Je vais essayer ça et potentiellement l’appliquer sur l’iMac de ma femme pour le partage des photos et raw qui sont sur le nas.
 
Je vais essayer ça et potentiellement l’appliquer sur l’iMac de ma femme pour le partage des photos et raw qui sont sur le nas.

Passant par autofs sur tout système utilisé, c'est selon moi la meilleure façon d'accéder à des partages réseau sur un Unix car totalement transparent, géré nativement par une extension/module du noyau à contrario des applications graphiques (clients réseau dont le Finder en est aussi), pouvant induire un blocage de l'interface pour X raisons si le partage est lent/indisponible.

Voici la liste des fichiers liés à autofsd(8) :
01.jpg
 
Dernière édition:
Sur Ventura j'ai comme toi :
1681230710409.png

Du coup, quelles sont les commandes pour monter un partage SMB ?
(en résumé ^^ le PDF est un peu trop dense... :D )
 
Du coup, quelles sont les commandes pour monter un partage SMB ?
(en résumé ^^ le PDF est un peu trop dense... :D )

Tout d'abord on choisit le type de montage que l'on souhaite faire : direct ou indirect.

La distinction entre les deux est la suivante :
- lorsqu'il est direct, le partage (exporté du serveur de fichiers) sera ajouté à la hiérarchie existante depuis un chemin d'accès absolu.​
Par exemple /opt/bin qui est le partage "/shared/utilities" du serveur sera ajouté à la hiérarchie /opt à côté des autres répertoires éventuellement contenus dans ce dernier.​
- lorsqu'il est indirect, le partage sera ajouté à une hiérarchie relative (relative au nom donné à l'export sur le client).​
Par exemple l'export nommé "Vidéos" qui se trouve dans "/volumeX/video" sera monté dans le point de montage correspondant à celui défini dans la table de montage créée à l'occasion.​

En résumé on choisit un type direct lorsque l'on veut intégrer un partage à la hiérarchie locale d'après un chemin d'accès fixe (exemple très courant : avoir tous ses utilitaires/scripts shell montés à la demande sur toutes ses machines dans /opt/<user>/bin) et un type indirect là où l'on souhaite nommer localement l'export et le monter dans un point de montage unique (par exemple tous les exports de chaque serveur dans ~/net/<serveur>/...)

Ensuite :
  1. ajuster les options de montage par défaut dans /etc/autofs.conf (qui peuvent par la suite se définir pour chacun des partages dans les tables de montage) pour le protocole souhaité (n'utilisant pas Samba je ne saurais te conseiller donc se référer à la page man de mount_smbfs(8))
  2. définir une ou des tables de montage, leur type (/- pour un montage direct - /point_montage pour un montage indirect (cf. /Nas dans mon /etc/auto_master avec comme table de montage /etc/nas_map)

Pour te donner un ordre d'idée avec des partages NFSv3/4 :

/etc/autofs.conf
Bash:
% cat /etc/autofs.conf
#
# This file is used to configure the automounter
#

# The number of seconds after which an automounted file system will
# be unmounted if it hasn't been referred to within that period of
# time.  The default is 10 minutes (600 seconds).
# This is equivalent to the -t option in automount(8).
AUTOMOUNT_TIMEOUT=3600

# If TRUE, automount(8) will print more detailed
# information about the actions it takes.
# This is equivalent to the -v option to automount(8).
AUTOMOUNT_VERBOSE=TRUE

# If TRUE, automountd(8) will log to syslogd(8) more
# detailed information about the actions it takes.
# This is equivalent to the -v option to automountd(8).
AUTOMOUNTD_VERBOSE=TRUE

# If TRUE, automountd(8) will disable browsing of all maps.
# This is equivalent to the -n option to automountd(8).
#AUTOMOUNTD_NOBROWSE=FALSE

# The trace level for logging information about requests received
# by automountd(8) from autofs, processing done for those requests,
# and replies sent to autofs.  The default level of 0 causes no
# information to be logged; each higher value causes more information
# to be logged.  This controls the same trace level that the -T option
# to automountd(8) controls.
AUTOMOUNTD_TRACE=1

# Mount options.
# A string containing a comma-separated list of mount options
# that will be applied, by default, to all mounts done by automountd(8).
# The options for a particular mount can override these options.
# This controls the same default mount options that the -o option to
# automountd(8) controls.
AUTOMOUNTD_MNTOPTS=nosuid,nodev

# Force nosuid
# If TRUE automountd will force all mounts to be "nosuid".
# The default will be "nosuid" and any "suid" mount option
# will be ignored.
AUTOMOUNTD_NOSUID=TRUE

# Environment variables.  The format is AUTOMOUNTD_ENV=ENV=value.
# There should be one line per environment variable to be set and
# there can be as many of these lines as are required.
#AUTOMOUNTD_ENV=

/etc/auto_master
Bash:
% cat /etc/auto_master
#
# Automounter master map
#
+auto_master            # Use directory service
/net                    -hosts          -browse,nosuid
/home                   auto_home       -nobrowse,hidefromfinder
/Network/Servers        -fstab
/-                      -static
/Nas                    nas_map         -browse

/etc/nas_map
Bash:
% cat /etc/nas_map
# Nom local       Options de montage du protocole (ici NFS)                    Partages exportés du/des serveur(s)
Musique           -fstype=nfs,noresvport,noatime,rw,proto=tcp,soft,intr,nfc    <fqdn_ou_ip_du_serveur>:/volume1/music
Photos            -fstype=nfs,noresvport,noatime,rw,proto=tcp,soft,intr,nfc    <fqdn_ou_ip_du_serveur>:/volume1/photo
Vidéos            -fstype=nfs,noresvport,noatime,rw,proto=tcp,soft,intr,nfc    <fqdn_ou_ip_du_serveur>:/volume1/video

Une fois définies les options par défaut dans /etc/autofs.conf, les tables de montages dans /etc/auto_master et les tables de montages créées, on recharge automount(8) avec sudo automount -vc

Maintenant dès qu'un processus souhaite accéder à une ressource située sur un export (/Nas/Vidéos par exemple), ça se monte automagiquement ;)
 
Dernière édition:
La distinction entre les deux est la suivante :
- lorsqu'il est direct, le partage (exporté du serveur de fichiers) sera ajouté à la hiérarchie existante depuis un chemin d'accès absolu.Par exemple /opt/bin qui est le partage "/shared/utilities" du serveur sera ajouté à la hiérarchie /opt à côté des autres répertoires éventuellement contenus dans ce dernier.- lorsqu'il est indirect, le partage sera ajouté à une hiérarchie relative (relative au nom donné à l'export sur le client).Par exemple l'export nommé "Vidéos" qui se trouve dans "/volumeX/video" sera monté dans le point de montage correspondant à celui défini dans la table de montage créée à l'occasion.
En résumé on choisit un type direct lorsque l'on veut intégrer un partage à la hiérarchie locale d'après un chemin d'accès fixe (exemple très courant : avoir tous ses utilitaires/scripts shell montés à la demande sur toutes ses machines dans /opt/<user>/bin) et un type indirect là où l'on souhaite nommer localement l'export et le monter dans un point de montage unique (par exemple tous les exports de chaque serveur dans ~/net/<serveur>/...)
Tu m'as un peu perdu là XD
Je n'ai pas ce vocabulaire dans mon répertoire...
Mon idée serait d'avoir les montages dans /Volumes/Photos-NAS à la manière que fait la commande mount volume "smb://Syno-DS920Plus/Photos" dans /Volumes/.
Peut-être serait-il plus judicieux de monter dans /Volumes/Synology/Photos-NAS ?

Tu penses que ça n'est pas judicieux de vouloir monter dans /Volumes/ ?
 
Tu m'as un peu perdu là XD
Je n'ai pas ce vocabulaire dans mon répertoire...

;)
autofsd(8) étant un utilitaire Unix qui remonte bien avant Mac OS X, il a son propre vocable.

Mon idée serait d'avoir les montages dans /Volumes/Photos-NAS à la manière que fait la commande mount volume "smb://Syno-DS920Plus/Photos" dans /Volumes/.
Peut-être serait-il plus judicieux de monter dans /Volumes/Synology/Photos-NAS ?

Tu penses que ça n'est pas judicieux de vouloir monter dans /Volumes/ ?

De mon point de vue non car /Volumes a été le point de montage par défaut choisi par Apple pour IOKit et diskarbitrationd(8) (qui sont responsables de tout périphérique local et distant géré par le Finder et application graphique).

autofsd(8) et diskarbitrationd(8) étant similaires (ce sont des automonteurs mais basique et à la sauce Apple pour le second), leur demander de gérer un même point de montage peut faire un joli nœud partout (système et cerveau 😅)
 
Merci pour ces précisions.

Voilà le contenu du autofs.conf :
Bash:
#
# This file is used to configure the automounter
#

# The number of seconds after which an automounted file system will
# be unmounted if it hasn't been referred to within that period of
# time.  The default is 10 minutes (600 seconds).
# This is equivalent to the -t option in automount(8).
AUTOMOUNT_TIMEOUT=3600

# If TRUE, automount(8) will print more detailed
# information about the actions it takes.
# This is equivalent to the -v option to automount(8).
AUTOMOUNT_VERBOSE=TRUE

# If TRUE, automountd(8) will log to syslogd(8) more
# detailed information about the actions it takes.
# This is equivalent to the -v option to automountd(8).
AUTOMOUNTD_VERBOSE=TRUE

# If TRUE, automountd(8) will disable browsing of all maps.
# This is equivalent to the -n option to automountd(8).
#AUTOMOUNTD_NOBROWSE=FALSE

# The trace level for logging information about requests received
# by automountd(8) from autofs, processing done for those requests,
# and replies sent to autofs.  The default level of 0 causes no
# information to be logged; each higher value causes more information
# to be logged.  This controls the same trace level that the -T option
# to automountd(8) controls.
AUTOMOUNTD_TRACE=1

# Mount options.
# A string containing a comma-separated list of mount options
# that will be applied, by default, to all mounts done by automountd(8).
# The options for a particular mount can override these options.
# This controls the same default mount options that the -o option to
# automountd(8) controls.
AUTOMOUNTD_MNTOPTS=nosuid,nodev

# Force nosuid
# If TRUE automountd will force all mounts to be "nosuid".
# The default will be "nosuid" and any "suid" mount option
# will be ignored.
AUTOMOUNTD_NOSUID=TRUE

# Environment variables.  The format is AUTOMOUNTD_ENV=ENV=value.
# There should be one line per environment variable to be set and
# there can be as many of these lines as are required.
#AUTOMOUNTD_ENV=

et le auto_master :
Bash:
#
# Automounter master map
#
+auto_master        # Use directory service
#/net            -hosts        -nobrowse,hidefromfinder,nosuid
/home            auto_home    -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-            -static


Je remarque des différences sur certaines variables, mais là ça va ajouter du blabla ^^ (=verbose), je verrais si je passe à FALSE par la suite.
Mais dans le auto_master, j'ai la ligne suivante de commentée pas chez toi : #/net -hosts -nobrowse,hidefromfinder,nosuid
Faut-il que je la décommente ? Ça apporte quoi ? et ce qui suit -hosts n'est pas identique : -browse,nosuid
Tu pourrais m'expliquer les différences et ce que font les paramètres ? (je suppose que browse permet de naviguer dans les dossiers, et nobrowse non ;) et hidefromfinder masque le dossier dans le finder. Mais le reste ?

Je vais appliquer ta méthode pour deux NAS différents.
Bash:
/Nas-Syno               syno_map        -browse
/Nas-Asustor            asustor_map     -browse
Faut-il créer les dossiers dans la racine / ?

Merci pour ton aide 😇
 
@cooper Heu, petite question : comment on fait quand le dossier distant a des espaces dans son nom ? comme celui-là : Photos - Originaux Pentax-Sony

edit : autre question : est-il possible de monter en SMB plutôt qu'en NFS ? Car c'est un peu pénible de devoir configurer les permissions pour chaque dossier séparément...
 
Dernière édition:
et le auto_master :
Bash:
Bash:
#
# Automounter master map
#
+auto_master # Use directory service
#/net -hosts -nobrowse,hidefromfinder,nosuid
/home auto_home -nobrowse,hidefromfinder
/Network/Servers -fstab
/- -static

Je remarque des différences sur certaines variables, mais là ça va ajouter du blabla ^^ (=verbose), je verrais si je passe à FALSE par la suite.
Mais dans le auto_master, j'ai la ligne suivante de commentée pas chez toi : #/net -hosts -nobrowse,hidefromfinder,nosuid

De la première version publique de Mac OS X à Catalina, le contenu par défaut de /etc/auto_master est le suivant (comme l'indique la page man de auto_master(5)) :
Bash:
#
# Automounter master map
#
+auto_master            # Use directory service
/net                    -hosts          -nobrowse,hidefromfinder,nosuid
/home                   auto_home       -nobrowse,hidefromfinder
/Network/Servers        -fstab
/-                      -static

Faut-il que je la décommente ?

Cette table de montage de type direct sert à monter automatiquement tout serveur de fichiers exportant des partages dans /net/server/...

Elle est très pratique et je m'en sers pour m'éviter à devoir créer une table de montage pour tous les partages dont je ne me sers qu'occasionnellement. Son fonctionnement, sur Mac OS X, se base sur les hôtes définis dans /etc/hosts ET OpenDirectory (qui est du LDAPv3 à la sauce Apple).

Donc ne pas utiliser si l'on a que quelques exports à monter sur des clients car sensiblement plus long que les tables de montage de type indirect.

Ça apporte quoi ? et ce qui suit -hosts n'est pas identique : -browse,nosuid
Tu pourrais m'expliquer les différences et ce que font les paramètres ? (je suppose que browse permet de naviguer dans les dossiers, et nobrowse non ;) et hidefromfinder masque le dossier dans le finder. Mais le reste ?

Les options suivantes sont :
  • -(no)browse : elle permet de ne pas afficher toute la hiérarchie de l'export si celui-ci contient vraiment beaucoup d'éléments (cette option est différente de celle de la commande mount(8) et ses alias comme mount_nfs, mount_smbfs(8), mount_afp(8), etc. car dans cette dernière elle masque l'export dans le Finder et les applications graphiques);

  • -hidefromfinder : elle sert comme tu l'as deviné à masquer non pas l'export mais le point de montage dans le Finder et les applications graphiques;

  • -nosuid : cela permet d'éviter à ce que les montages soit SUID/SGID qui représente un trou potentiel de sécurité si l'on n'évolue pas dans un réseau que l'on contrôle totalement.

Faut-il créer les dossiers dans la racine / ?

Oui car ce sont des table de montage de type indirect. (y)

Merci pour ton aide 😇

Je t'en prie (y)
 
@cooper Heu, petite question : comment on fait quand le dossier distant a des espaces dans son nom ? comme celui-là : Photos - Originaux Pentax-Sony

On échappe l'espace avec l'une ou l'autre solution :
  • 1) un anti-slash : Photos\ -\ Originaux\ Pentax-Sony
  • 2) avec des guillemets doubles : "Photos - Originaux Pentax-Sony"

Sur NFS le tiret peut poser problème suivant l'implémentation (notamment des distributions Linux où nfsd peut être "userspace" ou "kernelspace"). On peut l'échapper avec :
  • le code du caractère pour le signet : (-) : Photos\ \055\ Originaux\ Pentax\055Sony"

Voir si Samba requiert un échappement de caractères spéciaux.

edit : autre question : est-il possible de monter en SMB plutôt qu'en NFS ? Car c'est un peu pénible de devoir configurer les permissions pour chaque dossier séparément...

Oui. autofsd(8) prend en charge n'importe quel protocole (NFS, AFP, SMB, FTP, WebDAV, etc.) :cool:
 
@cooper Merci pour les réponses :)
Cette table de montage de type direct sert à monter automatiquement tout serveur de fichiers exportant des partages dans /net/server/...

Elle est très pratique et je m'en sers pour m'éviter à devoir créer une table de montage pour tous les partages dont je ne me sers qu'occasionnellement. Son fonctionnement, sur Mac OS X, se base sur les hôtes définis dans /etc/hosts ET OpenDirectory (qui est du LDAPv3 à la sauce Apple).

Donc ne pas utiliser si l'on a que quelques exports à monter sur des clients car sensiblement plus long que les tables de montage de type indirect.
Hmm, je n'ai pas tout compris 😅
J'en conclu que je n'ai pas besoin du montage /net. Je ne sais d'ailleurs même pas ce qui peut être monté dedans... Mon réseau étant un simple LAN standard ^^

Oui. autofsd(8) prend en charge n'importe quel protocole (NFS, AFP, SMB, FTP, WebDAV, etc.) :cool:
Du coup, faut modifier les options et point de montage comment ?
Code:
Photos           -fstype=nfs,noresvport,noatime,rw,proto=tcp,soft,intr,nfc    192.168.2.201:/volume1/photo