Ich versuche derzeit, Apples Automount mit osxfuse und sshfs zum Laufen zu bringen. Das Ergebnis sollte sein, dass ein bestimmter Ordner automatisch gemountet wird, wenn er verwendet wird.
Was ich bisher gemacht habe:
/sbin/mount_sshfs -> /usr/local/bin/sshfs
/- auto_ssh -nosuid
erstellte die Konfigurationsdatei /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
danach automount neu laden über :sudo automount -cv
Wenn ich das jetzt versuche cd
bekomme mnt
ich folgende Fehlermeldung:
bash: cd: /mnt: Operation not permitted
Die Konsole enthält Folgendes:
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
Hat jemand eine Idee, wie man das hinbekommt oder was man als nächstes versuchen könnte?
FWIW, falls noch jemand über diese alte Frage stolpert, die beste Anleitung, die ich zum Mounten von sshfs mit Apples Automounter gefunden habe, ist hier -
Dies erfordert kein Deaktivieren des Systemintegritätsschutzes, da Cron-Jobs immer noch in El Captain funktionieren:
$ 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
Für macOS Mojave und die neueste Version von osxfuse ist dies die richtige Daemon-Datei:
<?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
befindet sich nun unter /Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse
und der richtige Kernel-Parameter istvfs.generic.osxfuse.tunables.allow_other
Weitere Informationen im osxfuse-Wiki
Update 03.08.2016: Ich habe festgestellt, dass die Installation von SSHFS von https://osxfuse.github.io aufgrund einiger alter Abhängigkeiten stabiler ist als die Homebrew-Version (daher kann sich dies in Zukunft verbessern).
VORBEHALT: Diese Verbindung ist superschnell, wenn sie funktioniert, hat aber oft Probleme nach Verbindungsabbruch aufgrund von z. B. WLAN, Standby.
Angenommen, Sie haben Homebrew installiert ( erleichtern Sie sich das Leben und holen Sie sich dies zuerst )
brew install sshfs
Überprüfen Sie diesen Ordner, um installierte Dateisysteme anzuzeigen: ls /Library/Filesystems
Wenn Sie nicht sehen osxfusefs.fs
, müssen Sie es installieren.
Fass bekommen
brew tap caskroom/cask
Installieren Sie OSXFUSE
brew cask install osxfuse
Alternativ statt Homebrew die Download-Versionen von https://osxfuse.github.io/ verwenden
autofs
braucht mount_*
Binärdateien.
/usr/local/bin/sshfs
sollte auch als verfügbar sein mount_sshfs
, also:
Listen Sie Ihre mount_*
s mit auf
compgen -c | grep ^mount
ODER
ls /sbin | grep mount
Wenn Sie mount_sshfs nicht sehen, müssen Sie diesen Schritt ausführen. Dies ist ein kritischer Schritt, da er leicht vergessen wird und Kopfschmerzen verursachen kann. Wie /sbin
auf der Systempartition müssen Sie SIP deaktivieren und die Partition mit dem beschreibbaren Attribut neu einhängen .
Öffnen Sie im Wiederherstellungsmodus das Terminal, schalten Sie SIP aus und starten Sie neu:
csrutil disable
reboot
Stellen Sie nach dem Neustart das Systemvolume erneut bereit:
sudo mount -uw /
Jetzt können Sie den richtigen Symlink erstellen:
sudo ln -s $(which sshfs) /sbin/mount_sshfs
/Library/LaunchDaemons/
Datei könnte aufgerufen werden:
Sie müssen dies bei jedem Start für die Kernel-Erweiterung ausführen:
/bin/bash -c "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1"
Erstellen Sie also eine neue Servicedatei:
/Library/LaunchDaemons/load.osxfusefs.tunables.plist
Inhalt:
<?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>
Laden Sie mit launchctl
(launchd) für den nächsten Start, was die Mac OS X-Version von systemctl
(systemd) ist
launchctl load /Library/LaunchDaemons/load.osxfusefs.tunables.plist
Im Folgenden wird davon ausgegangen, dass Sie mit einem sicheren Schlüssel (kein Kennwort erforderlich) auf Ihren Server zugreifen können.
##/etc/auto_master
/mnt/sshfs auto_sshfs -nosuid
##/etc/auto_sshfs Abhängig von Ihrer Situation können Sie Parameter verwenden, die normalerweise nach dem -o
in kommen .sshfs -o
ODER
uid=YOURUSERID, gid=YOURGROUPID: Geben Sie einfach id YOURUSER ein, um die Nummern zu erhalten. Dadurch werden einfach alle Dateien vom Mount dieser Benutzer/Gruppen-Kombination zugeordnet. Dadurch können Sie alle Dateien lesen. Ich denke, dass alle neuen Dateien/Ordner, die Sie erstellen, die Standard-Umask-Einstellungen für den Ordner erben, den Sie einhängen.
allow-other: Ich verwende dies, aber es ist riskant, da jeder Benutzer, der den Mount durchsucht, den Mount mit den Anmeldeinformationen anzeigt, die beim Herstellen der Verbindung verwendet werden.
listet alle Parameter mit auf man sshfs
und lest jeden Parameter nach jedem-o
ersetzen:
Inhalt Wichtig ist der Parameter reconnect
, sonst stürzt der Finder ab, wenn Sie die Verbindung verlieren (z. B. schlafen gehen).
Ersetzen
Leider können Sie in Autofs keine Dinge wie ausführenid -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
Eingehängte Dateisysteme auflisten
lsvfs
Alle Reittiere auflisten
mount
Ich habe alle Automount-Anleitungen durchgesehen, die ich finden konnte, und die Schritte aus dieser Antwort erfolgreich abgeschlossen, aber am Ende habe ich einen hängenden Finder bekommen und konnte nicht über das Terminal aushängen.
Daher möchte ich eine alternative, weniger aufdringliche Option erwähnen: Folder Actions .
In der Vergangenheit waren diese unzuverlässig, daher kann Ihre Laufleistung variieren, aber für mich (auf Catalina) funktionieren sie bisher zuverlässig (1 Tag später).
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/
unter einem beliebigen Namen, der Ihrer Meinung nach aussagekräftig ist.~/mnt
.~/mnt
, gehen Sie zu Dienste → Einrichtung von Ordneraktionen … → Dienst ausführen und:
~/mnt
Jetzt versucht der Befehl jedes Mal, wenn Sie den Ordner öffnen , sshfs
das Remote-Volume unter einzuhängen ~/mnt/desired_volume_name
.
Luftquadrat
Benni
Luftquadrat
Saaru Lindestøkke
mount_osxfusefs: mount point /Users/xxx/temp/etc is itself on a OSXFUSE volume
. Gibt es eine Möglichkeit, den Befehl nur auszuführen, wenn er nicht gemountet ist?toHo