martes, 25 de agosto de 2009

Directorio Activo, Usuarios, Permisos y Carpetas compartidas

En un Directorio Activo, es fácil saber qué usuario/grupo tiene acceso a un recurso como una carpeta compartida (sólo tienes que mirar las propiedades de la carpeta compartida en cuestión), pero las propiedades de un usuario/grupo no te dicen a qué carpetas compartidas tiene acceso en un momento dado.

Una debilidad muy común es el acceso del grupo Todos, y es imprescindible saber en qué carpetas compartidas tiene el permiso Control Total. Igualmente, saber puntualmente quién tiene acceso a qué, y qué tipo de permiso tiene, ayuda de una forma extraordinaria a mantener segura la política de seguridad de un Directorio Activo.

Como no encontré una herramienta que automatice esto, hice en Perl la herramienta de línea de comandos userperm-net, que hace lo siguiente:
  1. Pide al usuario el nombre de un usuario o un grupo
  2. Mediante net view genera un archivo de texto con la lista de los hosts en red
  3. Toma la lista generada y realiza lo siguiente en cada host:
  4. Intenta una conexión WMI para extraer la lista de carpetas compartidas
  5. De cada carpeta compartida, extrae la lista de usuarios/grupos con sus permisos NTFS
  6. Compara cada nombre de usuario/grupo del paso anterior con el introducido en el paso 1
  7. En caso de coincidencia, muestra el nombre del usuario/grupo, el permiso, el host y la ruta completa de la carpeta en cuestión
  8. Por último, si el usuario quiere, muestra una lista con los hosts donde no ha podido conectar con WMI
Consideraciones para utilizar userperm-net:
  • Es mejor ejecutarlo con permisos de administrador de dominio, así llegará al máximo de hosts del Directorio Activo
  • Hay que ser muy cuidadoso introduciendo el nombre de usuario/grupo porque tiene en cuenta mayúsculas/minúsculas, espacios, etc.
  • Como trabaja a nivel de permisos NTFS de carpetas compartidas y no a nivel de permisos de carpetas compartidas en sí, es posible que algunos resultados sólo tengan sentido para accesos locales y no desde otro host
Pantallazo:

3 comentarios:

katisark dijo...

Que grande eres!! Tengo que sacar un informe de a todas las carpetas NTFS compartidas que tienen todos los usuarios del dominio y me estaba volviendo loco.

Era imposible poder hacerlo manualmente ya que rondamos los 60 usuarios y no te digo el árbol de directorios que tiene el servidor de documentos.

Ahora con tu programita, aunque sea mucho curro de hacer las búsquedas para todos lo usuarios y grupos que hay... al menos es mucho más cómodo.

Había visto otros programas como Shareright Documentary que aparentemente hacía lo que necesitaba, pero sin tener la versión completa se me volvía loco y no había manera humana de sacar un informe.

En fin muchas gracias de nuevo, eres un crack!!

Un saludo

Javier March

katisark dijo...
Este comentario ha sido eliminado por el autor.
rAmIx dijo...

Si sólo necesitas ver las carpetas compartidas de cada equipo en el dominio, prueba con esta línea de comando:
( for /f %a in ('net view') do net view %a ) > out.txt