1

C# を使用して Windows のフォルダーに 1 人のユーザーのみにアクセス許可を割り当てたいのですが、他のユーザーはそのフォルダーのアクセス権を開いたり変更したりできないはずです。

たとえば、Users グループに UserA、UserB、UserC の 3 人のユーザーがいるとします。UserA だけにフォルダへのアクセスを許可したい。ユーザー グループへのアクセスを拒否して UserA を許可すると、アクセス許可の拒否が優先され、UserA へのアクセスも拒否されます。

この問題を回避するには、Userb と Userc を拒否し、UserA にフォルダへのアクセスを許可します。ただし、ユーザー アカウントが作成するアクセス許可を設定した後、その新しいアカウントがフォルダーへのアクセス許可を持つ場合、これには問題があります。こんなシチュエーションはしたくない。

ありがとう、スジス

4

1 に答える 1

6

ACL に記載されていないユーザーのデフォルトのアクセス許可は「アクセスなし」です (空の DACLはアクセスを許可しません)。そのため、フォルダが親からセキュリティを継承するのを防ぎ、UserA のみにアクセス許可を割り当てます。

(もちろん、これは管理者が所有権を取得し、その後自分自身にアクセス許可を付与することを妨げるものではありません。それを防ぐことはできません)。


たとえば、C:\FruitBatユーザーのみがアクセスできるという名前のディレクトリを作成するには、次のようにしますDOMAIN\User1

System.Security.AccessControl.DirectorySecurity dacl = new System.Security.AccessControl.DirectorySecurity();
dacl.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(@"DOMAIN\User1",
    System.Security.AccessControl.FileSystemRights.FullControl,
    System.Security.AccessControl.InheritanceFlags.ContainerInherit |
    System.Security.AccessControl.InheritanceFlags.ObjectInherit,
    System.Security.AccessControl.PropagationFlags.None ,
    System.Security.AccessControl.AccessControlType.Allow));
System.IO.Directory.CreateDirectory(@"C:\FruitBat", dacl);
于 2011-09-27T06:50:32.410 に答える