連載
» 2017年03月22日 05時00分 公開

その知識、ホントに正しい? Windowsにまつわる都市伝説(79):USBメモリをフォーマットできる人、できない人 (2/2)

[山市良,テクニカルライター]
前のページへ 1|2       

答えは「ボリュームのアクセス許可」にあり!

 前出の画面2では、標準ユーザーでログオンし、「エクスプローラー(Explorer.exe)」のコンテキストメニュー(右クリックメニュー)からメディアをフォーマットしようとしたところ、UACのプロンプトに阻まれました。

 コマンドプロンプトから「FORMAT」コマンドを実行してフォーマットしようとすれば、「十分な特権がないので、アクセスは拒否されました」と表示され、フォーマットは失敗します。しかし、“あること”をすると以下の画面3のようにフォーマットが成功します。

画面3 画面3 同じコマンドプロンプト内で「FORMAT」コマンドの実行結果が異なるのは、途中でリモートデスクトップ接続からローカルログオンに切り替えたから

 画面3の同じコマンドプロンプト内の最初のFORMATコマンドは失敗し、2番目のコマンドが成功している理由は、実は「リモートデスクトップ経由でログオンしたセッション」であるか、「ローカルコンソールへの対話的なログオンセッション」であるかの違いでした。

 リモートデスクトップ接続を使用して標準ユーザーがPCにログオンした場合、そのPCに接続されたUSBメモリは標準ユーザーの権限ではフォーマットできません。ところが、ここでリモートデスクトップ接続を「切断」し、ローカルコンソールから同じセッションに再接続すると、2番目のFORMATコマンドのように成功します(リモートデスクトップ接続からログオフして、ローカルコンソールからログオンするのでも同じ)。

 リモートデスクトップ接続とローカルログオンで、リムーバブルメディアに対する挙動が異なるのは、リムーバブルメディアのボリュームに設定された「既定のアクセス許可」に関係しています。しかし、Windowsには「ボリュームのアクセス許可」(セキュリティ記述子)を設定したり、参照したりするインタフェースは用意されていません。

 そこで今回は、マイクロソフトのツール集「Windows Sysinternals」の「AccessChk」ツールを使ってみたいと思います。AccessChkはユーザーやグループが、ファイル、ディレクトリ、ボリューム、レジストリキー、サービス、プロセス、その他のさまざまなオブジェクトに対して持つアクセス許可の要約や詳細なセキュリティ記述子をダンプするユーティリティーです。

  • AccessChk(Windows Sysinternals:マイクロソフト TechNet)

 ボリュームのアクセス許可の要約を参照するには、次のような形式でドライブ文字(以下の例では「E:」)を指定します。完全なセキュリティ記述子を確認するには、「-l」オプションを追加します。

accesschk \\.\E:


 読み取りアクセス許可は「R」、書き込みアクセス許可は「W」で示されます。「-l」オプションを付けない場合、このアクセス許可は要約であるため、フルコントロールのアクセス許可も「RW」と表示されます。これはボリューム(ドライブ)に対するアクセス許可であり、そのボリューム上のファイルシステムのアクセス許可とは関係ないので、アクセス許可を設定できないFATやFAT32のUSBメモリにもボリュームのアクセス許可は存在します。

 Windows 10でOSドライブ(C:)とUSBメモリ(E:)に対して実行すると、以下の画面4のようになります。

画面4 画面4 Windows Vista以降(この画面はWindows 10)のOSドライブ(C:)とUSBドライブ(E:)のボリュームのアクセス許可

 Windows Vista以降であれば、同様のはずです。Windows XPでUSBメモリ(E:)に対して実行すると、以下の画面5のようになります。

画面5 画面5 Windows XPのUSBドライブ(E:)のボリュームのアクセス許可

 USBメモリのボリューム(E:)のアクセス許可を比較してみてください。Windows 10(つまり、Windows Vista以降)の方には、「NT AUTHORITY\INTERACTIVE」に対する「RW」アクセス許可が追加されています。

 「NT AUTHORITY\INTERACTIVE」には、ローカルコンソールから対話的にログオンしたユーザーのセッションは含まれますが、リモートデスクトップ接続でログオンしたユーザーのセッションは含まれません。そのため、リモートデスクトップ接続の標準ユーザーのセッションでは、Windows XPと同じように「Everyone」に対する「R(読み取り)」のアクセス許可が適用され、標準ユーザーはUSBメモリをフォーマットできなかったのです。

 ちなみに、Windows Sysinternalsのユーティリティーは、Windows NT時代から続く歴史のあるものですが、最新バージョンは古いOSでは動かないものも出始めています。例えば、最新のAccessChk(現時点では6.10)はWindows XPで動作しなかったため、手元にあった古いバージョン(5.01)を使う必要がありました。他に動かなくなってしまったものについては、筆者の個人ブログにまとめておきました。

筆者紹介

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

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


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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