Defina os direitos adequados para o ponto de montagem sshfs para que possa ser compartilhado com o samba

12

Eu tenho um hoster de domínio que fornece acesso via SSH.

Minhas plataformas são:

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

Eu trabalho no meu Windows, uso o Gentoo para fazer toda a mágica que o Windows não pode fazer.

Portanto, eu uso o sshfs para montar o diretório público remoto do meu domínio em /mnt/mydomain.com. A autenticação é feita por meio de chaves, então, preguiçoso, não preciso digitar minha senha de vez em quando.

Como faço a codificação no Windows e não quero carregar / baixar os arquivos alterados o tempo todo, desejo acessar este /mnt/mydomain.com por meio de um compartilhamento de samba.

Então, eu compartilhei / mnt no samba, todas as montagens, exceto mydomain.com, estão listadas no meu Windows Explorer.

Minhas teorias são:

  1. O sshfs não define o ponto de montagem uid / gid como algo que o samba espera
  2. O samba não sabe que precisa incluir o uid / gid que /mnt/mydomain.com foi definido.
  3. Tudo acima está errado, e eu não sei.

Aqui estão configurações e saída do console, precisa de qualquer outra coisa, apenas me avise. Além disso, não há erros ou avisos de que sou relevante para esse problema, mas posso estar errado.

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

Para uma leitura mais fácil:

opções:

  • comment = sshfs
  • noauto
  • Comercial
  • exec
  • uid = 0
  • gid = 0
  • allow_other
  • reconectar
  • follow_symlinks
  • transform_symlinks
  • idmap = none
  • SSHOPT = HostBasedAuthentication

Socorro!

CS01
fonte
IIRC, HostbasedAuthenticationnão é recomendado para uso (baseada no usuário PubkeyAuthenticationé o preferido)
user1686
SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Tom Hale

Respostas:

11

sshfsé um sistema de arquivos baseado em FUSE, e a camada FUSE não permite que outros usuários acessem suas montagens por padrão, por motivos de segurança. Você tem allow_otheropções, mas ele será ignorado até que você também edite /etc/fuse.confpara incluir user_allow_other.

user1686
fonte
1
Ao executar "ps aux", a coluna da esquerda indica a raiz dos processos sshfs e smbd. Eu "analiso" isso porque ambos são executados com os mesmos privilégios. A partir da saída ls -lah, você vê que o uid não é root, este uid é definido pelo sshfs, mas eu não posso configurá-lo, pelo menos não com a alteração do uid / gid nas opções. Acredito samba de alguma forma acho que tem que excluir esse diretório específico com uid / gid 68591. (Tentando limpar alguma confusão da minha parte.)
CS01
@ CS01: O smbd "master" é executado como root, mas isso não é verdade para os manipuladores de conexão - se você fizer login no SMB como "jim", seu processo smbd também mudará para o UID de "jim".
precisa saber é o seguinte
1
Você também precisa mapear o UID e / ou GID para o (s) usuário (s) desejado (s) através das opções uid = <UID>, gid = <GID>.
Sweisgerber.dev
Obrigado a todos pelas respostas. para resumir, depois de testado em uma versão recente do Ubuntu: 1. atualize o /etc/fuse.conf; 2. especifique TRÊS opções de comando sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>). Parece não haver necessidade de reiniciar smbd(mas não tenho certeza desde que reiniciei smbdmesmo assim).
bruin 16/03
2

Por que você não monta sshfs diretamente do Windows?
Existem algumas soluções gratuitas para isso (veja aqui e aqui para mais informações).

user629926
fonte
1
Uau, essa ferramenta é ótima!
CS01
Eles não parecem muito promissores e estão suspensos, pelo menos agora, após 3 anos :) Você tem alguma experiência de estabilidade com eles?
Sweisgerber.dev
0

Como seus compartilhamentos smb normais estão funcionando, não perco uma palavra sobre a configuração do Samba, porque você pode gravar montagens sshfs exatamente como compartilha pastas normais. Mas montar o compartilhamento SSH via sshfs é especial em comparação apenas ao acesso à máquina local.

Para montar seu compartilhamento via fstab, você pode colocar esta linha em / etc / fstab e montar o compartilhamento ON REQUEST. É mais conveniente que c & p o comando commandline.

Linha genérica 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: você precisa montá-lo através de mount /MOUNT/POINT todas as outras informações extraídas desta linha em / etc / fstab

users: permite que usuários normais montem esta entrada de montagem

reconectar: reconecta / remonta o ahre após a espera, etc

uid = / gid =: mapeia o uid / gid remoto para este uid / gid local

Exemplo:

[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

Tudo o que você precisa saber sobre a montagem do sshfs [ https://wiki.archlinux.org/index.php/Sshfs]

sweisgerber.dev
fonte