Настройка доступа к папке только одному пользователю - PullRequest
1 голос
/ 27 сентября 2011

Я хочу назначить разрешения только одному пользователю для папки в Windows с помощью C #. Другие пользователи не должны иметь возможность открывать или изменять права доступа к этой папке.

например, если у меня 3 пользователя - UserA, UserB и UserC в группе Users. Я хочу дать разрешение на доступ к папке только для UserA. Если я откажу в доступе группе пользователей и разрешу UserA, то запретное разрешение будет иметь приоритет, и доступ к UserA также будет запрещен.

Один способ обойти эту проблему - запретить Userb и Userc и разрешить UserA доступ к папке. но это имеет проблему, если после установки разрешений пользователь создает учетную запись, то у этой новой учетной записи будут права доступа к папке. Я не хочу, чтобы этот сценарий.

Спасибо, Суджит

1 Ответ

6 голосов
/ 27 сентября 2011

Разрешение по умолчанию для тех, кто не упомянут в ACL, - «нет доступа» ( Пустой DACL не предоставляет доступа).Поэтому не допускайте, чтобы папка наследовала защиту от своего родителя, и назначайте разрешения только для пользователя A.

(Конечно, это не мешает администратору вступать в права собственности и впоследствии предоставлять разрешения для себя. Ничто не может этому помешать)


Например, создать каталог с именем 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);
...