ドライブのネットワークバックアップを実行しようとしています。このプロセスには2台のマシンがあります。
PC1:
PC2:
私は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にroot @ PC1としてsshしたので、それは私がsshfsとしてマウントされたファイルへのルートアクセス権を持っていることを意味しませんか?
この例からはそうではないようですが、ここに私が欠けている概念はありますか?
リモートファイルには、ログインしたリモートユーザー、つまりrootとしてアクセスします。本当に他の方法はありません。
発生するエラーは、ローカル側の権限が原因です。 SSHFSのベースとなっているFuseでは奇妙なことです。デフォルトでは、マウントを行ったユーザーのみがFuseファイルシステムにアクセスできます。ルートでさえアクセスできません。 rootユーザーがアクセスできないようにすることはセキュリティ上の制限ではありません。rootはファイルシステムをマウントしたユーザーまでsu(1)/ setuid(2)できるため、Fuseの内部アーキテクチャの制限です。非rootユーザーとしてマウントを行ったので、その非rootユーザーとしてファイルシステムにもアクセスします。 Sudoでdd
を実行しても、ここでは何も購入されないので、実行するだけです。
dd if=~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz
which( ddの無用な使用 )はに簡略化されます
dd if=~/Destkop/netdisk/sdb | gzip -c > ~/Destkop/ddbackup/image.gz
猫の無駄な使用は、
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はブロックデバイスを処理できません。すべてをファイルとして扱います。 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"
マウントオプションallow_other
を使用して、任意のユーザーとしてこのデバイスにアクセスできるようにすることができます。このオプションを使用する場合は、 LinuxカーネルにはFuseに影響する未解決のセキュリティバグがあります であることに注意してください。
sshfs -o allow_other root@PC1:/dev ~/Desktop/netdisk/
user_allow_other
にも/etc/Fuse.conf
を設定してください。
詳細については、serverfault.comの この回答 を参照してください。