sshfs 탑재 폴더에 액세스하는 데 어떤 사용자 ID가 사용됩니까?

sshfs 탑재 폴더에 액세스하는 데 어떤 사용자 ID가 사용됩니까?

드라이브의 네트워크 백업을 수행하려고 합니다. 이 프로세스에는 두 대의 기계가 관련됩니다.

컴퓨터 1:

  • 원격 시스템에는 2개의 하드 디스크 sda 및 sdb가 있습니다.
  • sdb는 백업이 필요한 드라이브입니다.
  • 사용자는 2명이며,뿌리그리고사용자

컴퓨터 2:

  • 내가 사용하고 있는 기계
  • 사용자 Alan으로 작업하고 필요한 경우 루트가 될 수 있습니다.

PC2에서는 다음을 수행합니다.

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

아주 잘 설치되었습니다. ~/Destkop/netdisk/에 sdb를 사용할 수 있습니다. 다음 단계:

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

오류가 발생합니다.

dd: opening `netdisk/sdb': Permission denied

sdb의 권한을 확인할 때:

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

왜냐하면 나는 다음과 같이 PC1에 SSH로 접속했기 때문이다.루트@PC1이는 sshfs로 마운트된 파일에 대한 루트 액세스 권한이 있다는 의미입니까?

이 예에서는 그렇지 않은 것 같습니다. 여기서 누락된 개념이 있습니까?

답변1

sshfs는 블록 장치를 처리할 수 없습니다. 모든 것을 파일로 처리합니다. 다음과 같이 ssh, dd및 명령줄 리디렉션을 사용하여 창의력을 발휘해야 합니다 .

PC2 -> PC1:

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

또는 PC1 -> PC2에서:

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

답변2

설치 옵션을 사용하면 allow_other모든 사용자로서 이 장치에 액세스할 수 있습니다. 이 옵션을 사용하는 경우 기억하세요.Linux 커널에는 FUSE에 영향을 미치는 해결되지 않은 보안 버그가 있습니다..

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

user_allow_other여러분도 꼭 참여해 보세요 /etc/fuse.conf.

바라보다이 답변자세한 내용은 serverfault.com을 방문하세요.

답변3

원격 파일은 로그인한 원격 사용자(예: 루트)로 액세스됩니다. 정말 다른 방법이 없습니다.

귀하가 받고 있는 오류는 로컬 권한으로 인해 발생합니다. 이는 SSHFS의 기반이 되는 FUSE에서는 이상한 현상입니다. 기본적으로 마운트 사용자만 FUSE 파일 시스템에 액세스할 수 있습니다. 루트조차도 접근할 수 없습니다. 루트 액세스를 방지하는 것은 보안 제한 사항이 아닙니다. 왜냐하면 루트는 파일 시스템을 마운트한 사용자를 su(1)/setuid(2)할 수 있기 때문입니다. 이는 FUSE 내부 아키텍처의 제한 사항입니다. 루트가 아닌 사용자로 설치했으므로 파일 시스템도 루트가 아닌 사용자로 액세스됩니다. 어쨌든, sudo로 실행하면 dd아무 것도 얻지 못하므로 그냥 실행하세요.

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

어느 (쓸모없는 사용dd)는 다음과 같이 단순화됩니다.

cat ~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz

어떤 쓸모없는 사용이 cat감소합니까?

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

원격 측의 일반 파일이 아닌 블록 장치 인 경우 sdb원격 파일 시스템을 통해 작동하지 않습니다(장치 항목이 장치 항목인 경우 로컬 장치가 되므로 바람직하지 않습니다). SSH를 사용하여 액세스합니다.

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

어쨌든 원격 측에서 압축을 수행하면 대역폭을 절약할 수 있습니다.

ssh root@PC1 'gzip </dev/sdb' >~/Destkop/ddbackup/image.gz

관련 정보