PowerShell 所有者と権限の変更方法
PowerShellでのファイルやフォルダの所有者変更方法と権限の変更方法。
まずLinuxでのコマンドでいうと「所有者変更:chown」「権限変更:chmod」のコマンドに相当するものです。
【所有者変更】
Linux:chown
Windows:takeown
【権限変更】
Linux:chmod
Windows:icacls
よく使いそうな使用方法は以下に、それぞれのコマンドのヘルプを後半に載せますのでそちらを参考に。
◎所有者変更
takeown /s PC名 /u ユーザ名 /f フォルダ名
※「/r」で再帰的な変更の実施
◎権限付与
icacls ファイル・フォルダ名 /grant ユーザ名:権限名
※「/t」で再帰的な変更の実施
権限名はこれらを指定します。
- N – アクセス権なし
- F – フルアクセス権
- M – 変更アクセス権
- RX – 読み取りと実行のアクセス権
- R – 読み取り専用アクセス権
- W – 書き込み専用アクセス権
- D – 削除アクセス権
まずは所有者と権限を確認するファイル構成は以下の状態とします。
PS C:\work> tree /F
フォルダー パスの一覧: ボリューム TIH0111000A
ボリューム シリアル番号は 041E-C592 です
C:.
│ file1.txt
│
└─dir1
file11.txt
そして以下のコマンドで所有者と権限の確認ができます。
PS C:\work> Get-ChildItem . -Recurse | Get-ACL
ディレクトリ: C:\work
Path Owner Access
---- ----- ------
dir1 DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]
file1.txt DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]
ディレクトリ: C:\work\dir1
Path Owner Access
---- ----- ------
file11.txt DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]
◎所有者変更:takeown
PS C:\work> takeown /?
TAKEOWN [/S システム [/U ユーザー名 [/P [パスワード]]]]
/F ファイル名 [/A] [/R [/D プロンプト]]説明:
このツールを使うと、ファイルの所有権を割り当て直して、前回アクセスが拒否
されたファイルへのアクセスを管理者が回復できるようにします。パラメーター一覧:
/S システム 接続先のリモート システムを指定
します。/U [ドメイン\]ユーザー コマンドを実行するユーザー
コンテキストを指定します。/P [パスワード] 指定のユーザー コンテキストのパスワード
を指定します。
省略すると入力が促されます。/F ファイル名 ファイル名またはディレクトリ名のパターンを
指定します。ワイルドカード "*" を使って
パターンを指定できます。
'共有名\ファイル名' も使用できます。/A 現在のユーザーではなく、管理者に所有権を
与えます。/R 再帰: 指定されたディレクトリとすべてのサブ
ディレクトリにあるファイルに対してツールを
実行します。/D プロンプト ユーザーがディレクトリに対し "フォルダーの一覧"
アクセス許可を持っていない場合、既定の答えが
使用されます。これはサブディレクトリに対し 再帰的(/R) に操作を行っている場合に適用され
ます。有効な値は "Y" (所有権を得る)、および "N" (スキップ) です。/SKIPSL シンボリック リンクに接続しません。
/R と同時には指定できません。/? このヘルプを表示します。
注意: 1) /A が指定されていない場合は、ファイルの所有権は現在
ログインしているユーザーに与えられます。2) "?" や "*" を使った混合パターンはサポートされていません。
3) /D を使うと、確認プロンプトは表示されません。
例:
TAKEOWN /?
TAKEOWN /F lostfile
TAKEOWN /F \\system\share\lostfile /A
TAKEOWN /F directory /R /D N
TAKEOWN /F directory /R /A
TAKEOWN /F *
TAKEOWN /F C:\Windows\System32\acme.exe
TAKEOWN /F %windir%\*.txt
TAKEOWN /S システム /F MyShare\Acme*.doc
TAKEOWN /S システム /U ユーザー /F MyShare\MyBinary.dll
TAKEOWN /S システム /U ドメイン\ユーザー /P パスワード /F share\ファイル名
TAKEOWN /S システム /U ユーザー /P パスワード /F Doc\Report.doc /A
TAKEOWN /S システム /U ユーザー /P パスワード /F Myshare\*
TAKEOWN /S システム /U ユーザー /P パスワード /F Home\Logon /R
TAKEOWN /S システム /U ユーザー /P パスワード /F Myshare\directory /R /A
◎権限変更:icacls
PS C:\work> icacls /?
ICACLS <名前> /save <ACL ファイル> [/T] [/C] [/L] [/Q]
名前が一致するすべてのファイルとフォルダーの DACL を <ACL ファイル> に
格納して、後で /restore で指定できるようにします。SACL、所有者、整合性
ラベルは保存されません。ICACLS <ディレクトリ> [/substitute <旧 SID> <新 SID> [...]] /restore <ACL ファ
イル> [/C] [/L] [/Q]
格納されている DACL を <ディレクトリ> 内のファイルに適用します。ICACLS <名前> /setowner <ユーザー> [/T] [/C] [/L] [/Q]
すべての一致する名前の所有者を変更します。このオプションでは、所有権の
変更を強制することはできません。所有権を変更するには、takeown.exe
ユーティリティを使用してください。ICACLS <名前> /findsid <SID> [/T] [/C] [/L] [/Q]
<SID> が明示されている ACL を含むすべての一致する名前を検索します。ICACLS <名前> /verify [/T] [/C] [/L] [/Q]
ACL が正規の形式ではないか長さが ACE 数と一致しないすべてのファイルを
検索します。ICACLS <名前> /reset [/T] [/C] [/L] [/Q]
すべての一致するファイルについて、ACL を継承された既定の ACL と置換します。ICACLS <名前> [/grant[:r] <SID>:perm[...]]
[/deny <SID>:perm [...]]
[/remove[:g|:d]] <SID>[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]/grant[:r] <SID>:perm は、指定されたユーザー アクセス権を付与します。
:r を指定すると、以前に付与されたすべての明示的なアクセス許可は新しい
アクセス許可に置き換えられます。
:r を指定しない場合、新しいアクセス許可は以前に付与された明示的な
アクセス許可に追加されます。/deny <SID>:perm は、指定されたユーザー アクセス権を明示的に拒否します。
指定されたアクセス許可に対応する明示的な拒否 ACE が追加され、明示的な
許可内容に含まれる同じアクセス許可は削除されます。/remove[:[g|d]] <SID> は、ACL 内にあるすべての <SID> を削除します。
:g を指定すると、その SID に対して許可されたすべての権限を ACL から
削除します。
:d を指定すると、その SID に対して拒否されたすべての権限を ACL から
削除します。/setintegritylevel [(CI)(OI)] レベルは、すべての一致するファイルに整合性
ACE を追加します。このレベルは次の 1 つとして指定されます。
L[ow]
M[edium]
H[igh]
整合性 ACE の継承オプションは、レベルの前に配置でき、
ディレクトリに対してのみ適用されます。/inheritance:e|d|r
e - 継承を有効にします。
d - 継承を無効にし、ACE をコピーします。
r - 継承された ACE をすべて削除します。
注意:
<SID> は数値形式またはフレンドリ名形式で指定できます。数値形式の場合は、
SID の始めに * を付けます。/T は、<名前> で指定されたディレクトリ以下のすべての一致するファイルと
ディレクトリに対してこの処理が実行されることを指定します。/C は、どのようなファイル エラーが発生してもこの処理が続行されることを
指定します。ただしエラー メッセージは表示されます。/L は、この処理がターゲットではなくシンボリック リンク自体に対して実行
されることを指定します。/Q は、icacls が成功のメッセージを抑制することを指定します。
ICACLS は、ACE エントリの正規の順序を維持します:
明示的な拒否内容
明示的な許可内容
継承された拒否内容
継承された許可内容perm はアクセス許可マスクであり、次の 2 種類の方法で指定できます:
単純な権限を列挙:
N - アクセス権なし
F - フル アクセス権
M - 変更アクセス権
RX - 読み取りと実行のアクセス権
R - 読み取り専用アクセス権
W - 書き込み専用アクセス権
D - 削除アクセス権
特定の権限をコンマ区切りでかっこ内に列挙:
DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データの読み取り/ディレクトリの一覧表示
WD - データの書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み
継承権限はどちらの形式の前にも配置でき、ディレクトリにのみ適用され
ます:
(OI) - オブジェクト継承
(CI) - コンテナー継承
(IO) - 継承のみ
(NP) - 継承を適用しない
(I) - 親コンテナーから継承した権限例:
icacls c:\windows\* /save <ACL ファイル> /T
- c:\windows より下にあるすべてのファイルとサブディレクトリの ACL を
<ACL ファイル> に保存します。icacls c:\windows\ /restore <ACL ファイル>
- <ACL ファイル> 内のファイルのうち c:\windows とそのサブディレクトリ
内に存在するすべてのファイルの ACL を復元します。icacls <ファイル> /grant Administrator:(D,WDAC)
- Administrator ユーザーに、<ファイル> に対する削除および DAC 書き込み
のアクセス許可を与えます。icacls <ファイル> /grant *S-1-1-0:(D,WDAC)
- SID S-1-1-0 によって定義されたユーザーに、<ファイル> に対する削除
および DAC 書き込みのアクセス許可を与えます。
|