Come ottenere automount e sshfs (osxfuse) lavorando con yosemite

5

Attualmente sto cercando di ottenere il funzionamento automatico di Apple lavorando con osxfuse e sshfs. Il risultato dovrebbe essere che una cartella specificata viene montata automaticamente se usata.

Cosa ho fatto finora:

  • installato osxfuse e sshfs dai pacchetti ufficiali (le versioni sono osxfuse: 2.7.3 / sshfs 2.5.0)
  • creato un link simbolico /sbin/mount_sshfs -> /usr/local/bin/sshfs
  • ha aggiunto la seguente riga di configurazione a / etc / auto_master: /- auto_ssh -nosuid
  • ha creato il file di configurazione / 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
    
  • in seguito ricarica l'automount tramite: sudo automount -cv

Se ora provo a cd in mnt ottengo il seguente errore:

bash: cd: /mnt: Operation not permitted

La console contiene quanto segue:

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

Qualcuno ha qualche idea su come farlo funzionare o cosa provare dopo?

    
posta ukLab 04.12.2014 - 01:35
fonte

4 risposte

2

FWIW, se qualcun altro si imbatte in questa vecchia domanda, la migliore guida che ho trovato per montare sshfs usando l'automounter di Apple è qui -

link

    
risposta data 11.09.2015 - 23:24
fonte
1

Aggiornamento 2016-08-03: ho scoperto che l'installazione di SSHFS dal collegamento è più stabile rispetto alla versione homebrew, a causa di alcune vecchie dipendenze ( quindi questo potrebbe migliorare in futuro).

CAVEAT: questa connessione è super veloce quando funziona, ma spesso presenta problemi dopo la connessione terminata, ad es. wireless, standby.

Supponiamo che tu abbia Homebrew installato ( rendi la tua vita più facile e prendi questa prima )

Installazione di SSHFS

brew install sshfs

Controlla questa cartella per vedere i file system installati: ls /Library/Filesystems Se non vedi osxfusefs.fs , devi installarlo.

Get Cask

brew tap caskroom/cask

Installa OSXFUSE

brew cask install osxfuse

In alternativa invece di usare homebrew le versioni di download da link

SSHFS + OSXFUSE ora installato. Un altro passo ...

autofs ha bisogno di mount_* binari.

/usr/local/bin/sshfs dovrebbe essere disponibile anche come mount_sshfs , quindi:

Elenca il tuo mount_* s con

compgen -c | grep ^mount

OR

ls /sbin | grep mount 

Se non vedi mount_sshfs, devi fare questo passo. Questo è un passaggio fondamentale perché è facilmente dimenticato e potrebbe creare mal di testa.

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

Aggiungi avvio automatico a Boot Daemon in /Library/LaunchDaemons/

Il file potrebbe essere chiamato:

Devi eseguire questo ad ogni avvio per l'estensione del kernel:

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

Quindi crea un nuovo file di servizio:

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

Contenuto:

<?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>

Carica con launchctl (launchd) per il prossimo avvio, che è la versione per Mac OS X di systemctl (systemd)

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

Imposta auto_master e auto_sshfs

Quanto segue presuppone che tu possa ssh sul tuo server con una chiave sicura (nessuna password richiesta).

/ etc / auto_master

/mnt/sshfs                auto_sshfs       -nosuid

/ etc / auto_sshfs

Potresti utilizzare i parametri che normalmente vengono dopo il -o in sshfs -o a seconda della situazione.

  • idmap = utente: impostazione predefinita. dal momento che il tuo uid e il gid sono probabilmente diversi tra i sistemi operativi, puoi semplicemente mappare l'utente utilizzato dall'utente @ ip: al tuo utente locale (client). In questo caso il gruppo verrà ignorato (il che significa che le cartelle che non sono ancora di tua proprietà ti concedono permessi di lettura sul gruppo sul lato server potrebbero non essere leggibili localmente - sul lato client)

o

  • uid = YOURUSERID, gid = YOURGROUPID: digita id YOURUSER per ottenere i numeri. Questo mapperà semplicemente tutti i file dal mount a questa combinazione utente / gruppo. Questo ti permetterà di leggere tutti i file. Penso che ogni nuovo file / cartella che crei erediterà le impostazioni predefinite di umask per qualsiasi cartella tu monti.

  • allow-other: io lo uso, ma è rischioso perché chiunque visiti il mount vedrà il mount usando le credenziali utilizzate durante la connessione.

  • elenca tutti i parametri con man sshfs e leggi vedi ogni parametro dopo ogni -o

sostituire:

  • TUO UTENTE con il tuo nome utente e
  • PRIVATEKEY alla tua chiave, ad es. id_ed25519
  • ip con il tuo indirizzo IP o nome host

Contenuti Importante è il parametro reconnect , altrimenti ogni volta che perdi la connessione (come andare a dormire), il Finder si bloccherà.

Sostituisci

  • $ (id -u) con il tuo ID effettivo sul computer client
  • $ (id -g) con l'identificativo del gruppo attuale sul computer client

Purtroppo non puoi eseguire cose in autofs come 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

Elenco dei filesystem montati

lsvfs

Elenca tutti i supporti

mount
    
risposta data 06.07.2016 - 23:00
fonte
1

Questo non richiede la disattivazione della protezione dell'integrità del sistema, poiché i lavori cron funzionano ancora in el capitano:

$ 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
    
risposta data 25.10.2018 - 17:36
fonte
0

Per macOS Mojave e l'ultima versione di osxfuse, questo è il file daemon corretto:

<?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 ora si trova a /Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse e il parametro kernel corretto è vfs.generic.osxfuse.tunables.allow_other

Maggiori informazioni su osxfuse wiki

    
risposta data 09.11.2018 - 10:37
fonte

Leggi altre domande sui tag