Windowsのicaclsコマンドでファイルの所有者を変更するTech TIPS

ファイルやフォルダの所有者を変更するにはエクスプローラのプロパティ画面の他、takeownやicacls、subinaclコマンドなどが利用できる。任意の所有者に変更するにはicaclsやsubinaclコマンドを利用する。

» 2010年06月25日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象OS:Windows Vista / Windows 7 / Windows Server 2003 / Windows Server 2008 / Windows Server 2008 R2



解説

 NTFS上に保存されているファイルやフォルダには「所有者」という属性があり、誰が所有しているオブジェクトであるかを識別するために利用されている。所有者であればアクセス権を自由に設定できるし、ディスククオータ設定などでは所有者ごとの容量を制限するためなどに利用される。

 ファイルやフォルダの所有者を確認するには、エクスプローラでそれらのプロパティを表示させ、[セキュリティ]タブの[詳細設定]ボタンをクリックする。するとセキュリティの詳細設定ダイアログが表示されるので、[所有者]タブを選ぶと確認できる(TIPS「ファイルの所有者を変更する(GUI操作編)」)。

 この所有者情報を変更する方法として、TIPS「ファイルの所有者を変更する(コマンドプロンプト編)」ではtakeown.exeコマンドを利用する方法を紹介した。これはWindows Server 2003以降で利用できるコマンドであるが、現在使用中のアカウントかAdministratorsグループにしか所有者を変更できない(これはエクスプローラのGUI画面で可能な操作と同じ)。場合によっては自分以外の所有者に変更したい場合もあるだろうが(プロファイルやユーザー環境の準備などを行うため)、そのためには別のコマンドを利用する必要がある。

 所有者を任意のユーザーやグループに変更できるコマンドとしては、icacls.exeとsubinacl.exeがある。TIPS「icaclsコマンドでファイルのアクセス制御リストACLを保存/復元する」で説明しているように、icacls.exeは主にファイルやフォルダのアクセス権(アクセス制御リスト)を変更するためのコマンドである。しかし、それだけではなく所有者の変更も可能だ。本稿ではこのコマンドを使う方法を紹介する。subinacl.exeはファイルだけでなく、それ以外のオブジェクト(レジストリやファイル共有など)に対しても利用できるなど、非常に強力なコマンドである。subinacl.exeについては今後別TIPSで詳しく紹介する。

操作方法

●Windows Server 2003 SP2向けのicacls.exeコマンドについて

 icacls.exeコマンドはWindows Server 2003(正確にはWindows Server 2003のService Pack 2)以降のWindows OSで利用できるが、Windows Server 2003 SP2に付属のものには幾つか不具合があり、何度か修正版がリリースされている。本稿執筆時点では、以下のサポート技術情報から最新の修正プログラムが入手できる。

 このページの先頭にある「この技術情報に対応する修正プログラムのダウンロードのリスト」のリンクをクリックして、最新版を入手していただきたい。Windows VistaやWindows Server 2008の場合は標準で用意されているコマンドをそのまま利用できる(Windows Server 2003向けのicacls.exeはWindows XP上でも稼働するようである)。修正プログラムのダウンロード手順については、TIPS「不具合を修正するホットフィックス修正プログラム(QFE)を入手する」を参照していただきたい。

●/setownerオプションで所有者を変更する

 icacls.exeコマンドの利用方法はicacls /?で表示される。

C:\>icacls /?
……(中略)……
ICACLS <名前> /setowner <ユーザー> [/T] [/C]
    すべての一致する名前の所有者を変更します。
……(以下省略)……



 ファイルやフォルダの所有者を変更するには、/setownerに続いて新しい所有者アカウントを指定する。実行したユーザーにオブジェクトへのアクセス権があり、さらにオブジェクトの所有者を変更する権利があれば、指定された所有者に変更できる。その権利がなければ実行は失敗するので、その場合は前出のエクスプローラのGUI画面やtakeown.exeコマンドで所有者を取得し(自分もしくはAdministratorsグループにする)、フルコントロールのアクセス権を与えるなどしてから操作する必要がある。

※ローカルのuser01ユーザーに変更する例
C:\MyDocument>icacls testdata.txt /setowner user01
処理ファイル: testdata.txt
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした

※ドメインのexample\domuser02ユーザーに変更する例
C:\MyDocument>icacls testdata.txt /setowner domuser02@example.com
処理ファイル: testdata.txt
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした

※ローカルのAdministratorsグループに変更する例(takeown.exeと同じ)
C:\MyDocument>icacls testdata.txt /setowner Administrators
処理ファイル: testdata.txt
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした

※アカウントが不明な場合のエラー
C:\MyDocument>icacls testdata.txt /setowner example\user03
アカウント名とセキュリティ ID の間のマッピングは実行されませんでした。 ……エラー
0 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした



 サブフォルダまで含めて変更する場合は、最後に/Tオプションを付ける。

C:\MyDocument>icacls *.* /setowner user01 /T ……再帰的に処理する
処理ファイル: Project01 ……処理中のファイル/フォルダ
処理ファイル: testdata.txt
処理ファイル: Project01\testdata2.txt
3 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした



 このコマンドでは、ファイルやフォルダの現在の所有者を確認することはできない。確認はエクスプローラのプロパティ画面にあるセキュリティの詳細設定ダイアログか、今後解説するsubinacl.exeコマンドを利用する。

C:\MyDocument>subinacl /file testdata.txt ……subinaclによる確認

=================================
+File C:\MyDocument\testdata.txt ……対象ファイル
=================================
/control=0x400 SE_DACL_AUTO_INHERITED-0x0400
/owner             =builtin\administrators ……所有者情報
/primary group     =example\domain users
……(以下省略)……



「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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