NTFS ボリューム内のすべてのファイルまたはフォルダーには、所有者がいます。 一部のシステムファイルは TrustedInstaller が所有し、一部は SYSTEM アカウント、その他は “Administrators” グループが所有します。 あるユーザーがファイルやフォルダーを作成した場合、そのユーザーは通常そのファイルやフォルダーのオーナーになります。
ユーザーがファイルまたはフォルダーのオーナーでない場合、またはファイルにアクセスする権限がない場合、そのオブジェクトにアクセスすると「access is denied」エラーが表示されます。 そのユーザーが管理者である場合、ファイルまたはフォルダーのプロパティ – セキュリティタブを使用して、オブジェクトの所有権を取得することができます。
この投稿では、GUI ではなくコマンドラインを使用して、ファイルまたはフォルダーの所有権を取得し、必要な権限を割り当てる方法を説明します。
Windows には Takeown.exe というコマンドライン ツールがあり、管理者のコマンド プロンプトから使用してファイルまたはフォルダーをすばやく所有者に変更することが可能です。 ここでは、コマンドラインを使用して、ファイルまたはフォルダーの所有権を取得し、アカウントに権限を割り当てる方法を説明します。
- ファイルの所有権を取得する
- Assign File Permissions
- フォルダーの所有権を取得
- Change ownership recursively:
- Assign Folder Permissions
- コマンドライン ヘルプ:
- 所有権を取得する簡単な方法
- Command Script
- 右クリック メニューに「所有権を取得」コマンドを追加する
- 追加情報
- icacls.exe はファイルまたはフォルダーの所有権を変更することもできます!
- Change ownership of a file or folder using icacls.exe
- 例です。 例1:単一のファイルまたはフォルダの所有権を変更する
- 例2:単一のファイルまたはフォルダの所有権を変更する。 フォルダ (サブフォルダ、およびファイル) の所有権を再帰的に変更する
- 所有権を TrustedInstaller に戻す
- ファイルの所有者として TrustedInstaller を設定する icacls.exe コマンドの使用
- icacls /setowner access denied?
- SetACL.exe による所有権と権限付与
- SetACL: コマンドライン引数
- 例: 所有権変更とフルコントロール許可は、次のように行います。 単一のファイルまたはフォルダーの所有権を変更する:
- 例: 再帰的に所有権を変更する:
- 例: 再帰的に必要な権限を割り当てる:
ファイルの所有権を取得する
昇格コマンド プロンプト ウィンドウを開きます。
TAKEOWN /F <filename>
<filename>をフルパスで実際のファイル名に置き換えます。
現在ログオンしているユーザーがファイルの所有者となります。
ファイルの所有者を Administrators
グループに設定するには、さらに /A
スイッチを使用します:
TAKEOWN /F <filename> /A
-
/A
現在のユーザではなく、Administrators グループに所有権を付与します。/A
が指定されない場合、ファイルの所有権は現在ログオンしているユーザに与えられる。
操作が成功した場合、次のメッセージが表示されます:
“SUCCESS: ファイル (またはフォルダー)。 “filename” now owned by user “Computer NameUser name”.”
or
SUCCESS: ファイル(またはフォルダー)。 “filename” now owned by the administrators group.
Assign File Permissions
次に、ファイルに対して管理者にフルコントロールの権限を付与するには、ICACLSを使用します。 以下は構文です:
ICACLS <filename> /grant administrators:F
例2:現在ログオンしているユーザーにFull Control権限を与えるには、このコマンドを使用します:
ICACLS <filename> /grant %username%:F
%username% は現在ログオンしているユーザーのアカウント名です。
例3: John
という名前のユーザーにフルコントロール権限を割り当てるには、このコマンドを使用します:
ICACLS <filename> /grant John:F
フォルダーの所有権を取得
次の構文を使用します:
takeown /f <foldername>
(or)
takeown /f <foldername> /a
-
/a
現在のユーザーではなく Administrators グループに所有権を付与します。/a
が指定されない場合、現在ログオンしているユーザに所有権が与えられます。
次の出力が表示されます:
SUCCESS: ファイル (またはフォルダー)。 “folder_name” now owned by user “computername³³username”
(or)
SUCCESS: The file (or) folder: now owned by user “computername³³username”: ファイル(またはフォルダー)です。 「folder_name” now owned by the administrators group.
Change ownership recursively:
フォルダーとそのサブフォルダー、および各サブフォルダー内のファイルの所有権を変更するには、この構文を使用します:
takeown /f <foldername> /r /d y
The currently logged on user is now the owner of the folder.Now the folder name by administrators group.
Administrators
グループをフォルダ、そのサブフォルダ、およびファイルの所有者に再帰的に設定するには、さらに /A
スイッチを使用します:
TAKEOWN /F <foldername> /a /r /d y
-
/R
Recurse: 指定したディレクトリとすべてのサブディレクトリのファイルに対して操作するようツールに指示します。 -
/D
prompt デフォルトは、現在のユーザーがディレクトリに対して “list folder” 許可を持っていない場合の回答です。 これは、サブディレクトリに対して再帰的に操作(/R)しているときに発生します。
Assign Folder Permissions
次に、Administrators グループにフォルダのフルコントロール権限を割り当てるには、この構文を使用します:
icacls <foldername> /grant administrators:F /T
/Tパラメータは、そのフォルダ内のすべてのサブディレクトリおよびファイルを通して操作が実行されるように追加されています。
コマンドライン ヘルプ:
Takeown.NET Framework の完全な使用情報を知るには、次のコマンドを使用します。
takeown /?
icacls /?
所有権を取得する簡単な方法
Command Script
所有権を取得するプロセスをさらに簡単にするために、Microsoft の Tim Sneath は、ディレクトリの所有権と管理者へのフル コントロール許可を割り当てる .CMD ファイル (Windows コマンド スクリプト) を提供しています。 詳しくは、Timの記事「Secret #11」をご覧ください。 削除できないものを削除する」
右クリック メニューに「所有権を取得」コマンドを追加する
これも Windows Vista 以降では、以前説明した特別な runas 動詞を使用します (REF RunAs).
via WinMatrix.com
ダウンロードした takeown_context.reg をデスクトップに保存しておくことです。 ファイルを右クリックし、[統合]を選択します。 確認を求められたら、[はい]をクリックします。 これにより、ファイルおよびディレクトリのコンテキスト メニューに所有権を取得するという拡張コマンドが追加されます。 このコマンドにアクセスするには、SHIFTキーを押したままファイルまたはフォルダーを右クリックします。
(Windows で右クリックのコンテキスト メニューからファイルまたはフォルダーの所有権を取得するで、この調整について詳しく説明しています。)
追加情報
上記のセクションは、必要な事柄をほとんど網羅しています。
icacls.exe はファイルまたはフォルダーの所有権を変更することもできます!
Takeown.exe と Icacls.exe は Windows に組み込まれた 2 つのツールで、それぞれファイルまたはフォルダー所有権を変更したりアクセス制御権限を割り当てたりすることができます。 Takeown.exe は、現在ログインしているユーザー アカウントをオブジェクト (ファイルまたはフォルダー) の所有者として設定します。
ただし、Takeown.exe では、他のアカウントをオブジェクトの所有者として設定することはできません。 3897>
Change ownership of a file or folder using icacls.exe
Takeown.exe の代わりに icacls.exe のコマンドライン引数に /setowner
を指定して使用することが可能です。 以下は、icacls.exe を使用してファイルまたはフォルダーの所有権を変更するコマンドライン構文です:
icacls "file_or_folder_name" /setowner "NT Service\TrustedInstaller"
例です。 例1:単一のファイルまたはフォルダの所有権を変更する
icacls "D:\Annual Reports20\November" /setowner "John"
icacls "D:\Tax Audit\November.xlsx" /setowner "John"
icacls "D:\Tax Audit\November.xlsx" /setowner "Administrators"
操作が成功した場合、次のメッセージが表示されます:
processed file: file_or_folder_nameSuccessfully processed 1 files; Failed processing 0 files
例2:単一のファイルまたはフォルダの所有権を変更する。 フォルダ (サブフォルダ、およびファイル) の所有権を再帰的に変更する
フォルダとそのサブフォルダ、およびすべてのサブフォルダ内のすべてのファイルの所有権を再帰的に変更するには、さらに /T
スイッチ (traverse) を使用します:
icacls "folder_name" /setowner "Administrators" /T
-
/T
はこの操作が名前で指定したディレクトリ以下のすべての一致するファイル/ディレクトリに対して実行されることを表します。
上記のコマンドは、フォルダ、そのサブフォルダ、およびすべてのサブフォルダ内のすべてのファイルの所有者として TrustedInstaller を設定します。
所有権を TrustedInstaller に戻す
問題を解決するために、XML などのデータファイルまたは TrustedInstaller が所有するレジストリキーを変更しなければならないことがあります。 そのためには、まず、ファイル、フォルダ、またはレジストリキーの所有権を取得する必要があります。
ファイルまたは設定を変更した後、TrustedInstaller が以前または元の所有者である場合、所有権を TrustedInstaller に戻す必要があります。 Windows Modules Installer サービスまたは TrustedInstaller は、Windows 更新プログラムおよびオプションのコンポーネントのインストール、変更、および削除を可能にします。
- ファイルまたはレジストリ キーを右クリックし、[アクセス権] をクリックします。
- [詳細設定] をクリックして、[セキュリティの詳細設定] ダイアログを表示します。
- [ユーザーまたはグループの選択]ダイアログで、「
NT SERVICE\TrustedInstaller
」と入力してEnterキーを押します。
- [適用、OK]をクリックします。
これにより、オブジェクト(ファイル、フォルダ、レジストリキー)の所有権がTrustedInstallerまたはWindows Modules Installerに変更されました。
ファイルの所有者として TrustedInstaller を設定する icacls.exe コマンドの使用
管理コマンド プロンプト ウィンドウから、次のコマンド ライン構文を使用します:
icacls "path\filename" /setowner "NT Service\TrustedInstaller"
例:
icacls "C:\Windows\PolicyDefinitions\WindowsStore.admx" /setowner "NT Service\TrustedInstaller"
TrustedInstaller は現在ファイル WindowsStore を所有しています。admx.
icacls /setowner access denied?
時々 icacls.exe /setowner
コマンドラインで次のエラーが発生することがあります:
filename: Access is denied.Successfully processed 0 files; Failed processing 1 files
NTFS ハードリンクに遭遇したときに発生する可能性があります。 このエラーは通常、Windows ディレクトリの保護されたファイルの所有権を変更しようとしたときにポップアップ表示されます (例: C:\Windows\Notepad.exe
)。
たとえば、Notepad.exe ファイルには 2 つのハードリンクされたファイルがあり、次のコマンドを使用して確認できます:
fsutil.exe hardlink list C:\Windows\notepad.exe
メモ帳.exe は、ファイル システムで保護されていることが確認できます(Notepad.exe は、ハードリンクされたファイルの 1 つのボリュームを参照するファイル システムの表現です)。
C:\Windows\System32\Notepad.exeC:\Windows\WinSxS\amd64_microsoft-windows-notepad_31bf3856ad364e35_10.0.19041.488_none_4cea9379ceedab35\notepad.exe
これらのハードリンクを処理する際、icacls.exe /setowner
コマンドは ACCESS_DENIED
エラーを発生します。
icacls.exe のドキュメントには、「このオプションは所有権の変更を強制しないので、そのためには takeown.exe ユーティリティを使用します。”
Icacls を使用して所有権を設定する際に “Access is Denied” エラーが発生した場合、Takeown.exe、SubInACL、またはサード パーティの SetACL.exe (次項参照) コマンドライン ユーティリティに頼らなければならないかもしれない。
SetACL.exe による所有権と権限付与
SetACL.exe は、(ヘルゲスクライン社の)サード パーティ コマンド ライン ツールであり、このツールを使用して所有権を取得することができます。
SetACL: コマンドライン引数
先に進む前に、SetACL を使用してファイル/レジストリの所有権と権限を変更するコマンドライン構文を確認しましょう。
SetACL -on objectname -ot objecttype -actn action
-
-on
: SetACL が操作すべきオブジェクトのパスを指定します (例:, ファイル、レジストリ キー、ネットワーク共有、サービス、またはプリンタ) -
-ot
: オブジェクトの種類を指定します。 ファイルまたはフォルダの所有権またはアクセス権を変更するには、オブジェクトの種類file
を使用します。 レジストリキーの場合は、オブジェクトタイプreg
-
-actn
: 指定されたオブジェクトに対してSetACLが何を行うべきかを指定します。 所有権を取得するには、アクションをsetowner
と設定します。 権限を変更するには、アクションをace
と設定します。 -
-ownr
: この形式で受託者(ユーザーまたはグループ)の名前または SID を指定します – 例:"n:Administrators"
(オブジェクト、タイプ、サポートされるアクションの全リストは SetACL 文書を参照)
所有権を変更してフルコントロール許可を与えるには、次の例を示します:
例: 所有権変更とフルコントロール許可は、次のように行います。 単一のファイルまたはフォルダーの所有権を変更する:
setacl.exe -on c:\windows\notepad.exe -ot file -actn setowner -ownr "n:NT Service\TrustedInstaller"setacl.exe -on c:\windows\notepad.exe -ot file -actn setowner -ownr "n:Administrators"setacl.exe -on c:\windows\notepad.exe -ot file -actn setowner -ownr "n:John"setacl.exe -on "d:\test" -ot file -actn setowner -ownr "n:NT Service\TrustedInstaller"setacl.exe -on "d:\test" -ot file -actn setowner -ownr "n:Administrators"setacl.exe -on "d:\test" -ot file -actn setowner -ownr "n:John"
例: 再帰的に所有権を変更する:
Option 1: フォルダとそのサブフォルダの所有権を再帰的に設定する (ファイルでは不可) には、次の例のいずれかを使用します:
setacl.exe -on d:\test -ot file -actn setowner -ownr "n:NT Service\TrustedInstaller" -rec contsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Administrators" -rec contsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Ramesh" -rec cont
-
-rec
– 再帰は有効になっています。 -
cont
– 再帰して、ディレクトリのみを処理します。
Option 2: フォルダとそのサブフォルダ内のファイルの所有権を再帰的に設定するには(フォルダではありません)、以下の例のいずれかを使用します:
setacl.exe -on d:\test -ot file -actn setowner -ownr "n:NT Service\TrustedInstaller" -rec objsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Administrators" -rec objsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Ramesh" -rec obj
-
-rec
– 再帰は許可されます。 -
obj
– 再帰して、ファイルのみを処理します。
Option 3: フォルダ、そのサブフォルダ、およびファイルの所有権を再帰的に設定するには、次の例のいずれかを使用します:
setacl.exe -on d:\test -ot file -actn setowner -ownr "n:NT Service\TrustedInstaller" -rec cont_objsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Administrators" -rec cont_objsetacl.exe -on d:\test -ot file -actn setowner -ownr "n:Ramesh" -rec cont_obj
-
-rec
– 再帰は有効です。 -
cont_obj
-再帰し、ディレクトリおよびファイルを処理します。例:-rec
所有権を取得したら、オブジェクトに必要な権限を割り当てることができます。 以下はその例です。
単一のファイルまたはフォルダーにアクセス許可を割り当てるには、以下の例のいずれかを使用します:
setacl.exe -on "d:\test\sample.xlsx" -ot file -actn ace -ace "n:Administrators;p:full"setacl.exe -on "d:\test\sample.xlsx" -ot file -actn ace -ace "n:John;p:full"setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full"setacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full"
例: 再帰的に必要な権限を割り当てる:
オプション 1: フォルダとサブフォルダ (ファイルではない) に対して再帰的に割り当てるには、次の例のいずれかを使用します:
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec contsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec cont
-
-rec
– 再帰は有効になっています。 -
cont
– 再帰して、ディレクトリのみを処理します。
Option 2: フォルダおよびサブフォルダ内のファイル (フォルダではありません) に対して再帰的に処理するには、以下の例のいずれかを使用します:
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
-
-rec
– 再帰は許可されます:setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
-rec
-再帰的な処理を許可します:setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec obj
-再帰的な処理を許可しますか?
-
obj
– 再帰して、ファイルのみを処理します。
Option 3: フォルダとそのサブフォルダ、およびファイルに対して再帰的に処理するには、次の例のいずれかを使用します:
setacl.exe -on "d:\test" -ot file -actn ace -ace "n:Administrators;p:full" -rec cont_objsetacl.exe -on "d:\test" -ot file -actn ace -ace "n:John;p:full" -rec cont_obj
-
-rec
– recursion が有効になっていること。 -
cont_obj
– 再帰して、ディレクトリとファイルを処理します。
SetACL 公式ドキュメントで、その全機能について確認することができます。 しかし、ファイルやフォルダの所有権 & のパーミッションを設定するには、takeown.exe と icacls.exe でほとんどのユーザーには十分すぎるほどです。
-