Définissez les droits appropriés pour le point de montage sshfs afin qu'il puisse être partagé avec samba

12

J'ai un hébergeur de domaine qui fournit un accès via SSH.

Mes plateformes sont:

  • Gentoo 2.6.36-r5
  • Windows (XP / Vista / 7)

Je travaille sur Windows, j'utilise Gentoo pour faire toute la magie que Windows ne peut pas faire.

Par conséquent, j'utilise sshfs pour monter le répertoire public distant de mon domaine sur /mnt/mydomain.com. L'authentification se fait via des clés, donc les paresseux n'ont pas à taper mon mot de passe de temps en temps.

Étant donné que je fais mon codage sur Windows et que je ne veux pas télécharger / télécharger les fichiers modifiés tout le temps, je veux accéder à ce /mnt/mydomain.com via un partage samba.

J'ai donc partagé / mnt dans samba, tous les montages sauf mydomain.com sont répertoriés dans mon explorateur Windows.

Mes théories sont:

  1. sshfs ne définit pas l'uid / gid du point de montage sur quelque chose que samba attend
  2. samba ne sait pas qu'il doit inclure l'uid / gid que /mnt/mydomain.com a été défini.
  3. Tout ce qui précède est faux, et je ne sais pas.

Voici les configurations et les sorties de la console, besoin de quelque chose d'autre, faites le moi savoir. Il n'y a pas non plus d'erreurs ou d'avertissements que je prenne note de leur pertinence pour ce problème, mais je peux me tromper.

gentoo ~ # ls -lah /mnt
total 20K
drwxr-xr-x  9 root  root  4.0K Mar 26 16:15 .
drwxr-xr-x 18 root  root  4.0K Mar 26  2011 ..
-rw-r--r--  1 root  root     0 Feb  1 16:12 .keep
drwxr-xr-x  1 root  root     0 Mar 18 12:09 buffer
drwxr-s--x  1 68591 68591 4.0K Feb 16 15:43 mydomain.com
drwx------  2 root  root  4.0K Feb  1 16:12 cdrom
drwx------  2 root  root  4.0K Feb  1 16:12 floppy
drwxr-xr-x  1 root  root     0 Sep  1  2009 services
drwxr-xr-x  1 root  root     0 Feb 10 15:08 www

/etc/samba/smb.conf

[mnt]
comment = Mount points
writable = yes
writeable = yes
browseable = yes
browsable = yes
path = /mnt

/ etc / fstab

sshfs#[email protected]:/home/to/pub/dir/ /mnt/mydomain.com/ fuse comment=sshfs,noauto,users,exec,uid=0,gid=0,allow_other,reconnect,follow_symlinks,transform_symlinks,idmap=none,SSHOPT=HostBasedAuthentication 0 0

Pour une lecture plus facile:

options:

  • comment = sshfs
  • noauto
  • utilisateurs
  • exec
  • uid = 0
  • gid = 0
  • allow_other
  • reconnecter
  • Follow_symlinks
  • transform_symlinks
  • idmap = aucun
  • SSHOPT = HostBasedAuthentication

Aidez-moi!

CS01
la source
IIRC, HostbasedAuthenticationn'est pas recommandé à utiliser (la version basée sur l'utilisateur PubkeyAuthenticationest préférée)
user1686
SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Tom Hale

Réponses:

11

sshfsest un système de fichiers basé sur FUSE, et la couche FUSE ne permet pas aux autres utilisateurs d'accéder à ses montages par défaut, pour des raisons de sécurité. Vous avez des allow_otheroptions, mais elles seront ignorées jusqu'à ce que vous les modifiiez également /etc/fuse.confpour les inclure user_allow_other.

user1686
la source
1
Lors de l'exécution de "ps aux", la colonne de gauche indique la racine pour les processus sshfs et smbd. J'analyse ceci car les deux exécutions ont les mêmes privilèges. De la sortie ls -lah, vous voyez que l'uid n'est pas root, cet uid est défini par sshfs, mais je ne peux pas le définir, du moins pas en changeant uid / gid dans les options. Je crois que la samba pense en quelque sorte qu'elle doit exclure ce répertoire spécifique avec uid / gid 68591. (Essayer de dissiper une certaine confusion de ma part.)
CS01
@ CS01: Le smbd "maître" s'exécute en tant que root, mais cela n'est pas vrai pour les gestionnaires de connexions - si vous vous connectez via SMB en tant que "jim", votre processus smbd passe également à l'UID de "jim".
user1686
1
Vous devez également mapper l'UID et / ou le GID aux utilisateurs souhaités via les options uid = <UID>, gid = <GID>.
sweisgerber.dev
Merci à tous pour les réponses. pour résumer, après avoir testé sur une version récente d'Ubuntu: 1. update /etc/fuse.conf; 2. spécifiez TROIS options de commande sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>). Il ne semble pas nécessaire de redémarrer smbd(mais je ne suis pas sûr puisque j'ai redémarré de smbdtoute façon).
bruin
2

Pourquoi ne montez-vous pas sshfs directement à partir de Windows?
Il existe quelques solutions gratuites pour cela (voir ici et ici pour plus d'informations).

user629926
la source
1
Wow, cet outil est génial!
CS01
Ils ne semblent pas très prometteurs et sont suspendus, au moins maintenant, après 3 ans :) Avez-vous une expérience de stabilité avec eux?
sweisgerber.dev
0

Comme vos partages smb normaux fonctionnent, je ne perds pas un mot concernant la configuration de Samba, car vous pouvez voir les montages sshfs exactement comme vous partagez des dossiers normaux. Mais le montage du partage SSH via sshfs est spécial par rapport à l'accès à la machine locale uniquement.

Pour monter votre partage via fstab, vous pouvez mettre cette ligne dans / etc / fstab et monter le partage SUR DEMANDE. C'est plus pratique que c & p la commande en ligne de commande.

Ligne générique etc / fstab:

**<USERNAME>**@<SERVER>:<REMOTE_PATH> /MOUNT/POINT fuse.sshfs noauto,users,idmap=user,IdentityFile=/path/to/.ssh/id_rsa,allow_other,reconnect,port=22,uid=<UID>,gid=<GID> 0 0

noauto: vous devez le monter via mount /MOUNT/POINT toutes les autres informations est extrait de cette ligne dans / etc / fstab

utilisateurs: permet aux utilisateurs normaux de monter cette entrée de montage

reconnecter: reconnecte / remonte le lièvre après la veille, etc.

uid = / gid =: mappe l'uid / gid distant à cet uid / gid local

Exemple:

[email protected]:/home/foo/music ~/foos_music fuse.sshfs noauto,users,idmap=user,IdentityFile=/home/foo/.ssh/id_rsa,allow_other,reconnect,port=22,uid=foo,gid=users 0 0

Tout ce que vous devez savoir sur le montage sshfs [ https://wiki.archlinux.org/index.php/Sshfs]

sweisgerber.dev
la source