共有フォルダ作成や変名を禁止する

共有フォルダを作ったけど、ユーザに好き勝手にされないためのメモ

共有フォルダの悩み

共有フォルダを作って部門に開放すると、うちの会社は子供の集、じゃなかった自由な社風なので禁止されていないことはやって良い扱いをされてしまいます。

勝手にフォルダを作られたり、フォルダの名前が知らないうちに変わっていたり。
…メンテナンスが面倒だろうが!

とういことで対策することにしました。

フォルダの変名を禁止する

フォルダの「削除」を拒否すればできます。

手動でのやり方

  1. セキュリティの詳細設定をひらく
  2. 追加
  3. 「プリンシパルの設定」を選び、設定するユーザー/グループを設定
    「種類:拒否,適用先:このフォルダーのみ」を選択
  4. 「高度なアクセス許可を表示」をクリック
    →「削除」をクリックしてその他のチェックはすべて外す。
  5. 適用

PowerShellで行う

おんなじ作業を繰り返す場合はscriptにしておきたいですね、ということでPowerShell

フォルダ作成を禁止する

「フォルダの作成/データの追加」を拒否します。

手動でのやり方

上記と同じ手順で最後のところだけ「フォルダの作成/データの追加」にすればできます。

Powershellで行う

アクセスコントロールでCreateDirectoriesをDenyすればできます。

あとの手順は同じです。

フォルダの作成とすでにあるフォルダ・ファイルの変名・削除を禁止

組織やプロジェクトの共有フォルダを管理者で作って、第一階層に勝手にフォルダを作られたり変名できないようにする、というのを一気にやるスクリプト。

アクセスコントロールエントリの作り方

上で作ったアクセスコントロールの”CreateDirectories”、実際に作ってオブジェクトをみるとAppendDataと表示されます。こんな感じ。

 

.netのenum値でintが4、2進数で100、Fileに適用されるとAppendData(データ追加),Folderに適用されるとCreatDirectories,ValueはAppendDataということみたいです。

InheritanceFlagsやPropagationFlagsもNoneと表示されます。

アクセスコントロールエントリのパラメーター

Microsoft Docsによるとパラメーターの作り方は3つか5つ。

3つの場合は継承なしで作られます。継承ありの場合は引数を5つにしてAccessControlTypeの間に2つFlagを指定します。

FileSystemRightsの指定

enum値の一覧はこのコマンドで出せます。

enumに対応する数値はビットの立っている場所でFileSystemRightsを決定するようです。なので数値は飛び飛びになります。詳しくは下記を御覧ください。

Windows ACE の AccessMask(マスク)ビットフラグの対応関係

enumをオブジェクトで作ってbit論理和(-bor)で作るという情報もありますが、そんなことしなくてもPowerShellだと文字列で列記するだけで作れます。(C#の情報なんですかねぇ…?)

詳しくはこちら
Microsoft Docs FileSystemAccessRule Class

InheritanceFlags Enum

Microsoft Docsより

None 0 ACE は、子オブジェクトによって継承されません。

ContainerInherit 1 ACE は、子コンテナー オブジェクトによって継承されます。

ObjectInherit 2 ACE は、子リーフ オブジェクトによって継承されます。

GUIで指定する場合のDefaultは子のコンテナー&オブジェクト両方に継承されます。.Netオブジェクトを何も指定せずに作るとNone(継承しない)がDefaultです。
InheritanceFlags Enumはビット値なので1(2進数で01),2(2進数で10)のビット和は3(2進数で11)です。よくある変更権限を継承ありで作ろうとすると、下記でできます。

もしくは、下記のように列挙することでも作成できました。

PropagationFlags Enum

Microsoft Docsより

None 0 継承フラグが設定されていないことを指定します。

NoPropagateInherit 1 ACE を子オブジェクトに反映させないことを指定します。

InheritOnly 2 ACE を子オブジェクトだけに反映させることを指定します。 この操作には、子コンテナー オブジェクトと子リーフ オブジェクトの両方が含まれます。

GUIでのdefaultは継承フラグなしです。

ユーザーに変更権限を与え、トップフォルダの変更を禁止する

参考URL

GUIユーザーのためのPowerShell入門
【第19回】ファイルアクセス許可の設定変更

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.

前の記事

ImportExcelによるExcelデータ集約

次の記事

DataTableの削除【PowerShell】