web-dev-qa-db-fra.com

Sshfs en tant qu'utilisateur régulier via fstab

J'aimerais monter un répertoire distant via sshfs sur ma machine Debian, par exemple à /work. J'ai donc ajouté mon utilisateur au groupe Fuse et je lance:

sshfs [email protected]:/remote/dir /work

et tout fonctionne bien. Cependant, il serait très agréable d’avoir le répertoire monté au démarrage. J'ai donc essayé l'entrée /etc/fstab donnée ci-dessous:

sshfs#[email protected]:/remote/dir /work     Fuse      user,_netdev,reconnect,uid=1000,gid=1000,idmap=user  0   0

sshfs demande le mot de passe et se monte presque correctement. Presque parce que ma user habituelle n'a pas accès au répertoire monté et lorsque je lance ls -la /, je reçois:

d?????????   ? ?        ?               ?            ? work

Comment puis-je l'obtenir avec les bonnes autorisations via fstab?

12
Sventimir

L'utilisation de l'option allow_other dans /etc/fstab permet à d'autres utilisateurs que celui qui effectue le montage réel d'accéder au système de fichiers monté. Lorsque vous démarrez votre système et montez votre sshfs, cela se fait par l'utilisateur root plutôt que par votre utilisateur habituel. Lorsque vous ajoutez allow_other, d’autres utilisateurs que root peuvent accéder au point de montage. Les autorisations de fichiers sous le point de montage restent toujours les mêmes, alors si vous avez un répertoire avec le masque 0700 ici, il n'est pas accessible par personne d'autre que root et le propriétaire.

Donc, au lieu de 

sshfs#[email protected]:/remote/dir /work     Fuse      user,_netdev,reconnect,uid=1000,gid=1000,idmap=user  0   0

utilisation

sshfs#[email protected]:/remote/dir /work     Fuse      user,_netdev,reconnect,uid=1000,gid=1000,idmap=user,allow_other  0   0

Cela a fait le tour pour moi au moins. Je n'ai pas testé cela en démarrant le système, mais en émettant la commande mount en tant que root, puis en essayant d'accéder au fichier sshfs monté en tant qu'utilisateur standard.

26
Sami Laine

Aussi pour compléter la réponse précédente:

  1. Vous devriez préférer la syntaxe [utilisateur] @ [hôte] à la syntaxe sshfs # [utilisateur] @ [hôte].

  2. Assurez-vous d'autoriser les utilisateurs non root à spécifier l'option de montage allow_other dans /etc/Fuse.conf.

  3. Assurez-vous d'utiliser chaque montage sshfs au moins une fois manuellement en tant qu'utilisateur root pour que la signature de l'hôte soit ajoutée au fichier .ssh/known_hosts.

    $ Sudo sshfs [utilisateur] @ [hôte]: [chemin_distant] [chemin_local] -o allow_other, IdentityFile = [chemin_du_id_rsa]

REF: https://wiki.archlinux.org/index.php/SSHFS

2
Martin Brousseau

De plus, en complément de la réponse acceptée: il est nécessaire que l'utilisateur sur la cible ait un droit sur Shell, sur la machine cible: Sudo chsh username -> /bin/bash.

J'ai eu un utilisateur qui avait/bin/false, et cela a posé des problèmes.

0
Marten Sytema