ユーザーフレンドリーとはいえない、Hyper-Vの仮想ハードディスクに必須のアクセス許可その知識、ホントに正しい? Windowsにまつわる都市伝説(229)

WindowsおよびWindows ServerのHyper-Vでは、仮想マシンを起動するために、仮想マシンに割り当てられた「仮想ハードディスク」(VHD、VHDX)に特殊なアクセス許可設定が必要です。その必須のアクセス許可、人が扱うのは少し厄介な代物です。

» 2023年02月15日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

同名の仮想ハードディスクを単純に入れ替えるだけではNG!

 仮想マシンのIDEコントローラーまたはSCSIコントローラーに接続される「仮想ハードディスク」(.vhd、.avhd、vhdx、.avhdx)には、特殊なアクセス許可が設定されています。

 例えば、ある仮想マシンに割り当てられた既存の仮想ハードディスクと、同じファイル名の仮想ハードディスクを別に作成し、仮想ハードディスクのファイルを入れ替えたとしましょう。仮想マシンの設定としては、同じ仮想ハードディスクのパスを参照しているため、変更はないはずです。しかし、仮想マシンを起動しようとすると、「'<仮想ハードディスクのパス>'を開くためのアクセス許可がありません。エラー:'アクセスが拒否されました'。」というエラーメッセージが表示され、失敗します(画面1画面2)。

画面1 画面1 現在の仮想ハードディスク「g2vm.vhdx」を「g2vm_back.vhdx」にリネームし、別に作成した仮想ハードディスク「g2vm.vhdx」と入れ替えてみる
画面2 画面2 仮想ハードディスクを開くためのアクセス許可がないため、起動に失敗する

もともとの既定のアクセス許可はどうなっている?

 仮想ハードディスクを入れ替える前のもともとの仮想ハードディスクに設定されていた「アクセス許可」(アクセス制御リスト、ACL)を確認してみると、一般的ではないユーザー名/グループ名に対する「読み取り」と「書き込み」の「アクセス許可設定」(アクセス制御エントリ、ACE)が2つ存在することが分かります(画面3)。

画面3 画面3 仮想ハードディスクが接続されている仮想マシンの仮想マシンIDに対するアクセス許可設定の方は、仮想マシンの起動に必須

 1つ目のアカウント「不明なアカウント(S-1-15-3-1024-2268835264-3721307629-241982045-173645152-1490879176-104643441-2915960892-1612460704)」は、怪しげに見えますが、「仮想マシンワーカープロセス(vmwp.exe)」に関連する「ケーパビリティ(機能)SID」と呼ばれるもので、フレンドリ名が存在しないため、「不明なアカウント」として表示されます。こちらは仮想マシンの起動には必須ではありませんが、既定で設定されます。

 もう1つのアカウント「38073C6B-4CCC-B0A0-1E0D3C8383B2」の方は、仮想マシンの「仮想マシンID」であり、以下のサポート情報にあるように、こちらのアクセス許可は仮想マシンの起動に必須となっています。仮想マシンの仮想マシンIDは、「Get-VM」コマンドレットで確認できます。これらのアクセス許可設定の詳細は、「CACLS」コマンドでも確認できます(前出の画面3)。

仮想マシンを起動できるようにアクセス許可を復元するには?

 仮想マシンIDに対するアクセス許可は必須ですが、エクスプローラーのUIから設定することはできません。仮想マシンIDを入力したとしても、一致するオブジェクトは見つかりません(画面4)。また、たとえオブジェクトが見つかったとしても、前出の画面3のCACLSコマンドが示すアクセス許可を適切に設定することはできそうもありません。

画面4 画面4 アクセス許可設定を手動で設定しようとしてもオブジェクトが見つからない

 では、どうすればよいのでしょうか。最も簡単な方法は、「Hyper-Vマネージャー」で仮想マシンの設定を開き、仮想ハードディスクを再割り当て(別の仮想ハードディスクを選択し、その後、目的の仮想ハードディスクに再設定、または現在の割り当てを削除して改めて追加)することです(画面5)。これで、「不明なアカウント」と仮想マシンIDのアクセス許可が適切に設定されます。PowerShellの「Add/Set-VMHardDiskDrive」コマンドレットで再設定した場合も、同様に適切なアクセス許可が設定されます。

画面5 画面5 「Hyper-Vマネージャー」で仮想ハードディスクを再設定すると、適切なアクセス許可が設定される

 仮想マシンIDに対するアクセス許可については、以下のPowerShell Galleryで公開されている「Restore-VMPermission」を使用して復元することもできます(画面6)。

PS> Install-Script -Name Restore-VMPermission
PS> Restore-VMPermission -VM <仮想マシン名>
画面6 画面6 「Restore-VMPermission」コマンドレットを使用して仮想マシンIDに対するアクセス許可を復元する

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。