今回はQubes OS内のあるキューブから別のキューブにテキストをコピー・アンド・ペーストしたり、ファイルをコピーさせる方法とQubes OSデスクトップの壁紙の変更のしかたなどについて解説します。
キューブをまたいだテキストのコピー・アンド・ペースト
テキストのコピー・アンド・ペーストはパソコンを使う上でかかせない機能です。 普通のパソコンでは
- テキストをマウスなどでハイライトしてCtrl +C を押す、または右クリックしてメニューから「コピー」を選択すると、ハイライトしたテキストがクリップボードに記憶される
- 別のキー入力する場所にマウスなどでフォーカスして、Ctrl + Vを押す、または右クリックしてメニューから「貼り付け」を選択すると、フォーカスした場所にクリップボード上に記憶されているテキストが入力される
という順序でコピー・アンド・ペーストが実行されます。
Qubes OSは1つのキューブが1つのパソコンみたいなものですから、1つのキューブの中で作業している間は上と同じ方法で普通にコピー・アンド・ペーストができます。
しかしキューブをまたいだテキストのコピー・アンド・ペーストは別のパソコンにテキストを移すようなものですから、Qubes OS独特のやり方が用意されています。
キューブXからキューブYにテキストをコピー・アンド・ペーストするやり方は
- キューブXのローカル・クリップボードにテキストをコピー
- キューブXのローカル・クリップボードからグローバル・クリップボードにデータを引き渡し
- グローバル・クリップボードからキューブYのローカル・クリップボードにデータを引き渡し
- キューブYのローカル・クリップボードからテキストを貼り付け
という順序で実行されます。
キューブ間のテキストのコピペの手順
キューブ間のテキストのコピペの手順は以下のとおりです:
- キューブXのアプリで普通にテキストを Ctrl + Cなどでコピー (これは上の a.と同じです)
- キューブXのアプリにフォーカスを当てたまま Ctrl + Shift + C を押す
- キューブYのアプリにフォーカスを移してから Ctrl + Shift + V を押す
- キューブYのアプリで普通にテキストを Ctrl + Vなどでペースト (これは上の b.と同じです)
この作業は面倒そうに見えるかもしれませんが、練習すればすぐに慣れると思います。
具体例
それではキューブ間でテキストをCopy & Paste する練習をやってみましょう。以下では personal キューブのFirefox で閲覧している Qubes OSのマニュアルの一節をコピーして、それを untrusted キューブの Firefox で使用している Google翻訳にコピーした英文をペーストします。
personalキューブのFirefoxにおいて Qubes OS マニュアルから https://www.qubes-os.org/doc/getting-started/#the-basics の冒頭のパラグラフをマウスでハイライトします。
このpersonal上でハイライトしたテキストをuntrustedキューブに移すには
1.) personal キューブのFirefox上でテキストをハイライトしてから Ctrl + Cを押す、または右クリックして "Copy" を選びます
2.) そのままpersonal キューブのFirefox上でCtrl + Shift + C を押すと、つぎのような通知が現れます:
つぎにこのテキストを untrustedキューブのFirefoxでGoogle翻訳します。untrustedキューブのFirefoxのウィンドウであらかじめGoogle翻訳のURL https://translate.google.com/ を開いておきます。
3.) untrustedキューブのFirefoxのウィンドウをクリックしてフォーカスを当ててから、Ctrl + Shift + V を押すと、つぎのような通知が現れます:
(ちなみにCtrl + Shift + V を押した段階でグローバル・クリップボードからテキストは削除されます。よって同じテキストをさらに別のキューブに移すことは無理です。そうしたい場合は再度同じ作業を繰り返すしかありません。)
4.) untrustedキューブのFirefoxに表示されたGoogle翻訳の左側欄に Ctrl + V などて英文のテキストをペーストします
こうして untrusted キューブで英文を和訳することができました。
セキュリティ上の注意点
Qubes 公式の解説によると、テキストデータだけで何らかの脆弱性をついて攻撃することはあり得なくはないので、安全でないキューブから、安全な守るべきキューブにテキストをコピー・アンド・ペーストすることは避けたほうが良いそうです。上の例では personal キューブから untrusted(信頼できない)キューブにデータを移したましたが、その逆の untrudtedからpersonal へのコピー・アンド・ペーストはやめたほうが良いということです。1
ショートカットキーの変更
グローバル・クリップボードの操作のショートカットキーはデフォルトでは Ctrl + Shift + C 及び Ctrl + Shift + V ですが、これらを変更することもできます。画面左上 - Qubes Tools - Qubes Global Config を選択します。
Qubes OS Global Configのウィンドウ内の左側ペインから Clipboard をクリックして、Copy keyboard shortcut と Paste keyboard shortcutのドロップダウンメニューの中から好みのものに変更できます。これらの設定変更はログアウト・ログインすると有効になるようです。
Dom0のテキストを他のキューブにコピー・アンド・ペースト
Dom0のテキストを他のキューブにコピー・アンド・ペーストする場合は今までのやり方と少しだけ違います。Dom0からキューブYにテキストをコピー・アンド・ペーストしたい場合は以下のようにやります。今までと違うのは2.のところです。
- Dom0のアプリで普通にテキストを Ctrl + Cなどでコピー
- 画面右上の通知領域にあるグローバル・クリップボードのアイコン をクリックして "Copy dom0 clipboard"を選ぶ
- キューブYのアプリにフォーカスを移してから Ctrl + Shift + V を押す
- キューブYのアプリで普通にテキストを Ctrl + Vなどでペースト
以下の例では dom0 のターミナルで sudo dmesg
の中から errorの表示があるところを選んで、そのエラーメッセージを用いたインターネット検索をuntrustedキューブのFirefoxで行います。
上の画像のように調べたいエラーメッセージをハイライトしたところで、このテキストをCtrl + Cなどで普通にコピーします。つぎに画面右上の アイコンをクリックして Copy dom0 clipboard をクリックします。すると以下のポップアップの通知が出ます:
untrustedキューブのFirefoxのウィンドウにフォーカスを当て、Ctrl + Shift + V を押します。以下のメッセージが出ます。
untrustedキューブのFirefoxの検索窓のところにCtrl + Vなどでテキストをペーストして、インターネット検索します。
Dom0へのテキストのコピー・アンド・ペーストは禁止
一般のキューブから dom0にテキストをコピー・アンド・ペーストすることはセキュリティ上の理由で禁止されています。Dom0にコマンドを打ち込むのがつらくてネットからコピー・アンド・ペーストしたいことは多いと思いますが無理です。2
キューブ間のファイルのコピー・移動
あるキューブから別のキューブにファイルやディレクトリをコピーするのはファイルブラウザを使うと簡単にできます。以下では work キューブのファイルやディレクトリを他のキューブにコピーまたは移動させる例を示します。
最初に、workキューブでサンプルのファイルやディレクトリを作成しておきます。まずは workキューブのターミナルを開いてください(ターミナルの起動のやり方はこちらを参照)。
workキューブのホームディレクトリ(/home/user/)からつぎのコマンドを打ちます。
$ echo "Sample file of work qube" > sample.txt $ mkdir sample-dir $ touch sample-dir/work{1..10}
これでworkキューブのホームディレクトリに sample.txtというファイルができて、ホームディレクトリにある sample-dirというディレクトリに work1, work2, ... , work10 という10個のファイルができました。
$ ls Desktop Downloads Pictures Templates sample-dir Documents Music Public Videos sample.txt $ ls sample-dir work1 work10 work2 work3 work4 work5 work6 work7 work8 work9
つぎにworkキューブのファイルブラウザを開きます(ファイルブラウザの起動方法はこちらを参照)。
ファイルを1つコピーする例
ここではworkキューブの /home/user/sample.txt を untrustedキューブにコピーしましょう。
workキューブのファイルブラウザに表示された sample.txtのアイコンの上でマウスを右クリックします。そしてメニューから "Copy to other qube" をクリックします。
そうするとポップアップの表示が出てきて、コピー先のキューブを選ぶよう指示されます。Target の欄のドロップダウンメニューから untrusted を選択して OKボタンを押します。
untrustedキューブのファイルブラウザを開いてください。ホームディレクトリに QubesIncoming という新しいディレクトリが作成されました。その QubesIncomingディレクトリをクリックするとその中に workディレクトリが作成されています。さらに workディレクトリを開けると、sample.txtがコピーされているのがわかります。
このあと好きな場所にsampel.txtファイルを移動させます。また、今回作成されたworkディレクトリや QubesIncomingディレクトリを消しても大丈夫です。次にキューブ間のコピーまたは移動をやるとこれらのディレクトリは再び自動的に作成されます。
複数ファイルを移動させる例
今度は複数ファイルを選択しておいてから、それをコピーではなく移動させてみましょう。ここでは personalキューブに workキューブのsample-dir の中の work8, work9, work10の3つのファイルを移動させます。
workキューブのファイルブラウザで /home/user/sample-dirディレクトリを開きます。work8ファイルをクリックしたあと、Ctrlキーを押しながら work9, work10の2つのファイルを続けてクリックします。そうすると以下のように 3つのファイルが選択されます。
このとき選択されたファイルの上で、つまり青く表示が変わっている領域でマウスを右クリックします。
ドロップダウンメニューから "Move to other qube" を選択して、つぎにポップアップのウィンドウの Target欄から personalを選んでOKボタンを押します。
personalキューブがまだ起動してない場合はキューブが起動するまで少し待たされます。そして以下のようにpersonalキューブの/home/user/QubesIncoming/workディレクトリに work8, work9, work10の3つのファイルが移動しました。
コマンドによるファイルのコピー・移動: qvm-copy と qvm-move
ターミナルを起動してコマンドラインを使ってキューブ間のファイルのコピーまたは移動もできます。使用するコマンドは qvm-copy と qvm-move です。
今回は workキューブから sample.txt に加えて sample-dir ディレクトリをコマンドラインを使って anon-whonixにコピーさせます。
workキューブのターミナルのホームディレクトリから以下のコマンドを打ちます。
$ qvm-copy sample.txt sample-dir
すると以下のポップアップが出てくるので Target の項目のドロップダウンメニューから anon-whonix を選択して、OKボタンを押します。
anon-whonixのターミナルからファイルとディレクトリが /home/user/QubesIncoming/work/
にコピーされたことが以下のように確認できます。
qvm-moveコマンドも同様にして利用できるので試してみてください。
セキュリティ上の注意点
公式サイトの解説によれば、セキュリティを保つためには安全でないキューブから安全なキューブへのファイルの移動・コピーはできるかぎり避けないといけません。これは、改変された画像ファイル・動画ファイル・PDFファイルなどがゼロデイ脆弱性をついて、キューブを攻撃することがありえるからです。
ゼロデイ脆弱性の可能性を考えると、改変されたファイルのサムネイルを単にファイルブラウザで表示しただけでキューブが感染するようなマルウェアもありえます。このタイプの攻撃を防ぐために、Qubes OSのデフォルトではサムネイルは表示されないようになっています。
Dom0から他のキューブへのファイルのコピー・移動: qvm-copy-to-vm と qvm-move-to-vm
Dom0から普通のキューブにファイルをコピーもしくは移動する典型例の一つは、スクリーンショットをとる場合です。スクリーンショットのツールはdom0の Screenshotというアプリケーションが用いられます。Screenshotはデフォルトでは dom0のホームディレクトリの Picturesディレクトリに撮影した画像を保存します。
Appキューブにその画像を移すとき、残念ながらGUIのツールは使用できません。 Dom0のコマンドラインから qvm-copy-to-vm または qvm-move-to-vm というコマンドを用いて dom0 から他のキューブへファイルをコピーまたは移動します。
デフォルトではPrint Screenのキー(PrtScなどの印字のあるキー)を押すとスクリーン全体の画像を撮影します。パソコンによってはファンクションキーとPtrScキーを同時押しする必要があるかもしれません。キーを押すと同時に以下のウィンドウが出現します。
アクションの項目で"保存する"が選択されたままOKボタンを押すと保存場所を確認する画面に移ります。
デフォルトでは Picutresディレクトリに保存する設定です。それでよければそのまま 保存 を押します。
PrtScキーを押してもうまく行かない場合は、画面左上 - グレーキューブ - Other - スクリーンショット を選ぶと Screenshotのアプリケーションが起動します。以下の"撮影する領域"の項目で "画面全体" のラジオボタンを選んで OKボタンを押すと、スクリーン全体が撮影されます。その後は上と同じ手続きで画像をPicuresディレクトリに保存できます。
これで dom0 のホームディレクトリの Picturesディレクトリにスクリーンショットの画像が保存されました。つぎにこの画像ファイルを personal キューブにコピーしましょう。
Dom0のターミナルを起動します(dom0のターミナルの起動方法はここを参照)。最初に lsコマンドでPicturesディレクトリにスクリーンショットの画像ファイルがあることを確認します。
$ ls Pictures/ スクリーンショット_2024-02-25_18-04-10.png
以下のコマンドでこの画像を personalキューブにコピーします。日本語のファイル名が入力できないのでタブキーで入力の補完をするか、ファイル名をコピー・アンド・ペーストしてください。
$ qvm-copy-to-vm personal Pictures/スクリーンショット_2024-02-25_18-04-10.png
personalキューブが起動していない場合は起動するまで少し待ちます。persoanlキューブの /home/user/QubesIncoming/dom0/ ディレクトリを開くとスクリーンショットがコピーされたことが確認できます。
Dom0で用いられる qvm-copy-to-vm でも複数ファイル・ディレクトリのコピーができるので確かめてみてください。また、qvm-move-to-vmではファイルやディレクトリが別のキューブにコピーではなく移動されます。
Dom0へのファイルのコピー・移動は禁止
他のキューブのファイルを dom0へコピー・移動することは原則禁止されてます。Qubes公式見解ではかなりリスキーな行為と考えられており、普通はやってはいけません。どうしても必要な場合は脚注を見てください。
Qubes デスクトップの壁紙を変更するやり方
Dom0にファイルをコピーしたくなるよくある例は、自分の好きな壁紙を使いたい場合です。しかしその壁紙をappキューブで全画面表示してスクリーンショットを取れば、結果的に画像がdom0に安全に「印刷」されるのでそれを使えばいいのです。以下にやり方の一例を示します。
パソコンのスクリーンが例えば1920 * 1080 だとすると untrustedキューブなどのFirefoxで "wallpaper 1920 * 1080" などの好きなキーワードで画像検索します。気に入った画像が見つかったらそれを表示させます。そして Alt + F11キーを押すと全画面表示されるので、そのとき PrtScキーを押してスクリーンショットを撮影してdom0のPicturesディレクトリに保存します。再び Alt + F11 を押すと全画面表示が解除されます。(Chromium系のウェブブラウザでは F11キーを押してから Alt + F11キーを押すと画像が全画面表示されます。全画面表示を解除するにはAlt + F11を押してから F11を押します。)
Dom0のターミナルから thunar &
と入力するとdom0のファイルブラウザが起動します。そこから Picturesディレクトリを開いて、さきほど撮影したファイルを見つけます。そのファイルを右クリックして "壁紙に設定(Set as wallpaper)"を選べば壁紙が変更されます。
-
ハッカーの攻撃からの防御を考えると"安全でないキューブ"から"安全を守るべきキューブ"に対してデータを持ち込まないことが重要です。他方、情報流出・プライバシー侵害を恐れる状況だと"安全を守るべきキューブ"から"安全でないキューブ"に対してデータが流れることを警戒すべきです。このセキュリティとプライバシーの相反する警戒事項の問題は結構厄介なもので判断に迷うことも多いです。
たとえばネット上のサービスを契約すると事業者から渡されたパスフレーズを保存しないといけないケースがありますが、そういうデータはやはり vault に保存したいので、ネットにつながったやや安全でないキューブから安全を守るべきvaultキューブにテキストデータを移さざるを得ないこともよくあります。↩ -
実を言うとどうしてもやりたい場合は一旦テキストをファイルに書き込んでから、dom0で複雑なコマンドを打ってそのファイルをdom0にコピーすることはできます。vaultキューブのホームディレクトリの sampletext-in-vault というファイルに書き込んだとすると、つぎのコマンドを dom0のターミナルから入力します。
$ qvm-run --pass-io vault 'cat /home/user/sampletext-in-vault' > ~/sampletext-from-vault
すると、dom0のホームディレクトリにsampletext-from-vault というファイルでコピーされます。↩