仮想マシンを自動的に作成して実行するスクリプトがあります。多くの人がこのスクリプトを使用しています。このスクリプトを呼び出して、オペレーティングシステムをインストールするためのPCIまたはUSBデバイス、ISO、およびスクリプトがsudo qemu-system-x86_64
適切なパラメータで実行されるかどうかなど、いくつかの情報を提供するだけです。
したがって、分析すると、次のように私のスクリプトを呼び出すことができます。
./create-vm.sh /home/me/os-images/windows10.iso
これは素晴らしい作品です。
sudo virt-install ...
しかし、今はもう一歩進んで、代わりに使用したいと思います。これにより、isoファイルにアクセスできなくなるsudo qemu-system-x86_64 ...
ため、大きな問題が発生します。おそらくsudoで実行してもroot権限を放棄してuserを利用してvirt-install
そうなのに…qemu
今私は難しい決断をしなければなりません。
- 私はありますか?移動するISOファイルを
/var/lib/libvirt/images
? (いいえ。ユーザーはファイルが現在位置する正確な場所にある必要があるためです。) - 私はありますか?コピーISOを
/var/lib/libvirt/images
? (いいえ。ユーザーのディスク容量が不足している可能性があるため、リソースの無駄のように見えます。) - 設定しますか
user = root
、それともuser = me
入りますか/etc/libvirt/qemu.conf
? (いいえ、これはグローバル設定であり、ユーザーが実行している他のqemu操作を妨げる可能性があるためです。 - 試してみましたが、libvirtd.service
競合が発生します。) - isoファイルのグループをqemuユーザーに追加しますか? (いいえ、不要な副作用がある可能性があるため、ユーザーが望んでいないときにqemuにさらにアクセスを与えることができます。
- isoファイルの所有者をに変更しますか
qemu
? (いいえ、望ましくない副作用がある可能性があるためです。 - しようとすると依然として権限拒否エラーが発生します。おそらくSElinuxによるものです)。 - isoをマウントし、qemuユーザーがマウントポイントを使用できるようにしますか? (いいえ。isoファイルは非常に複雑になる可能性があり、一部のデータはマウントポイントで使用できないためです。)
- isoを含むフォルダをマウントしますか? (いいえ。isoファイルにはまだ同じ所有者/グループがあるためです。)
良い解決策が見つからないようです。今どうすればいいですか?本当にvirt-install
少し必要ですqemu-system-x86_64
。
注:実際にはisoイメージだけでなく、フロッピーイメージ、ドライバーを含む他のisoファイル、およびACPIテーブルファイルもあります。これらすべてのファイルに対して権限エラーが発生しますvirt-install
。
答え1
chown qemu:qemu $ISO
これがうまくいかない唯一の理由は、qemu
$ HOMEに対する検索権限がないからです。
virt-installはこの状況を検出しようとし、警告を出力します。 virt-managerは、さらに一歩進んでsetfacl --modify user:qemu:x $DIR
isoにつながるチェーンのおよそすべてのディレクトリを使用して、試みと修正を提供します。 libvirt chown'ingとselinuxの自動表示ファイル(デフォルトの動作)でVMを起動するのに十分なはずです。はい、この動作には望ましくない副作用がありますが、root以外のユーザーで仮想マシンを実行したい場合は、これを解決する方法はありません。
つまり、1人のユーザーに完全に属する仮想マシンが必要な場合は、デフォルトのqemu:///system libvirt URIと比較してqemu:///sessionを見てください。違いの説明は次のとおりです。。この場合、libvirtdにホスト管理アクセス権が必要なPCIパススルーなどのエントリにアクセスすることはできません。