Actualmente estoy tratando de hacer que el montaje automático de Apple funcione con osxfuse y sshfs. El resultado debería ser que una carpeta específica se monte automáticamente si se usa.
Lo que he hecho hasta ahora:
/sbin/mount_sshfs -> /usr/local/bin/sshfs
/- 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 recargar automount a través de:sudo automount -cv
Si ahora trato de cd
entrar mnt
me sale 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é probar a continuación?
FWIW, si alguien más se topa con esta vieja pregunta, la mejor guía que he encontrado para montar sshfs usando el montador automático de Apple está aquí:
Esto no requiere deshabilitar la Protección de integridad del sistema, ya que los trabajos cron todavía funcionan 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
Para macOS Mojave y la última versión de osxfuse, este es el archivo daemon 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 de kernel correcto esvfs.generic.osxfuse.tunables.allow_other
Más información en la wiki de osxfuse
Actualización 2016-08-03: descubrí que instalar SSHFS desde https://osxfuse.github.io es más estable que la versión homebrew, debido a alguna dependencia anterior (por lo tanto, esto puede mejorar en el futuro).
ADVERTENCIA: Esta conexión es superrápida cuando funciona, pero a menudo tiene problemas después de que finaliza la conexión, por ejemplo, inalámbrica, en espera.
Supone que tiene instalado Homebrew ( haga su vida más fácil y obtenga esto primero )
brew install sshfs
Verifique esta carpeta para ver los sistemas de archivos instalados: ls /Library/Filesystems
si no ve osxfusefs.fs
, debe instalarlo.
obtener barril
brew tap caskroom/cask
Instalar OSXFUSE
brew cask install osxfuse
Alternativamente, en lugar de homebrew, use las versiones de descarga de https://osxfuse.github.io/
autofs
necesita mount_*
binarios.
/usr/local/bin/sshfs
también debería estar disponible como mount_sshfs
, por lo que:
Enumere su mount_*
s con
compgen -c | grep ^mount
O
ls /sbin | grep mount
Si no ve mount_sshfs, debe realizar este paso. Este es un paso crítico porque se olvida fácilmente y puede causar dolores de cabeza. Como /sbin
está en la partición del sistema, deberá desactivar SIP y volver a montar la partición con el atributo de escritura .
En el modo de recuperación, abra la terminal y apague SIP y reinicie:
csrutil disable
reboot
Una vez reiniciado, vuelva a montar el volumen del sistema:
sudo mount -uw /
Ahora puede crear el enlace simbólico adecuado:
sudo ln -s $(which sshfs) /sbin/mount_sshfs
/Library/LaunchDaemons/
El archivo podría llamarse:
Debe ejecutar esto en cada arranque para la extensión del kernel:
/bin/bash -c "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1"
Así que crea un nuevo archivo de servicio:
/Library/LaunchDaemons/load.osxfusefs.tunables.plist
Contenido:
<?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>
Cargue con launchctl
(launchd) para el próximo arranque, que es la versión Mac OS X de systemctl
(systemd)
launchctl load /Library/LaunchDaemons/load.osxfusefs.tunables.plist
Lo siguiente asume que puede ingresar a su servidor con una clave segura (no se requiere contraseña).
##/etc/auto_master
/mnt/sshfs auto_sshfs -nosuid
##/etc/auto_sshfs Podría usar parámetros que normalmente vienen después de -o
in sshfs -o
dependiendo de su situación.
O
uid=TUUSUARIO, gid=TUGRUPO: simplemente escribe id TUUSUARIO para obtener los números. Esto simplemente asignará todos los archivos del montaje a esta combinación de usuario/grupo. Esto le permitirá leer todos los archivos. Creo que cualquier archivo o carpeta nueva 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 explore el montaje verá el montaje usando las credenciales utilizadas al conectarse.
enumerar todos los parámetros con man sshfs
y leer ver cada parámetro después de cada-o
reemplazar:
Contenido Importante es el parámetro reconnect
, de lo contrario, cada vez que pierda la conexión (como ir a dormir), Finder se bloqueará.
Reemplazar
Desafortunadamente no puedes ejecutar cosas en autofs comoid -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
df -Ph /path/to/mount
Lista de sistemas de archivos montados
lsvfs
Listar todos los montajes
mount
Revisé todas las guías de montaje automático que pude encontrar y completé con éxito los pasos de esta respuesta , pero al final obtuve un Finder colgado y no pude desmontarlo a través de la Terminal.
Por lo tanto, me gustaría mencionar una opción alternativa, menos intrusiva: Acciones de carpeta .
En el pasado, estos no eran confiables, por lo que su millaje puede variar, pero para mí (en Catalina) funcionan de manera confiable hasta ahora (1 día después).
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
~/Library/Scripts/Folder Action Scripts/
cualquier nombre que considere descriptivo.~/mnt
.~/mnt
, vaya a Servicios → Configuración de acciones de carpeta... → Ejecutar servicio y:
Ahora, cada vez que abra la carpeta ~/mnt
, el sshfs
comando intentará montar el volumen remoto en ~/mnt/desired_volume_name
.
airecuadrado
beni
airecuadrado
Saaru Lindestøkke
mount_osxfusefs: mount point /Users/xxx/temp/etc is itself on a OSXFUSE volume
. ¿Hay alguna manera de ejecutar el comando solo si está desmontado?aHo