0

私はファイルシステムとパーミッション/権利アクセス (別名アクセス制御リスト、ACL) にかなり慣れていません。ACL に関するコーディング中に、必要なプロパティをファイルに設定できません。FileSystemRights メンバーの理解が間違っているのか、それとも完全に間違ったことをしているのかはわかりません。(そして、私はすでにこの部分にかなりの時間を費やしています)

私がやりたいのは、ファイルの権利を変更して、ファイルを完全に読み取り可能にし、編集、名前の変更、削除、および他の場所へのコピーができないようにすることです。

MSDN の例を使用すると、これまでのところ次のようになります。

try
{
    //Get current identity
    WindowsIdentity self = System.Security.Principal.WindowsIdentity.GetCurrent();

    // Add the access control entry to the file.
    AddFileSecurity(filename, self.Name, FileSystemRights.Modify, AccessControlType.Deny);
    AddFileSecurity(filename, self.Name, FileSystemRights.Write, AccessControlType.Deny);
    AddFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Allow);

    // Remove the access control entry from the file.
    RemoveFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Deny);
    RemoveFileSecurity(filename, self.Name, FileSystemRights.Read, AccessControlType.Deny);

    Console.WriteLine("Done.");
}
catch (Exception e)
{
    Console.WriteLine(e);
}

私の論理は次のとおりです。

  1. 変更の拒否権を追加します (.Modify を拒否すると、ファイルが読み取れなくなります)
  2. 書き込み拒否権を追加
  3. Allow ReadAndExecute 権限を追加する
  4. ReadAndExecute の Deny エントリを削除します (.Modify が ReadAndExecute を拒否するため)
  5. 読み取り時に拒否エントリを削除します (.Modify が読み取りを拒否するように)

この部分を正しく行っていますか?そうでない場合は、ファイルを読み取り専用にし、編集、名前変更、削除、コピー不可にするにはどうすればよいかアドバイスしてください。よろしくお願いします!

4

1 に答える 1

0

何が間違っているのか説明してください。問題になる可能性がある唯一のことは、自分自身のアクセス許可を設定していることですが、他のユーザーやグループのアクセス許可は設定していません。おそらく、すべてのグループ (管理者、ユーザーなど) を繰り返し処理し、読み取りと実行以外のすべてを無効にする必要があります。SYSTEMは常にすべてのファイルを完全に制御できると思いますが。

于 2011-08-18T06:39:03.530 に答える