c# - tener - permisos de administrador windows 7 cmd
Usando System.DirectoryServices.xxx ¿es posible determinar qué grupos de AD puede administrar un usuario? (1)
Estoy intentando cargar una lista de grupos para un usuario y quiero mostrar si tienen autoridad para editar membresía de grupo o no.
Lo que en Active Directory indica que un usuario puede editar los miembros de un grupo y cómo puedo buscar esto usando System.DirectoryServices en 3.5+
Estoy usando lo siguiente para obtener los grupos para un usuario
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName);
if ( user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
foreach(Principal p in groups)
{
if ( p is GroupPrincipal)
...
}
}
Cualquier ayuda apreciada
Esto lleva mucho tiempo, debido a la forma en que los permisos se administran en los objetos. Una pregunta similar podría ser "¿Cómo enumero todas las carpetas del dominio en el que una cuenta puede escribir datos?". La razón por la cual esto consume mucho tiempo es porque cada objeto tiene su propia lista de control de acceso (ACL).
Estoy bastante seguro de que la única forma de descubrir cada grupo que puede administrar sería verificar cada grupo y ver cuáles son los permisos en ese grupo, luego compare su pertenencia al grupo con los permisos del grupo.
En Active Directory, ¿cómo determino el tipo de ActiveDirectoryAccessRule? tiene algún código que puede ser útil si esta es la ruta que terminas yendo.
Un enfoque más sensato podría ser usar el campo "Delegar" para delegar permisos a ciertos grupos, este campo se puede consultar fácilmente usando LDAP, o dejar que la persona elija cualquier grupo y luego verificar los permisos del grupo después de que se haya seleccionado.