none
Crear carpeta en c/u de los perfiles de usuarios AD con permisos restringidos RRS feed

  • Pregunta

  • Que tal, les agradeceré me puedan ayudar con lo siguiente:

    - Cliente con 1400 usuarios, poco apegado a las mejores practicas requiere:

    1.- Crear dentro de cada perfil de usuario un "directorio privado".En resumen, que a cada usuario se le genere de manera automatica un directorio en la unidad D:\%username%, respecto a los permisos, que solo la cuenta de usuario que inicia sesión tenga permisos full sobre este.

    A modo de consulta, ¿los "directorios particulares" de los perfiles de usuario de AD funcionan con rutas locales de almacenamiento o deben ser solo shared o compartidas desde un fileserver?

    PD: El directorio a crear debe ser ruta:\%username% porque en mas de una oportunidad existen estaciones de trabajo multiusuario y se pisarían las rutas si se usa un nombre generico para el directorio.

    Otra opción sería mediante GPO y un script, pero se me vienen mas dudas.

    - Debe ser una GPO de equipo, ya que el usuario no tiene permisos para restringir los permisos de acceso al directorio, entre otras cosas ¿o no?.

    - Como obtengo el %username% y lo aplico a la sentencia CACLS? porque esta requiere nombres de usuarios y grupos para aplicar los permisos.

    Cuando me hicieron la pregunta se veia super simple, pero la verdad llevo una semana dándome vueltas y no logro dar con la solución.

    Por favor, si me pueden ayudar se los agradeceré!!


    '-' DVD AR Concepción CHILE

    miércoles, 13 de junio de 2012 14:57

Respuestas

  • Hola,

    Tan sólo deberías linkar un script como este a la sección usuarios de una GPO que aplique para tus usuarios (valídalo primero). En cuanto a los permisos, no tiene mucho sentido ya que por defecto el usuario tendrá full control heredado sobre esta carpeta si esta dentro de su perfil con lo que no es necesario...

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = WScript.CreateObject("WScript.Shell")
    
    strFolderName="nombre de la carpeta privada"
    strProfilePath = objShell.ExpandEnvironmentStrings("%USERPROFILE%")
    
    'Evitamos que se duplique la carpeta si ya existe
    if Not objFSO.FolderExists(strProfilePath & "\" & strFolderName) Then 
    	'Creamos la carpeta
    	objFso.createfolder (strProfilePath & "\" & strFolderName)
    end if

    Saludos.

    Julio Rosua


    • Editado Julian Ros miércoles, 13 de junio de 2012 16:34
    • Marcado como respuesta Uriel Almendra viernes, 12 de abril de 2013 21:20
    miércoles, 13 de junio de 2012 15:48

Todas las respuestas

  • Hola,

    Tan sólo deberías linkar un script como este a la sección usuarios de una GPO que aplique para tus usuarios (valídalo primero). En cuanto a los permisos, no tiene mucho sentido ya que por defecto el usuario tendrá full control heredado sobre esta carpeta si esta dentro de su perfil con lo que no es necesario...

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = WScript.CreateObject("WScript.Shell")
    
    strFolderName="nombre de la carpeta privada"
    strProfilePath = objShell.ExpandEnvironmentStrings("%USERPROFILE%")
    
    'Evitamos que se duplique la carpeta si ya existe
    if Not objFSO.FolderExists(strProfilePath & "\" & strFolderName) Then 
    	'Creamos la carpeta
    	objFso.createfolder (strProfilePath & "\" & strFolderName)
    end if

    Saludos.

    Julio Rosua


    • Editado Julian Ros miércoles, 13 de junio de 2012 16:34
    • Marcado como respuesta Uriel Almendra viernes, 12 de abril de 2013 21:20
    miércoles, 13 de junio de 2012 15:48
  • Ok, muchas gracias Julio.

    Lo pruebo y te cuento, gracias de nuevo por la pronta respuesta.


    '-' DVD AR Concepción CHILE

    miércoles, 13 de junio de 2012 15:54
  • Ya después de darle vueltas un poco al asunto y con nulos conocimientos de scripting, adapté el demo del script a mis necesidades quedando así:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = WScript.CreateObject("WScript.Shell")
    
    strFolderName="D:\DATA"
    strProfilePath = objShell.ExpandEnvironmentStrings("%USERNAME%")
    strDomainName = "MIDOMINIO" 'Todavía no le veo la utilidad a esta entrada
    
    'Evitamos que se duplique la carpeta si ya existe
    if Not objFSO.FolderExists ( strFolderName & "\" & strProfilePath ) Then 
    	'Creamos la carpeta
    	objFSO.createfolder ( strFolderName )
    	objFSO.createfolder ( strFolderName & "\" & strProfilePath )
    end if

    En conclusión, el script valida si existe una carpeta en la ruta especificada y con el nombre de la cuenta de usuario que inicia sesión. Esto me permite crear mas de un directorio si la estación es multiusuario. Me queda una duda, ¿como lo hago si la creación de la carpeta la quiero hacer dentro del directorio Mis documentos del usuario y considerando que existe una variedad de SO en las estaciones de trabajo (Windows XP en español e ingles y Windows 7)?


    '-' DVD AR Concepción CHILE


    • Editado DVDAR viernes, 15 de junio de 2012 18:09
    viernes, 15 de junio de 2012 18:05
  • Hola,

    No tiene mucho sentido los cambios que has realizado, te explico:

    1. strProfilePath recoge el valor del path del profile del usuario (c:\users o c:\documents and settings). Si realizas la creación sobre strFolderName & "\" & strProfilePath le estás pasando al metodo createfolder una ruta como "D:\Data\c:\Users" lo cual no tiene ningún sentido, el hecho de que tengas un "resume next" al inicio evita que falle, pero en cualquier caso no funcionará.

    2. El idioma de los sistemas es indiferente, la variable de entorno devolverá C:\Users o C:\Usuarios en función del sistema, no te preocupes por esto.

    3. Puedes crear tantas carpetas como quieras, pero el filtro (FolderExists) está pensado para una sola condición, con lo que, o  bien añades un OR y más condiciones o no se crearán (si lo vas modificando una vez ya creado claro)

    En resumidas cuentas, si lo que quieres hacer como entendí en el primer post es crear una carpeta dentro del perfil del usuario de manera automatizada, el primer script es válido, estos cambios introducidos no son funcionales.

    Otra cosa, por lo del multiusuario no te preocupes, ya que cada uno tiene un perfil, y cada vez que se logue uno se le creará en el suyo, en cualquier estación que haga logon, ya que si el usuario cambia de PC en el perfil local de este no tendrá la carpeta y se añadirá.

    No se si me he explicado...

    En cualquier caso, si no te he entendido aclarame un poco más que output estás buscando y lo adaptamos.

    Saludos.

    Julio Rosua


    • Editado Julian Ros viernes, 15 de junio de 2012 18:32
    viernes, 15 de junio de 2012 18:30