12 votes

Comment faire fonctionner automount et sshfs (osxfuse) avec yosemite ?

J'essaie actuellement de faire fonctionner l'automount d'Apple avec osxfuse et sshfs. Le résultat devrait être qu'un dossier spécifié est automatiquement monté s'il est utilisé.

Ce que j'ai fait jusqu'à présent :

  • installé osxfuse et sshfs à partir des paquets officiels (les versions sont osxfuse : 2.7.3 / sshfs 2.5.0)

  • a créé un lien symbolique /sbin/mount_sshfs -> /usr/local/bin/sshfs

  • a ajouté la ligne de configuration suivante au fichier /etc/auto_master : /- auto_ssh -nosuid

  • créé le fichier de configuration /etc/auto_ssh :

    /mnt -fstype=sshfs,sshfs_debug,allow_other,idmap=user,follow_symlinks,max_read=65536,rw,nodev,cache=no,IdentityFile=/Users/myUsername/.ssh/sshfs remoteUser@remoteHost:/path/to/folder
  • après reload automount via : sudo automount -cv

Si j'essaie maintenant de cd en mnt Je reçois l'erreur suivante :

bash: cd: /mnt: Operation not permitted

La console contient les éléments suivants :

04/12/14 01:27:50,418 automountd[1965]: MOUNT  REQUEST: name=/mnt [] map=auto_ssh opts=nosuid path=/mnt direct=1
04/12/14 01:27:50,631 KernelEventAgent[69]: tid 54485244 received event(s) VQ_DEAD (32)
04/12/14 01:27:50,632 automountd[1965]: MOUNT  REPLY  : status=1, AUTOFS_DONE
04/12/14 01:27:50,632 automountd[1965]: mount of /mnt failed: Operation not permitted

Quelqu'un a-t-il une idée de la façon de faire fonctionner ce système, ou de ce qu'il faut essayer ensuite ?

3voto

Chris Warth Points 131

Pour info, si quelqu'un d'autre tombe sur cette vieille question, le meilleur guide que j'ai trouvé pour monter des sshfs en utilisant l'automonteur d'Apple se trouve ici

http://virtuallyhyper.com/2013/07/mount-various-file-system-with-autofs-on-mac-os-x-mountain-lion/#mount-sshfs-with-autofs

3voto

Benni Points 31

Il n'est pas nécessaire de désactiver la protection de l'intégrité du système, car les tâches cron fonctionnent toujours dans el captain :

$ crontab -e

*/5 * * * *  /usr/local/bin/sshfs 192.168.1.2:/etc /Users/xxx/temp/etc -o uid=$(id -u) -o gid=$(id -g) -o reconnect

3voto

Carlos D. Álvaro Points 141

Pour MacOS Mojave et la dernière version de osxfuse, il s'agit du fichier démon correct :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

load_osxfuse est maintenant situé à /Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse et le paramètre correct du noyau est vfs.generic.osxfuse.tunables.allow_other

Plus d'informations sur wiki osxfuse

2voto

Jonathan Komar Points 745

Mise à jour 2016-08-03 : J'ai constaté que l'installation de SSHFS à partir de https://osxfuse.github.io est plus stable que la version homebrew, à cause de quelques anciennes dépendances (donc cela peut s'améliorer dans le futur).

AVERTISSEMENT : Cette connexion est super rapide lorsqu'elle fonctionne, mais présente souvent des problèmes après la fin de la connexion en raison, par exemple, du sans fil, de la mise en veille.


On suppose que vous avez Homebrew installé ( facilitez-vous la vie et obtenez ce premier )

Installation de SSHFS

brew install sshfs

Vérifiez ce dossier pour voir les systèmes de fichiers installés : ls /Library/Filesystems Si vous ne voyez pas osxfusefs.fs vous devez l'installer.

Obtenir le Cask

brew tap caskroom/cask

Installer OSXFUSE

brew cask install osxfuse

Alternativement, au lieu de homebrew, utilisez les versions téléchargées à partir de https://osxfuse.github.io/

SSHFS + OSXFUSE maintenant installés. Encore une étape...

autofs besoins mount_* binaires.

/usr/local/bin/sshfs devrait également être disponible en tant que mount_sshfs donc :

Dressez la liste de vos mount_* s avec

compgen -c | grep ^mount

OU

ls /sbin | grep mount 

Si vous ne voyez pas mount_sshfs, vous devez effectuer cette étape. Il s'agit d'une étape cruciale car elle est facilement oubliée et peut créer des maux de tête. Comme /sbin se trouve sur la partition système, vous devrez désactiver le SIP et remonter la partition avec l'attribut inscriptible .

En mode de récupération, ouvrez le terminal, désactivez SIP et redémarrez :

csrutil disable
reboot

Une fois redémarré, remontez le volume système :

sudo mount -uw /

Maintenant vous pouvez créer le lien symbolique approprié :

