sshfs mount, sudo obtiene permiso denegado

53

Estoy usando sshfspara montar una carpeta con algunos proyectos de Python a través de ssh en mi ~/directorio.

$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/home/user/my-projects ~/mount/my-projects

Puedo ejecutar la mayoría de los comandos como podría esperarse:

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

Pero si trato de hacer algo sudo, falla con el permiso denegado:

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

Lo que realmente estoy tratando de lograr es probar un script de instalación de paquete de Python en mi máquina local:

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

Respuestas:

93

Creo que necesitas usar la allow_otheropción para sshfs. Para hacer esto, debe llamarlo con sudo, de la siguiente manera:

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

Sin esta opción, solo el usuario que ejecutó sshfs puede acceder al montaje. Esta es una restricción de fusibles. Más información está disponible escribiendo man fuse.

También debe tener en cuenta que (al menos en Ubuntu) debe ser miembro del grupo 'fusible', de lo contrario, el comando anterior se quejará de no poder acceder /etc/fuse.confcuando se ejecuta sin 'sudo'.

garethTheRed
fuente
2
Buena primera respuesta!
slm
13
Vea también la allow_rootopción de permitir rootsolo. Sin embargo, tenga en cuenta que esas opciones están restringidas a root de forma predeterminada a menos que agregue una user_allow_otherlínea a /etc/fuse.conf.
Stéphane Chazelas
7

sshfses un proceso de usuario, por lo que no es necesario ejecutarlo sudo.

Si lo ejecuta como sudo y utiliza la autenticación de clave SSH, la clave se buscará debajo /root/.sshy no debajo de su usuario /home/myuser/.ssh.

Lo mismo se aplica al ~/.ssh/configarchivo que sshfses capaz de usar.

Si tienes un me ~/.ssh/configgusta:

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

entonces podría montar su host remoto como un usuario normal con:

sshfs remotehost: local_dir

Para ejecutar bajo root, puede agregar -o IdentityFile /home/myuser/.ssh/id_rsael sshfscomando 'raw' o crear /root/.ssh/configcon la ruta completa a la clave SSH de su usuario:

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

Ahora sshfs remotehost: local_dirtambién funcionará bajo root.

Con su .ssh/configlugar, puede copiar carpetas enteras entre los hosts con (de remoto a local) scp -r remotehost:remotedir localdiro (de local a remoto) scp -r localdir remotehost:remotedir, por lo que para una operación única, es posible que ni siquiera lo necesite sshfs.

Si utiliza una ruta remota relativa como en remotehost:remotedirentonces remotedirserá relativa a la carpeta de inicio del usuario, remotehost:remotedires decir, es equivalente aremotehost:/home/myuser/remotedir

ccpizza
fuente
1

Lo que resolvió el problema para mí fue agregar la allow_otheropción al comando de la siguiente manera:

$ sshfs -o allow_other [email protected]:/home/user/my-projects ~/mount/my-projects

entonces puede obtener el error:

la opción allow_other solo está permitida si 'user_allow_other' está configurado en /etc/fuse.conf para resolver ese encabezado en /etc/fuse.conf con su editor de texto favorito y descomente (elimine el # detrás) user_allow_other

Si eso resuelve el problema y puedes correr con sshfséxito, ¡genial! De lo contrario, intente agregar su usuario al grupo de fusibles con este comando:

$ usermod -a -G mark fuse

y si se produce un error al decir que el grupo de fusibles no existe, puede crear fácilmente ese grupo de la siguiente manera:

$ sudo groupadd mynewgroup
Khashayar Motarjemi
fuente