PowerShellスクリプトを使用してファイルシステムAclを管理する方法

ファイルとフォルダのNTFSアクセス許可の種類

基本的なNTFSアクセス許可と高度なNTFSアクセス許可の両方があります。 それぞれの権限を「許可」または「拒否」に設定できます。 基本的な権限は次のとおりです。

  • フルコントロール:ユーザーは、ファイルやディレクトリ、および関連するプロパティを変更、追加、移動、削除できます。 また、ユーザーはすべてのファイルとサブディレクトリのアクセス許可設定を変更できます。
  • を変更します。: ユーザーは、ファイルおよびファイルプロパティを表示および変更できます。
  • Read&Execute:ユーザーはスクリプトを含む実行可能ファイルを実行できます
  • Read:ユーザーはファイル、ファイルプロパティ、ディレクトリを表示
  • Write:ユーザーはファイルに書き込み、ディレクトリにファイルを追加できます。

高度な権限のリストは次のとおりです。

  • フォルダのトラバース/実行ファイル: ユーザーは、これらのファイルまたはフォルダに対するアクセス許可がない場合でも、フォルダ内を移動して他のファイルまたはフォル ユーザーは実行可能ファイルを実行することもできます。 トラバースフォルダーのアクセス許可は、グループまたはユーザーがグループポリシースナップインに”トラバースチェックのバイパス”権限を持っていない
  • リストフォルダ/データの読み取り:ユーザーは、フォルダ内のファイルとサブフォルダのリストだけでなく、ファイルの内容を表示することができます。
  • 読み取り属性:ユーザーは、読み取り専用か非表示かなど、ファイルまたはフォルダの属性を表示できます。
  • 書き込み属性:ユーザーは、ファイルまたはフォルダの属性を変更することができます。
  • 拡張属性の読み取り:ユーザーは、アクセス許可や作成時刻や変更時刻など、ファイルまたはフォルダの拡張属性を表示できます。
  • 拡張属性の書き込み:ユーザーは、ファイルまたはフォルダの拡張属性を変更することができます。
  • ファイルの作成/データの書き込み:”ファイルの作成”権限を使用すると、ユーザーはフォルダ内にファイルを作成できます。 (この権限はフォルダにのみ適用されます。)”データの書き込み”権限は、ユーザーがファイルに変更を加え、既存のコンテンツを上書きすることができます。 (この権限はファイルにのみ適用されます。)
  • フォルダの作成/データの追加:”フォルダの作成”権限により、ユーザーはフォルダ内にフォルダを作成できます。 (この権限はフォルダにのみ適用されます。「データの追加」権限を使用すると、ユーザーはファイルの最後に変更を加えることができますが、既存のデータを変更、削除、または上書きすることはできません。 (この権限はファイルにのみ適用されます。)
  • 削除:ユーザーはファイルまたはフォルダを削除できます。 (ユーザーがファイルまたはフォルダに対する”削除”権限を持っていない場合でも、親フォルダに対する”サブフォルダとファイルの削除”権限を持ってい)
  • 読み取り権限:ユーザーは、”フルコントロール”、”読み取り”、”書き込み”などのファイルまたはフォルダの権限を読み取ることができます。
  • 権限の変更:ユーザーはファイルまたはフォルダの権限を変更できます。
  • 所有権を取得:ユーザーはファイルまたはフォルダの所有権を取得できます。 ファイルまたはフォルダの所有者は、ファイルまたはフォルダを保護する既存のアクセス許可に関係なく、常にそのアクセス許可を変更できます。
  • Synchronize:ユーザーは同期のためにオブジェクトを使用できます。 これにより、オブジェクトがsignaled状態になるまでスレッドが待機できるようになります。 この権限はACLエディタには表示されません。 あなたはここでそれについての詳細を読むことができます。次のPowerShellスクリプトを実行すると、これらすべてのユーザー権限を見つけることができます。
    ::getnames()

    NTFS権限は明示的または継承することができます。 明示的なアクセス許可は個別に構成されたアクセス許可であり、継承されたアクセス許可は親フォルダから継承されます。 アクセス許可の階層は次のとおりです。

    • Explicit Deny
    • Explicit Allow
    • Inherited Deny
    • Inherited Allow

    NTFSアクセス許可がわかったので、それらを管理する方法を見てみましょう。

    ファイルとフォルダのACLを取得

    ファイルとフォルダの権限を管理するために使用される最初のPowerShellコマンドレットは”get-acl”です。 たとえば、オブジェクトパス”\\fs1\shared\sales”を持つフォルダのすべてのアクセス許可のリストを取得しましょう。

    get-acl \\fs1\shared\sales | fl

    PowerShell経由で完全なNTFSアクセス許可レポートを取得する場合は、NTFSアクセス許可をCSVにエクスポートする簡単なハウツーに従うことができます。

    ファイルとフォルダのコピー権限

    権限をコピーするには、ユーザーがソースフォルダとターゲットフォルダの両方を所有している必要があります。 次のコマンドは、”Accounting”フォルダから”Sales”フォルダにアクセス許可をコピーします:

    get-acl \\fs1\shared\accounting | Set-Acl \\fs1\shared\sales

    アクセス許可のコピーの前後の”get-acl”コマンドの出力からわかるように、”Sales”共有フォルダのパーミッションが変更されています。

    Set File and Folder Permissions

    PowerShellの”set-acl”コマンドレットは、ファイル、フォルダー、レジストリキーなど、指定された項目のセキュリティ記述子を変更するために使 次のスクリプトでは、ユーザー”ENTERPRISE\T”の”FullControl”権限を”Allow”に設定します。ユーザーまたはセキュリティグループに他の権限を設定する場合は、以下の表からそれらを選択します。

    適用できる基本的なアクセ

    ユーザー権限の削除

    権限を削除するには、”removeaccessrule”パラメータを使用します。 T.Simpsonの”Allow FullControl”権限を”Sales”フォルダに削除してみましょう。

    Tに注意してください。Simpsonにはまだ「Deny FullControl」権限があります。 削除するには、”Purgeaccessrules”コマンドを使用して、T.Simpsonの”Sales”フォルダに対する権限を完全に消去します。

    “PurgeAccessRules”は文字列ユーザー名では動作しません。 したがって、”Ntaccount”クラスを使用して、ユーザーアカウント名を文字列からSIDに変換しました。 また、”PurgeAccessRules”は明示的な権限でのみ機能し、継承された権限は消去されません。

    権限の継承を無効または有効にする

    継承を管理するには、”SetAccessRuleProtection”メソッドを使用します。 最初のパラメータは、親フォルダからの継承をブロックする責任があります。 それは2つの状態を持っています:”true true”と”false false”。

  • 2番目のパラメータは、現在継承されているアクセス許可を保持するか削除するかを決定します。 それは同じ2つの状態を持っています:”true true”と”false false”。

“Sales”フォルダの継承を無効にし、継承されたすべての権限も削除しましょう:p>

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($true,$false)$acl | Set-Acl \\fs1\shared\sales

今、私たちは(それが明示的に追加されたため)一つだけのアクセス許可を残しています。

この変更を元に戻し、フォルダ”Sales”の継承を再度有効にしましょう。

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($false,$true)$acl | Set-Acl \\fs1\shared\sales

ファイルとフォルダの所有権の変更

フォルダの所有者を設定する場合は、”SetOwner”メソッドを実行する必要があります。 “ENTERPRISE\J.Carter”を”Sales”フォルダの所有者にしましょう:

ユーザーアカウント名を文字列からSIDに変換するために、”Ntaccount”クラスを再度使用したことに注意してください。

“SetOwner”メソッドでは、所有者を任意のアカウントに変更することはできません。ご覧のとおり、PowerShellでNTFSアクセス許可を管理するのは非常に簡単です。 しかし、NTFSのアクセス許可も監査することを忘れないでください—データ漏洩を減らし、内部の脅威やその他のITセキュリティリスクに対抗するために、 PowerShellでNTFSアクセス許可を監査する方法の基本的なガイドを次に示します。

JeffはNetwrixのグローバルソリューションエンジニアリングのディレクターです。 彼は長年のNetwrixブロガー、スピーカー、およびプレゼンターです。 Netwrixのブログでは、Jeffは、システム管理の経験を劇的に向上させることができるライフハック、ヒントやトリックを共有しています。

コメントを残す

メールアドレスが公開されることはありません。