sudo ln -s $(which sshfs) /sbin/mount_sshfs

Ajouter Autostart at Boot Daemon dans la rubrique /Library/LaunchDaemons/

Le dossier pourrait être appelé :

Vous devez l'exécuter à chaque démarrage pour l'extension du noyau :

/bin/bash -c "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1"

Créez donc un nouveau fichier de service :

/Library/LaunchDaemons/load.osxfusefs.tunables.plist

Contenu :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Chargement avec launchctl (launchd) pour le prochain démarrage, qui est la version Mac OS X de systemctl (systemd)

launchctl load /Library/LaunchDaemons/load.osxfusefs.tunables.plist

Configurer auto_master et auto_sshfs

Ce qui suit suppose que vous pouvez vous connecter à votre serveur avec une clé sécurisée (pas de mot de passe requis).

/etc/auto_master

/mnt/sshfs                auto_sshfs       -nosuid

/etc/auto_sshfs Vous pouvez utiliser les paramètres qui viennent normalement après le -o sur sshfs -o en fonction de votre situation.

  • idmap=user : paramètre par défaut. Comme vos uid et gid sont probablement différents d'un système d'exploitation à l'autre, vous pouvez simplement faire correspondre l'utilisateur utilisé dans le user@ip : à votre utilisateur local (client). Le groupe sera ignoré dans ce cas (ce qui signifie que les dossiers dont vous n'êtes pas propriétaire mais qui vous accordent des droits de lecture sur le groupe côté serveur peuvent ne pas être lisibles localement - côté client).

OU

  • uid=YOURUSERID, gid=YOURGROUPID : tapez simplement id YOURUSERID pour obtenir les chiffres. Cela va juste affecter tous les fichiers du montage à cette combinaison utilisateur/groupe. Cela vous permettra de lire tous les fichiers. Je pense que tous les nouveaux fichiers/dossiers que vous créez hériteront des paramètres umask par défaut pour le dossier que vous montez.

  • allow-other : Je l'utilise, mais c'est risqué car tout utilisateur qui navigue sur le montage verra le montage en utilisant les informations d'identification utilisées lors de la connexion.

  • liste tous les paramètres avec man sshfs et lire voir chaque paramètre après chaque -o

remplacer :

  • YOURUSER avec votre nom d'utilisateur et
  • PRIVATEKEY à votre clé, par exemple id_ed25519
  • ip avec votre adresse IP ou votre nom d'hôte

Contenu Le paramètre important est le suivant reconnect sinon, dès que vous perdrez la connexion (par exemple en vous endormant), le Finder se plantera.

Remplacer

  • $(id -u) avec votre identifiant réel sur la machine cliente
  • $(id -g) avec votre id de groupe réel sur la machine cliente

Malheureusement, vous ne pouvez pas exécuter des choses dans autofs comme id -u

NameOfMountThatGetsIgnored -fstype=sshfs,port=22,reconnect,uid=$(id -u),gid=$(id -g),follow_symlinks,allow_other,IdentityFile=/Users/YOURUSER/.ssh/PRIVATEKEY,volname="NameOfMount"     YOURUSER@ip:/path/on/server

Test

df -Ph /path/to/mount

Liste des systèmes de fichiers montés

lsvfs

Lister toutes les montures

mount

0voto

Saaru Lindestøkke Points 5124

J'ai parcouru tous les guides d'automontage que j'ai pu trouver et j'ai suivi avec succès les étapes du guide de l'automontage. cette réponse mais à la fin j'ai eu un Finder suspendu et je n'ai pas pu démonter via le Terminal.

Je voudrais donc mentionner une autre option, moins intrusive : Actions des dossiers .

Dans le passé, ils n'étaient pas fiables, donc votre kilométrage peut varier, mais pour moi (sur Catalina) ils fonctionnent de manière fiable jusqu'à présent (1 jour).

  1. Ouvrez l'éditeur de script.

  2. Créez un script avec le contenu suivant :

    on opening folder this_folder do shell script "/usr/local/bin/sshfs user@ipaddress:remote_path ~/mnt/volume_name -o volname=desired_volume_name" end opening folder

  3. Compilez ce script dans l'éditeur de script (en utilisant l'icône).

  4. Enregistrez ce fichier dans ~/Library/Scripts/Folder Action Scripts/ sous un nom qui vous semble descriptif.

  5. Allez dans le dossier parent qui contiendra le volume monté. Dans l'exemple ci-dessus, c'est ~/mnt .

  6. Cliquez à droite sur ~/mnt Allez sur Services Configuration des actions du dossier... Service d'exécution et :

    • Activer les actions sur les dossiers
    • Cliquez sur le signe dans le panneau de droite et ajoutez le script de l'étape 4

Maintenant, chaque fois que vous ouvrez le dossier ~/mnt le sshfs va essayer de monter le volume distant sous ~/mnt/desired_volume_name .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X