dê permissão de regra de acesso ao usuário específico na rede local
-
08-09-2020 - |
Pergunta
Meu aplicativo está funcionando na rede local e o administrador cria a pasta para cada usuário na pasta compartilhada com este código:por exemplo, "me1" é um usuário da rede local.
DirectoryInfo d=new DirectoryInfo(@"\\server\Test");
DirectoryInfo di = new DirectoryInfo(@"\\server\Test\me1");
di.Create(d.GetAccessControl());
DirectorySecurity dSecurity = di.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
FileSystemRights.FullControl,
AccessControlType.Deny));
di.SetAccessControl(dSecurity);
agora todo usuário não pode acessar sua pasta, eu uso este código:
DirectoryInfo dInfo = new DirectoryInfo(@"\\Server\Test\me1");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
FileSystemRights.FullControl,
AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
mas ocorreu o erro "acesso negado".como posso definir permissão para um usuário específico?quero dizer, o administrador pode dar permissão ao usuário específico quando ele cria o diretório?obrigado.
Solução
As regras de controle de acesso negado (ACE) são verificadas primeiro e todos estão no Everyone
grupo.Assim, o primeiro ACE bloqueará todo o acesso de todos, inclusive você que tenta alterar as permissões.
Geralmente as regras de negação são a abordagem errada.É melhor adicionar apenas as regras de acesso que fornecem o acesso que você deseja conceder. Se não houver regras de permissão correspondentes a uma identidade, essa identidade terá acesso negado — você não precisa bloqueá-las explicitamente.