Ssh

作為什麼使用者正在訪問 sshfs 掛載的文件夾?

  • May 23, 2018

我正在嘗試對驅動器進行網路備份。在這個過程中有兩台機器。

PC1:

  • 帶2個硬碟sda和sdb的遠端機器
  • sdb 是需要備份的驅動器
  • 存在兩個使用者,rootuser

PC2:

  • 我正在使用的機器
  • 作為使用者 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

由於我以root@PC1身份 ssh-ed 到 PC1,這是否意味著我對作為 sshfs 掛載的文件具有 root 訪問權限?

從這個例子來看,它似乎沒有,這裡有沒有我遺漏的概念?

遠端文件以您登錄的遠端使用者身份訪問,即 root。沒有別的辦法,真的。

您收到的錯誤是由於本地權限所致。這是 SSHFS 所基於的 FUSE 中的一個奇怪之處。預設情況下,只有進行掛載的使用者才能訪問 FUSE 文件系統。即使root也無法訪問它。阻止 root 使用者訪問不是安全限制,因為 root 可以 su(1)/setuid(2) 到掛載文件系統的使用者,這是 FUSE 內部架構的限制。由於您以非 root 使用者身份進行了掛載,因此也以該非 root 使用者身份訪問文件系統。無論如何,在 sudo 下執行dd並沒有給你買任何東西,所以只需執行

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

其中(dd 的無用使用)簡化為

dd if=~/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

sshfs 無法處理塊設備。它將所有內容都視為文件。您需要使用 、 和命令行重定向來獲得創意sshdd如下所示:

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"

引用自:https://unix.stackexchange.com/questions/60188