Cómo conseguir que automount y sshfs (osxfuse) trabajen con yosemite

5

Actualmente estoy intentando que el montaje automático de Apple funcione con osxfuse y sshfs. El resultado debería ser que una carpeta específica se monta automáticamente si se usa.

Lo que he hecho hasta ahora:

  • instaló osxfuse y sshfs de los paquetes oficiales (las versiones son osxfuse: 2.7.3 / sshfs 2.5.0)
  • creó un enlace simbólico /sbin/mount_sshfs -> /usr/local/bin/sshfs
  • adjuntó la siguiente línea de configuración a / etc / auto_master: /- auto_ssh -nosuid
  • creó el archivo de configuración / 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
    
  • luego vuelva a cargar el montaje automático a través de: sudo automount -cv

Si ahora trato de cd en mnt , obtengo el siguiente error:

bash: cd: /mnt: Operation not permitted

La consola contiene lo siguiente:

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

¿Alguien tiene alguna idea de cómo hacer que esto funcione o qué intentar a continuación?

    
pregunta ukLab 04.12.2014 - 01:35

4 respuestas

2

FWIW, si alguien más se encuentra con esta vieja pregunta, la mejor guía que he encontrado para montar sshfs utilizando el montador automático de Apple está aquí -

enlace

    
respondido por el Chris Warth 11.09.2015 - 23:24
1

Actualización 2016-08-03: encontré que la instalación de SSHFS desde enlace es más estable que la versión de homebrew, debido a alguna dependencia antigua ( por lo tanto, esto puede mejorar en el futuro).

CAVEAT: esta conexión es súper rápida cuando funciona, pero a menudo tiene problemas después de que las conexiones terminadas se deban, por ejemplo. inalámbrico, en espera.

Supone que tienes Homebrew instalado ( simplifica tu vida y obtén esto primero )

Instalación de SSHFS

brew install sshfs

Marque esta carpeta para ver los sistemas de archivos instalados: ls /Library/Filesystems Si no ve osxfusefs.fs , necesita instalarlo.

Obtener Cask

brew tap caskroom/cask

Instala OSXFUSE

brew cask install osxfuse

Alternativamente, en lugar de homebrew, use las versiones de descarga de enlace

SSHFS + OSXFUSE ahora instalado. Un paso más ...

autofs necesita mount_* binarios.

/usr/local/bin/sshfs también debería estar disponible como mount_sshfs , así que:

Liste su mount_* s con

compgen -c | grep ^mount

O

ls /sbin | grep mount 

Si no ve mount_sshfs, deberá realizar este paso. Este es un paso crítico porque se olvida fácilmente y puede crear dolores de cabeza.

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

Agregar inicio automático en el demonio de arranque en /Library/LaunchDaemons/

El archivo podría llamarse:

Debe ejecutar esto en cada arranque para la extensión del kernel:

/bin/bash -c "/Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs; /usr/sbin/sysctl -w osxfuse.tunables.allow_other=1"

Así que crea un nuevo archivo de servicio:

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

Contenidos:

<?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/osxfusefs.fs/Support/load_osxfusefs; /usr/sbin/sysctl -w osxfuse.tunables.allow_other=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Cargue con launchctl (launchd) para el próximo inicio, que es la versión de Mac OS X de systemctl (systemd)

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

Configurar auto_master y auto_sshfs

Lo siguiente asume que puedes ingresar a tu servidor con una clave segura (no se requiere contraseña).

/ etc / auto_master

/mnt/sshfs                auto_sshfs       -nosuid

/ etc / auto_sshfs

Puede usar parámetros que normalmente vienen después de -o en sshfs -o dependiendo de su situación.

  • idmap = usuario: configuración predeterminada. dado que su uid y gid es probablemente diferente en los sistemas operativos, puede asignar el usuario utilizado en el usuario @ ip: a su usuario local (cliente). El grupo se ignorará en este caso (lo que significa que las carpetas que aún no le pertenecen le otorgan permisos de lectura en el grupo del lado del servidor pueden no ser legibles localmente - en el lado del cliente)

O

  • uid = YOURUSERID, gid = YOURGROUPID: simplemente escribe id YOURUSER para obtener los números. Esto solo asignará todos los archivos del montaje a esta combinación de usuario / grupo. Esto te permitirá leer todos los archivos. Creo que cualquier nuevo archivo / carpeta que cree heredará la configuración predeterminada de umask para cualquier carpeta que monte.

  • allow-other: uso esto, pero es arriesgado porque cualquier usuario que navegue por el montaje verá el montaje con las credenciales utilizadas al conectarse.

  • listar todos los parámetros con man sshfs y leer ver cada parámetro después de cada -o

reemplazar:

  • SU USUARIO con su nombre de usuario y
  • PRIVATEKEY a su clave, por ejemplo. id_ed25519
  • ip con su dirección IP o nombre de host

contenidos Importante es el parámetro reconnect , de lo contrario, cuando pierdas la conexión (como ir a dormir), el Finder se bloqueará.

Reemplazar

  • $ (id -u) con su ID real en la máquina cliente
  • $ (id -g) con su ID de grupo real en la máquina cliente

Desafortunadamente, no puedes ejecutar cosas en autofs como 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

Prueba

df -Ph /path/to/mount

Lista de sistemas de archivos montados

lsvfs

Listar todos los montajes

mount
    
respondido por el Jonathan Komar 06.07.2016 - 23:00
1

Esto no requiere deshabilitar la protección de integridad del sistema, ya que los trabajos cron todavía están funcionando en el capitán:

$ 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
    
respondido por el Benni 25.10.2018 - 17:36
0

Para macOS Mojave y la última versión de osxfuse, este es el archivo demonio correcto:

<?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 ahora se encuentra en /Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse y el parámetro correcto del kernel es vfs.generic.osxfuse.tunables.allow_other

Más información en wiki de osxfuse

    
respondido por el cdalvaro 09.11.2018 - 10:37

Lea otras preguntas en las etiquetas