sshfs mount, sudo viene negato il permesso


53

Sto usando sshfsper montare una cartella con alcuni progetti Python su SSH nella mia ~/directory.

$ mkdir -p ~/mount/my-projects
$ sshfs user@example.com:/home/user/my-projects ~/mount/my-projects

Posso eseguire la maggior parte dei comandi come ci si potrebbe aspettare:

$ ls ~/mount/my-projects
some-python-project

Ma se provo a fare qualcosa sudo, fallisce con il permesso negato:

$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied

Quello che sto effettivamente cercando di realizzare è testare uno script di installazione del pacchetto python sul mio computer locale:

$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install

Risposte:


93

Credo che sia necessario utilizzare l' allow_otheropzione per sshfs. Per fare questo, dovresti chiamarlo con sudo, come segue: -

sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects

Senza questa opzione, solo l'utente che ha eseguito sshfs può accedere al mount. Questa è una limitazione di miccia. Ulteriori informazioni sono disponibili digitando man fuse.

Dovresti anche notare che (almeno su Ubuntu) devi essere un membro del gruppo 'fuse', altrimenti il ​​comando sopra si lamenterà di non poter accedere /etc/fuse.confquando eseguito senza 'sudo'.


2
Buona prima risposta!
slm

13
Vedi anche l' allow_rootopzione per consentire rootsolo. Si noti tuttavia che tali opzioni sono limitate a root per impostazione predefinita a meno che non si aggiunga una user_allow_otherriga a /etc/fuse.conf.
Stéphane Chazelas,

7

sshfsè un processo userland, quindi non è necessario eseguirlo sudo.

Se lo esegui come sudo e usi l'autenticazione con chiave SSH, la chiave verrà cercata sotto /root/.sshe non sotto il tuo utente /home/myuser/.ssh.

Lo stesso vale per il ~/.ssh/configfile che sshfsè in grado di utilizzare.

Se hai un ~/.ssh/configlike:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile ~/.ssh/id_rsa

quindi potresti montare il tuo host remoto come un normale utente con:

sshfs remotehost: local_dir

Per eseguire sotto root è possibile aggiungere -o IdentityFile /home/myuser/.ssh/id_rsaal sshfscomando 'raw' o creare /root/.ssh/configcon il percorso completo della chiave SSH dell'utente:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile /home/myuser/.ssh/id_rsa

Ora sshfs remotehost: local_dirfunzionerà anche sotto root.

Con il tuo .ssh/configposto puoi copiare intere cartelle tra gli host con (da remoto a locale) scp -r remotehost:remotedir localdiro (da locale a remoto) scp -r localdir remotehost:remotedir, quindi per una singola operazione una tantum, potresti non averne nemmeno bisogno sshfs.

Se si utilizza un percorso remoto relativo come in remotehost:remotedirpoi remotedirsarà relativo alla cartella principale dell'utente, cioè remotehost:remotedirè equivalente aremotehost:/home/myuser/remotedir


1

Ciò che ha risolto il problema per me è stato aggiungere l' allow_otheropzione al comando in questo modo:

$ sshfs -o allow_other user@example.com:/home/user/my-projects ~/mount/my-projects

quindi potresti ricevere l'errore:

l'opzione allow_other è consentita solo se 'user_allow_other' è impostato in /etc/fuse.conf per risolvere quella testa in /etc/fuse.conf con il tuo editor di testo preferito e decomment (elimina il # dietro) user_allow_other

Se questo ha risolto il problema e hai potuto eseguire sshfscorrettamente, fantastico! Altrimenti dovresti provare ad aggiungere il tuo utente al gruppo di fusibili con questo comando:

$ usermod -a -G mark fuse

e se si verifica un errore che dice che non esiste un gruppo di fusibili, è possibile creare facilmente quel gruppo:

$ sudo groupadd mynewgroup
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.