SJ blog
Qubes OS
Z

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Qubes OS でファイルをVM間でコピーする方法

Qubes OS でQube間のファイルコピー、クリップボード共有、Open in DisposableVMの使い方と、ファイル転送時のセキュリティ上の注意点を解説します。

一言結論

Qubes OSでのVM間ファイル転送はqvm-copyで受信VMを明示的に選択する必要があり、この意図的な手間がドラッグ&ドロップによる誤転送を防ぐセキュリティ設計の核心だ。

Qubes OS でのファイル転送の基本

Qubes OS では、通常のOSのようにVMをまたいでファイルをドラッグ&ドロップはできません。意図的な操作でのみファイルをVM間で転送できます。これがセキュリティを高めています。

GUI でのファイルコピー

ファイルマネージャー(または送信元VM のターミナル)でファイルを右クリック → Copy to Other AppVM または Move to Other AppVM

コピー先のVMを選択するダイアログが表示されます。

コピー先のVMの /home/user/QubesIncoming/[送信元VM名]/ にファイルが配置されます。

コマンドラインでのファイルコピー

送信元VM から dom0 を経由してコピー

# 送信元VM(例: personal)のターミナルで実行
qvm-copy-to-vm work /path/to/file.txt

# または
qvm-copy /path/to/file.txt
# → コピー先VMを選択するダイアログが表示される

dom0 からのコピー操作

# dom0 ターミナルから
qvm-run --auto --pass-io personal "cat /home/user/document.txt" > /tmp/document.txt
qvm-run --auto --pass-io work "cat > /home/user/document.txt" < /tmp/document.txt

注意: dom0 を経由した場合、dom0 の /tmp を汚染する可能性があります。dom0 は最も信頼されたドメインなので、信頼できないデータを dom0 に通すのは推奨されません。

クリップボードの共有

Qubes OS では、クリップボードも VM 間で自動共有はされません。

手順

  1. コピー元VM でテキストを選択してコピー(Ctrl+C
  2. グローバルクリップボードに転送: Ctrl+Shift+C
  3. コピー先VM のウィンドウにフォーカスを移動
  4. グローバルクリップボードから取得: Ctrl+Shift+V
  5. 貼り付け: Ctrl+V
[personal VM: Ctrl+C] → [Ctrl+Shift+C] → [グローバルクリップボード]
  → [work VM にフォーカス] → [Ctrl+Shift+V] → [Ctrl+V]

クリップボードのセキュリティ

グローバルクリップボードは 一方向の操作 が必要で、意図せずデータが漏れることを防ぎます。クリップボードのサイズには制限があります(64KB)。

DisposableVM でファイルを開く

信頼できないファイル(メールの添付ファイル、ダウンロードしたPDFなど) は必ず DisposableVM で開きます。

# 右クリック → "Open in DisposableVM" を選択

# コマンドラインから
qvm-open-in-dvm /path/to/untrusted-document.pdf

# 特定のDisposableVMテンプレートを指定
qvm-open-in-dvm --dispvm=whonix-ws-dvm /path/to/file

DisposableVM はファイルを開いて確認したら自動的に削除されます。マルウェアが含まれていても使い捨てのVMなので影響が限定されます。

qvm-copy と qvm-move の違い

qvm-copy file.txt   # コピー(元のファイルは残る)
qvm-move file.txt   # 移動(元のファイルは削除される)

ファイル転送のポリシー設定

/etc/qubes/policy.d/ で転送のポリシーを設定できます:

# /etc/qubes/policy.d/30-user-copy.policy

# personal から work へのファイルコピーを自動許可
qubes.Filecopy * personal work allow

# untrusted からのコピーは常に拒否
qubes.Filecopy * untrusted @anyvm deny

# それ以外は確認ダイアログを表示
qubes.Filecopy * @anyvm @anyvm ask

大きなファイルの転送

ファイルが大きい場合(数GB)、GUI ツールは遅い場合があります。qvm-copy は内部的に qrexec を使いますが、一時的に /tmp を使うためディスクスペースに注意が必要です。

大容量の場合は共有フォルダ(bind-dirs)の設定を検討します。

注意事項

操作推奨度理由
信頼できるVMへのコピー通常の運用
信頼できないVMからのコピーファイルの内容を確認してから
dom0 へのコピーdom0 は汚染しないこと
DisposableVM で開く最も安全な方法

ファイルを扱う際は「どのVMから来たか」を常に意識することが Qubes OS の使い方の基本です。