Настройка доступа к папке только одному пользователю
Я хочу назначить разрешения только одному пользователю для папки в Windows, используя C#, другие пользователи не должны иметь возможность открывать или изменять права доступа к этой папке.
например, если у меня есть 3 пользователя - UserA,UserB и UserC в группе Users. Я хочу дать разрешение на доступ к папке только для UserA. Если я откажу в доступе группе пользователей и разрешу UserA, то запретное разрешение будет иметь приоритет, и доступ к UserA также будет запрещен.
Чтобы обойти эту проблему, нужно запретить Userb и Userc и разрешить UserA доступ к папке. но это имеет проблему, если после установки разрешений пользователь создает учетную запись, то у этой новой учетной записи будут права доступа к папке. Я не хочу иметь этот сценарий.
Спасибо суджит
1 ответ
Разрешение по умолчанию для тех, кто не упомянут в 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);