Como o usuário é uma pasta montada sshfs sendo acessada?

5

Estou tentando fazer um backup de rede de uma unidade. Existem duas máquinas neste processo.

PC1:

  • Máquina distante com 2 discos rígidos sda e sdb
  • sdb é a unidade que precisa fazer backup
  • existem dois usuários, root e usuário

PC2:

  • máquina em que estou
  • trabalhando como usuário Alan, pode fazer root quando necessário

Eu faço o seguinte no PC2:

sshfs root@PC1:/dev ~/Desktop/netdisk/

Monta bem. Eu tenho sdb disponível em ~ / Destkop / netdisk /. Próximo passo:

sudo dd if=~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz

Gera um erro:

dd: opening 'netdisk/sdb': Permission denied

Quando eu verifico as permissões do sdb:

brw-rw---- 1 root    disk    0, 0 Jan  3 10:47 sdb

Desde que eu ssh-ed para PC1 como root @ PC1 isso não significa que eu tenho acesso root aos arquivos montados como sshfs?

A partir desse exemplo, parece que não existe. Existe algum conceito aqui que está faltando?

    
por TheMeaningfulEngineer 03.01.2013 / 15:20

3 respostas

3

Os arquivos remotos são acessados como o usuário remoto com o qual você efetuou login, por exemplo, root. Não há outro jeito, realmente.

O erro que você recebe é devido a permissões no lado local. É uma coisa estranha no FUSE, no qual o SSHFS é baseado. Por padrão, somente o usuário que fez a montagem pode acessar um sistema de arquivos FUSE. Mesmo root não pode acessá-lo. Evitar o acesso do usuário root não é uma restrição de segurança, pois o root pode su (1) / setuid (2) para o usuário que montou o sistema de arquivos, é uma limitação da arquitetura interna do FUSE. Desde que você fez a montagem como um usuário não-root, também acessa o sistema de arquivos como aquele usuário não-root. A execução de dd sob o sudo não está lhe comprando nada aqui, portanto, basta executar

dd if=~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz

quais ( uso inútil de dd ) simplifica para baixo para

dd if=~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz

qual o uso inútil do gato simplifica até

gzip <~/Destkop/netdisk/sdb >~/Destkop/ddbackup/image.gz

Se sdb for um dispositivo de bloco e não um arquivo normal no lado remoto, ele não funcionará por um sistema de arquivos remoto (se a entrada do dispositivo for uma entrada de dispositivo, seria o dispositivo local, o que é indesejável ). Use o ssh para acessá-lo:

ssh root@PC1 cat /dev/sdb | gzip >~/Destkop/ddbackup/image.gz

Em qualquer caso, você economizaria largura de banda fazendo a compactação no lado remoto:

ssh root@PC1 'gzip </dev/sdb' >~/Destkop/ddbackup/image.gz
    
por 04.01.2013 / 01:40
4

sshfs não pode manipular dispositivos de bloco. Ele tratará tudo como um arquivo. Você precisaria ser criativo com ssh , dd e redirecionamento de linha de comando da seguinte forma:

PC2 - > PC1:

dd of=/home/Alan/Desktop/image.iso < ssh root@PC1 "dd if=/dev/sdb"

ou do PC1 - > PC2:

dd if=/dev/sdb | ssh root@PC2"dd of=/home/Alan/Desktop/image.iso"
    
por 03.01.2013 / 16:58
3

Você pode usar a opção de montagem allow_other para permitir que você acesse este dispositivo como qualquer usuário. Se você usar essa opção, tenha em mente que o kernel do Linux possui um bug de segurança não resolvido que afeta o FUSE .

sshfs -o allow_other root@PC1:/dev ~/Desktop/netdisk/

Garanta que você também defina user_allow_other em /etc/fuse.conf .

Veja esta resposta em serverfault.com para mais detalhes.

    
por 29.01.2014 / 12:43

Tags