Administracion de Sistemas

696 views
595 views

Published on

Es la práctica 3 en windows sobre la asignatura de administración de sistemas.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
696
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Administracion de Sistemas

  1. 1. Administración de SistemasUsuarios y Protección en Windows 2003 I TAHISA M. D ÍAZ D ÍAZ M ARÍA D. BATISTA G ALVÁN E SCUELA T ÉCNICA S UPERIOR DE I NGENIERÍA I NFORMÁTICA Universidad de La Laguna
  2. 2. R ESUMEN . El objetivo del presente informe es describir y explicar los pasos se-guidos para la realización de la tercera práctica de laboratorio de la asignatura deAdministración de Sistemas.En este caso, la práctica consistía en aprender a utilizar las herramientas para la ges-tión y protección de usuarios que proporciona Windows Server 2003, concretamentese hizo un amplio uso del Active Directory. Por lo tanto, se trabajó sobre una máquinavirtual que actuaba como servidor, con Windows Servers 2003 como sistema opera-tivo al que se le instaló y configuró el servicio DNS para posteriormente instalarleel Active Directory; la máquina virtual que operaría como cliente llevaba instaladoel Windows XP. Se planteaba una organización simulada, tal y como ocurrió en lasprácticas anteriores, a la que administrar cuestiones tales como el acceso a los re-cursos, la protección y la seguridad, lo que conlleva manejar operaciones como lacreación de usuarios y grupos, establecer reglas de seguridad, el mapeo de unidades,entre otras tantas que se describirán a medida avance el informe. La estructura dedicho informe está determinada por las cuestiones propuestas en la práctica, a lasque se irá respondiendo y describiendo los procesos para su consecución en el ordenque se plantean.Con el fin de facilitar, automatizar y, por consiguiente, agilizarle estas operacionesal administrador, se creó una aplicación en modo gráfico a base de scripts elabora-dos con el lenguaje VBScript, que se adjunta en el presente informe. Aunque en losapartados se explica como se llevo a cabo la práctica de manera gráfica, lo cierto seutilizó dicho script para completar todas las tareas. 1
  3. 3. Índice1. Sistemas 32. Contraseñas 53. Directorio privado de los usuarios 94. Proyectos de la organización 135. Usuarios de la Organización 176. Directores de los proyectos 207. Ejecutivos de la organización 218. Resto de usuarios 22Anexos 24A. Usuarios 24B. Grupos 30C. Carpeta 34D. Security Policy 35E. Compartir 36F. Permisos NTFS 38G. Permiso Share 40 2
  4. 4. P OLÍTICA DE S EGURIDAD DE LA O RGANIZACIÓN1. Sistemas Cualquier usuario debe poder apagar el sistema. En este primer punto, al menos en lo que respecta a conceder al usuario el privilegio de apagar el sistema, no fue necesario configurar nada puesto que el usuario ya tiene por defecto ese privilegio de poder apagar el equipo local. Los usuarios tienen restringidas las horas de acceso al sistema. Por su parte, para restringir las horas de acceso al sistema a los usuarios, es obvio que previamente fue necesario crear a los usuarios, lo que se explicará más adelante (véase apartado 2). Por tanto, se parte de la idea que ya están creados los usuarios. Así pues se siguieron los pasos: Start → Administrative Tools → Active Directory Users and Computer Se seleccionó la unidad organizativa que se creó para almacenar a los usuarios de la organización (a la que se le llamó People) y se seleccionaron los usuarios del turno de mañana (pues se le asignaron las horas según su turno, tal y cómo se propone en el punto ??. (a) Properties (b) Account Figura 1: Properties → Account 3
  5. 5. Una vez seleccionados, se desplegó con el botón derecho un menú en el que se eligió “Properties”. Luegoen la pestaña “Account” se marcó la casilla “Logon hour” y, a continuación, el botón con el mismo nombre(véase la figura 1).En la ventana que apareció se seleccionaron las horas correspondientes. Una vez hecho se marcó laopción “Logon Permitted” (véase la figura 2). Figura 2: Logon HourFinalmente se procedió de igual forma para los del grupo de tarde. 4
  6. 6. 2. Contraseñas A fin de facilitar la gestión, asignar como contraseña el nombre del usuario. Como la contraseña se estableció al crear a un usuario, se explicará en este subapartado el proceso de creación de usuario. C REACIÓN DE U SUARIOS Se siguieron los pasos siguientes: Start → Administrative Tools → Active Directory Users and Computer En la unidad organizativa People, al clicar sobre el botón crear usuario aparecía una nueva ventana donde se establecieron datos básicos sobre el usuario, como su nombre, apellidos, nombre de la cuenta, etc. (véase Figura 3(a)). Apretando siguiente, aparecía una nueva ventana (véase Figura 3(b)) donde establecer la contraseña y algunas características como, por ejemplo, si queremos que la contraseña nunca expire. En ese punto, introducimos la contraseña (el propio nombre de usuario, tal y como se especifica en este apartado), y no se marcó ninguna de las opciones, puesto que se configurarían posteriormente siguiendo las pautas que va marcando el guión. (a) Datos del Usuario (b) Contraseña Figura 3: New Object : User Finalmente, clicando “next” y a continuación, “finish”, se creó el usuario y apareció en la unidad organi- zativa. Este proceso se hizo con cada usuario, desde emple1 hasta emple10 y ejec1 y ejec2 (véase figura 4). 5
  7. 7. Figura 4: OU PeopleLos usuarios deben cambiar las contraseñas cada tres meses.Los usuarios no pueden cambiar las contraseñas hasta 2 semanas después de haberlacambiado.No se permiten contraseñas en blanco. Longitud mínima: 4 caracteres.La nueva contraseña no debe coincidir con las dos últimas introducidas por el usuario.Los siguientes subapartados fueron subsanados siguiendo los pasos: Start → Administrative Tools → Domain Security PolicyY luego, en dicha herramienta, en el árbol que aparece a la izquierda, se eligió: Account Policies → Password PolicyAl seguir está ruta, en la ventana de la derecha aparecerían las políticas que serían modificadas paracumplir con los subapartados que nos ocupan. Para cambiarlas simplemente fue necesario hacer dobleclic sobre cada una de las siguientes políticas y establecerles las propiedades tal y como se muestra acontinuación:Maximum password age: esta política se configuró para cumplir que los usuarios tuvieran que cambiarla contraseña cada 3 meses. Por lo que se estableció a “90 days”Minimum password age: esta política se configuró para cumplir con que los usuarios no pudierancambiar su contraseña hasta pasadas dos semanas del último cambio. Se estableció a “14 days”Minimum password length: esta política se configuró para cumplir con la longitud mínima de la con-traseña. Se estableció a “4 characters” 6
  8. 8. Enforce password history: esta política se configuró para que cuando el usuario cambiará la contraseña,ésta no pudiera coincidir con las dos últimas establecidas. Se estableció a “2 password remembered”Si se producen 4 intentos de autenticación fallidos a una cuenta de usuario en un inter-valo de 10 minutos, ésta debe quedar permanentemente bloqueada.Como, en los subapartados anteriores, en éste, también nos dirigimos a la herramienta: Start → Administrative Tools → Domain Security PolicyPara cumplir que tras 4 intentos en un intervalo de 10 minutos se bloqueara la cuenta de manerapermanente, fue necesario dirigirnos a: Account Policies → Password Policy → Account Lockout PoliciesDonde se cambiaron tres políticas:Account lockout duration se estableció a “0” para que la cuenta fuera bloqueada permanentemente.En caso de poner otra cifra, representaría los minutos que se quedaría bloqueada la cuenta.Account lockout threshold se estableció a “4 invalid logon attempts”, para los 4 intentos.Reset account lockout counter after se estableció a “10 minutes”, para el intervalo de 10 minutos.Deben quedar registrados los intentos fallidos de entrada en el sistema.En este caso, los cambios fueron necesarios establecerlos tanto en la herramienta Domain SecurityPolicy, como en la Domain Controller Security Policy, para que los fallos quedarán registrados en elservidor, en cuyo caso, si no la definiéramos de igual manera, la del controlador anularía a la de DomainSecurity Policy. En ambos casos se siguió: Local Policy → Audit PolicyY, para las políticas “Audit account logon event” y “Audit logon event” se marcó la casilla “Failure” y sedesmarcó “Success” en caso de estar marcada (véase la figura 5) para que se registraran sólo los fallos alentrar en el sistema. 7
  9. 9. Figura 5: Audit PolicyPara comprobar si funcionó, se entró erróneamente (fallando en la contraseña) en la máquina clientecon un usuario, se comprobó que se quedaban los registros del error (véanse las figuras 6(a) y 6(b)) en: (a) Error de Inicio de Sesión (b) Event Viewer Figura 6: 4 intentos fallidos en menos de 10 minutos Start → Administrative Tools → Event Viewer → Securityy que el usuario quedó inhabilitado en Active Directory Users and Computer. 8
  10. 10. 3. Directorio privado de los usuarios Cada usuario debe disponer de un directorio propio de conexión con las siguientes restric-ciones: Todo usuario debe disponer de un directorio propio a partir del directorio home del servidor, cuyo nombre coincida con el de la cuenta del usuario. El usuario podrá acceder automáticamente a este directorio a partir de la unidad n: desde cualquier máquina del dominio. En primer lugar, se creó el directorio home en C: y dentro de home una carpeta por cada usuario de la organización (desde emple1 hasta emple10, además de ejec1 y ejec2), como se muestra a continuación en la imagen: En el directorio C:home (botón derecho del ratón) se eligió “Sharing and Security” (véase la figura 7(a)), en la ventana que apareció en la pestaña “Sharing” (véase la figura 7(b)) se marcó la casilla “Share this folder”; donde ponía “Share name”, se eligió el nombre que tendría la carpeta compartida (en este caso, home) y en “User Limit” se podía elegir la cantidad de usuario que podría conectarse al recurso compartido (en este caso, el máximo permitido). Luego, por último se establecieron los permisos compartidos, para lo que se pulsó en esa misma ventana, el botón “Permissions“. A continuación se añadió al grupo Domain User (véase la figura 7(c)), un grupo especial creado para introducir a todos los usuarios de la organización, al que se le dio control total en dicho recurso (home), para permitir a todos los usuarios acceder al mismo directorio y no limitarle luego permisos para manipular su propia carpeta. Por otra parte, en: Start → Administrative Tools → Active Directory Users and Computer Para cada usuario, en “Properties” y en la pestaña “Profile”, en el recuadro donde ponía “Home Folder”, se marcó la casilla “Connect” y elegimos la unidad N: tal y como dicta el enunciado de este apartado; y en 9
  11. 11. el recuadro tras la palabra “To:” se escribió la ruta al recurso de conexión que sería el home del usuariocorrespondiente que se creó anteriormente. Se indicaron la máquina, el recurso y la ruta del directoriodentro del recurso. Por ejemplo, para emple1 sería 192.168.1.110home %username % tal y comose muestra en la imagen la figura 8(a).(a) Sharing and Security (b) Sharing (c) Permissions Figura 7: Carpeta Compartida (a) Home Folder (b) Unidad Figura 8: Directorio Privado 10
  12. 12. El resultado fue que al iniciar sesión le aparecía una unidad N: seguida con su nombre de usuario, dondese alojaba su home (véase la figura 8(b)).En este directorio, el usuario debe tener control total.El resto de los usuarios no podrá tener ningún tipo de acceso sobre este directorio.Con la finalidad de que el usuario tuviera control total sobre su propio directorio y ningún otro tuvieraeste acceso se realizó lo siguiente:En el directorio C:home (clic con botón derecho del ratón) se eligió “Sharing and Security”.En la pestaña “Security” en el botón “Advanced” en “Permissions” se cortó la herencia de los permisos(casilla: “Allow inheritable...”) para que no se sumaran los permisos del directorio C:home al del direc-torio de los usuarios. Y además se pudiera eliminar a los usuarios que venían establecidos por defecto,dejando únicamente Administradores y al grupo Domain User (véase la figura 9). Figura 9: HerenciaLuego, en el directorio de cada usuario, en la misma pestaña “Properties” → “Sharing and Security” →“Security”, se cortó la herencia al igual que antes. Se añadió además de a Administradores, al usuariopropietario de su directorio, al que se le da control total sobre el mismo (véase la figura 10). 11
  13. 13. Figura 10: Control TotalDe esta manera, se consiguió que únicamente el propietario tuviera acceso a su directorio y ninguno otrousuario más tuviera ningún tipo de acceso. Puede verse reflejado en la imagen donde se muestra comoemple1 intenta entrar en el directorio de otro usuario y se le es denegado el acceso (véase la figura 11). Figura 11: Acceso Denegado a los NO Propietarios 12
  14. 14. 4. Proyectos de la organización La organización tiene en marcha diversos proyectos. Éstos han de cumplir: Cada proyecto dispondrá de un directorio para almacenar la información relativa al mis- mo bajo el directorio proyectos. Cada usuario podrá acceder automáticamente a los proyectos en los que participe a partir de las unidades p:, q:,... desde cualquier máquina del dominio. En este apartado, fue necesario el mapeo de las unidades. En primer lugar, se crearon tres carpetas para cada proyecto bajo el directorio C:proyectos con el nombre de cada proyecto (auditorio, aeropuerto y parque). Dichos directorios fueron compartidos en red, de la misma manera que se ha explicado en apartados anteriores; en cuánto a los permisos que se les dieron, se tratará en los siguientes subapartados con mayor detenimiento, puesto que requerían de una seguridad más personalizada y por tanto del uso de los permisos especiales (véase en subapartados siguientes). A continuación en C:WINDOWSSYSVOLsysvolas07.orgscripts se agregó un fichero .bat llamado unidad.bat. En dicho script se hizo uso del comando net use para el mapeo, por lo que su único conte- nido eran tres líneas de comando para mapear las unidades a las carpetas de los tres correspondientes proyectos. El código fue el siguiente: 1 net use p: 192.168.1.110auditorio 2 net use q: 192.168.1.110aeropuerto 3 net use r: 192.168.1.110parque Decir, además que las carpetas sysvol y scripts de la ruta anterior hubo que compartirlos con los usuarios de la organización (Grupo Domain User) con permiso de lectura y al .bat se le asignó también permiso de lectura y de ejecución, para que éste pudieran ser ejecutado por los usuarios. Finalmente en la herramienta Active Directory Users and Computer, se seleccionaron todos los usua- rios de la organización, y en “Properties”, pestaña “Profile”, se marcó el recuadro “Logon script” y se añadió el nombre del .bat (véase la figura 12). De esa manera, ya se mapearían las unidades nada más el usuario iniciará sesión y tendrían acceso a ellas, en el caso de contar con los permisos necesarios. 13
  15. 15. Figura 12: Local ScriptTodos los usuarios que participan en un proyecto deben tener la posibilidad de leer ymodificar los archivos que forman parte del proyecto.Los usuarios no podrán crear ni borrar archivos del proyecto. Esta función la realizará eldirector del mismo.C REACIÓN DE G RUPOSPara el cumplimiento de los subapartados siguientes, a la hora darles los permisos a los usuarios, fue ne-cesario crear grupos locales conforme a los diferentes tipos de permisos que tendrían en los directoriosde cada proyecto. Y a su vez, crear grupos globales para introducir estos grupos locales. También se crea-ron de igual manera grupos local y global para los ejecutivos. Se diferenció entre grupos de Directivos yde los Participantes.A pesar de que, en cierto sentido, se duplican los grupos, está era la estrategia más efectiva en undominio al permitir mayor versatilidad a la hora de añadir, eliminar y mover usuarios según los permisosque se les desee dar a los recursos y en para la propia organización. Además con el fin de organizar aúnmejor el dominio, estos grupos fueron introducidos en la unidad organizativa Group, donde ya estabasituado el grupo global del que se ha hablado con anterioridad, Domain User.Los pasos para crear grupos fueron los siguientes:Se hizo clic sobre el botón para crear grupos y aparecía una ventana donde se poder elegir el tipo yel ámbito del grupo: Seguridad/Distribución y Global/Local. En nuestro caso sólo hicimos uso de los de 14
  16. 16. Seguridad, tanto Local como Global. Por supuesto en “Group name” se introdujo el nombre que se ledeseaba dar al grupo (véase la figura 13). Figura 13: Crear GrupoEl paso siguiente fue añadir miembros, para lo cual se fue a propiedades sobre el grupo correspondiente,luego a la pestaña “Members”, y se presionó añadir. Si se deseaba buscar o comprobar los nombres de losusuarios/grupos se podía pulsar “Check Names” y el nombre/s seleccionado/s aparecería/n en la ventana(véase la figura 14). Figura 14: Añadir MiembrosSe procedió así para introducir, en primer lugar, a los usuarios en sus grupos globales correspondientes,y luego a los grupos globales en sus grupos locales correspondientes, quedando el estado de los gruposde la organización tal y cómo se muestra en la figura 15. 15
  17. 17. Figura 15: OU GroupBien, pues una vez creado estos grupos, como en este apartado los permisos son muy específicos paralos participantes, no es suficiente con los permisos normales sino que hay que darlos de un modo másavanzado, por lo que se hizo uso de los permisos especiales.Para que los usuarios participantes sólo pudieran leer y modificar (pero no crear ni borrar) en el direc-torio del proyecto en el que participan, hubo que ir a “Properties” en la carpeta de dicho proyecto e ir a“Advanced”.Luego, en la ventana emergente, se desmarcó la herencia y se añadió al grupo correspondiente (“Add”)y luego sobre “Edit”. Una vez allí, en “Apply onto” se seleccionó “Files Only” y se marcaron los permisoscorrespondientes para sólo permitirles leer y escribir (véase la figura 16(a)). Finalmente, se añadiónuevamente el grupo (“Add”), pero esta vez, al editarles los permisos, en “Apply onto” se seleccionó“This folder and subfolders” y se seleccionaron los permisos (véase la figura 16(b)). (a) Files Only (b) This folder and subfolders Figura 16: Permisos Especiales 16
  18. 18. 5. Usuarios de la Organización Los usuarios implicados en los proyectos tendrán restringida la hora de acceso al sistema. Este subapartado ya fue descrito detalladamente en el apartado 1 Les debe ser asignado un perfil flotante que no puedan modificar. En un principio, se creó en el servido en la unidad C: una carpeta compartida con el nombre de perfil, donde se alojaría el perfil flotante. Luego nos dirigimos a la máquina cliente con la finalidad de exportar un perfil de uno de los usuarios que ya se había modificado previamente a la manera deseada. Hubo que entrar como Administrador y lo siguiente fue seguir los pasos: Mi PC (clic derecho) → Propiedades → Opciones Avanzadas A continuación, donde se leía “Perfiles de usuario”, se pulsó “Configuración” (véase la figura 17(a)). Se seleccionar el perfil que se había modificado y se quería exportar, y luego se pulsó en “Copiar a” (véase la figura 17(b)). (a) Configuración (b) Copiar a Figura 17: Exportar Perfil de Usuario 17
  19. 19. En la nueva ventana emergente, se escribió (también se podría examinar si se deseará buscar el destino)donde se deseaba exportar el perfil, por ejemplo, en nuestro caso, a la máquina servidor y a la carpe-ta creada previamente para alojar el perfil, Ord07perfil (véase la figura 18(a)). También se podíaseleccionar con quién estaría permitido compartirlo.Una vez hecho esto, se volvió a la máquina servidor, en las opciones de carpetas se mostraron los archivosocultos, y en la carpeta perfil se le cambió la extensión al archivo ntuser.dat por .man (véase la figura18(b)) para hacerlo obligatorio. (a) Copiar Perfil en Servidor (b) Cambiar la Extensión del Archivo Figura 18: Perfil Flotante ObligatorioComo último paso, en la herramienta Active Directory Users and Computer se seleccionaron todos losusuarios de la organización, y en “Properties”, pestaña “Profile”, se marcó el recuadro “Profile Path” y seañadió la ruta de la carpeta donde se almacenó el perfil (véase la figura 19). 18
  20. 20. Figura 19: Profile PathDe esta manera el perfil sería obligatorio y flotante. Ningún usuario puede de esa manera cambiar su es-critorio, accesos directos, fondo de pantalla, etc. Sino que sería establecido por el propio Administrador. 19
  21. 21. 6. Directores de los proyectos Cada proyecto tiene al menos un director. Tienen control total sobre los archivos del proyecto que dirigen. Esto ya fue contemplado previamente, de hecho, se crearon grupos (véase apartado 4) especiales para los directores: en los grupos Globales de Directores (G***Dir) se introdujeron a los usuarios responsables de la dirección, y en los grupos Locales de Directores (L***Dir), se metieron a esos grupos Globales. De manera que a los Locales se le asignó el control total de los directorios de cuyos proyectos eran responsables (véase la figura 20). Figura 20: Grupo de Directores 20
  22. 22. 7. Ejecutivos de la organización Podrán acceder a cualquiera de los directorios de los proyectos en curso. Pueden leer la información de estos proyectos. No pueden alterar dicha información. Fueron asignados los permisos correspondientes de sólo lectura y ejecución, de igual forma que se ha explicado ya en apartados anteriores. Esto fue, dirigiéndose a los directorios de los proyectos, en “Sharing and Security”, en la pestaña “Security” y asignando los permisos que corresponden de sólo lectura y ejecución al grupo Local de Ejecutivos (LEje) para que se limiten únicamente a ello (véase la figura 21). Figura 21: Permisos Para los Ejecutivos 21
  23. 23. 8. Resto de usuarios No dispondrán de ningún derecho de acceso a los directorios de los proyectos. Al establecerlo únicamente a ejecutivos, participantes y directores, nadie más tendrá acceso a dichos directorios. Por lo que no es necesario denegarlos, sino simplemente no asignarlos. 22
  24. 24. S ITUACIÓN ACTUAL DE LA ORGANIZACIÓN Existen actualmente 3 proyectos en ejecución: auditorio, aeropuerto y parque. En el apartado 4 puede comprobarse que fueron creadas carpetas para cada proyecto y los correspon- dientes grupos para manipularlas según el tipo de acceso que tuvieran permitido. Relacionados con estos proyectos, la empresa dispone de 10 empleados, 5 en el turno de mañana (08:00-15:00) (emple1-emple5) y 5 en el grupo de tarde (14:00-21:00) (emple6- emple10). Siguiendo como referencia tanto los nombres de usuario como los horario designados en este apartado, fueron establecidas las horas de acceso (véase apartado 1) y creados los usuarios (véase apartado 2). Los empleados 1, 3, y 5 han sido contratados temporalmente (6 meses). Para expirarles la cuenta en 6 meses se seleccionó a los usuarios propuestos, y en “Properties”, pestaña “Account”, se marcó ‘‘Account expires” y en “End of ” se seleccionó la fecha de expiración (calculando 6 meses). Hay 2 ejecutivos en la organización: ejec1 y ejec2. Este punto ya fue contemplado a la hora de crear tanto los usuarios como los grupos, para lo cual se crearon dos usuarios con los respectivos nombres, un grupo local y otro global para establecer sus permisos particulares. 23
  25. 25. ANEXOS Existen algunos pocos más formularios, pero no se presentan debido a la falta de espacio, ya que se piensan que no son tan relevantes (ej. creación de OU, habilitar/deshabilitar usuario,mapear unidad, ...).A. Usuarios En el script se tiene 3 maneras de crear usuarios. Y cada una de estas maneras tienen en común una seriede métodos que están introducidas en un módulo, llamado “Module 1” y a continuación se describen: 1 Module Module1 2 3 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 4 5 Public GDomain As String = "dc=as07,dc=org" 6 7 Public GLenghtPwd As Integer = 4 8 9 Public GServer As String = "192.168.1.110" 10 11 12 ’************************************************************************* 13 ’ CREACIÓN Y ELIMINACIÓN DE USUARIOS : Form => Users, MultiUser 14 ’************************************************************************* 15 16 Public Sub CreateUser(ByVal user As String, ByVal userOU As String, ByVal groupOU As String, ByVal pwd As String, ByVal folder As String, ByVal Message As Boolean) 17 On Error GoTo Existe 18 Err.Clear() 19 Dim obj_OU, obj_User 20 obj_OU = GetObject("LDAP://ou=" & userOU & "," & GDomain) 21 obj_User = obj_OU.Create("user", "cn=" & user) 22 Existe: 23 If Err.Number = vbEmpty Then 24 obj_User.Put("sAMAccountName", "" & user) 25 obj_User.Put("HomeDirectory", GServer & "home" & user) 26 obj_User.Put("profilePath", GServer & "perfil") 27 obj_User.Put("homeDrive", "N:") 28 obj_User.Put("scriptPath", "unidad.bat") 29 obj_User.SetInfo() 30 obj_User.SetPassword(pwd) 31 AddUserGroup(user, userOU, groupOU) 32 UserEnable(user, userOU, vbFalse) 33 CreateFolder("C:home" & folder, vbFalse) 34 If Message Then 35 MsgBox("Usuario " & user & " Creado.", 64, "Éxito") 36 End If 37 Else 38 If Message Then 39 MsgBox("Existe: " & user, 16, "Advertencia") 40 End If 41 End If 42 End Sub 43 44 Public Sub UserEnable(ByVal user As String, ByVal userOU As String, ByVal disabled As Boolean) 24
  26. 26. 45 Dim obj_User 46 obj_User = GetObject("LDAP://cn=" & user & ",ou=" & userOU & "," & GDomain) 47 obj_User.AccountDisabled = disabled 48 obj_User.SetInfo() 49 End Sub 50 51 Public Sub AddUserGroup(ByVal user As String, ByVal userOU As String, ByVal groupOU As String) 52 Dim obj_Group, obj_User 53 obj_Group = GetObject("LDAP://cn=Domain User,ou=" & groupOU & "," & GDomain) 54 obj_User = GetObject("LDAP://cn=" & user & ",ou=" & userOU & ",dc=as07,dc= org") 55 If Not obj_Group.IsMember(obj_User.ADsPath) Then 56 obj_Group.Add(obj_User.ADsPath) 57 End If 58 End Sub 59 60 Public Sub Expires(ByVal user As String, ByVal userOU As String, ByVal fecha As String) 61 Dim obj_User 62 obj_User = GetObject("LDAP://cn=" & user & ",ou=" & userOU & "," & GDomain) 63 obj_User.AccountExpirationDate = fecha 64 obj_User.SetInfo() 65 End Sub 66 67 Public Sub DeleteUser(ByVal user As String, ByVal userOU As String, ByVal folder As String, ByVal Message As Boolean) 68 On Error GoTo Existe 69 Dim obj_OU = GetObject("LDAP://ou=" & userOU & "," & GDomain) 70 obj_OU.Delete("user", "cn=" & user) 71 Existe: 72 If Err.Number = vbEmpty Then 73 obj_OU.SetInfo() 74 DeleteFolder("C:home" & Folder, vbFalse) 75 If Message Then 76 MsgBox("Usuario " & user & " Eliminado.", 64, "Éxito") 77 End If 78 Else 79 If Message Then 80 MsgBox("No Existe: " & user, 16, "Advertencia") 81 End If 82 End If 83 End Sub 84 85 ’************************************************************************* 86 ’ CREACIÓN Y BORRADO DE CARPETAS : Form => Users, Folder 87 ’************************************************************************* 88 Public Sub CreateFolder(ByVal archive As String, ByVal Message As Boolean) 89 Dim obj_FSO, obj_Folder 90 obj_FSO = CreateObject("Scripting.FileSystemObject") 91 If obj_FSO.FolderExists(archive) Then 92 If Message Then 93 MsgBox("Existe: " & archive, 16, "Advertencia") 94 End If 95 Else 96 obj_Folder = obj_FSO.CreateFolder(archive) 97 If Message Then 98 MsgBox("Carpeta " & archive & " Creada.", 64, "Éxito") 99 End If100 End If101 End Sub102103 Public Sub DeleteFolder(ByVal archive As String, ByVal Message As Boolean)104 Dim obj_FSO, obj_Folder105 obj_FSO = CreateObject("Scripting.FileSystemObject")106 If Not obj_FSO.FolderExists(archive) Then 25
  27. 27. 107 If Message Then 108 MsgBox("No Existe: " & archive, 16, "Advertencia") 109 End If 110 Else 111 obj_Folder = obj_FSO.DeleteFolder(archive) 112 If Message Then 113 MsgBox("Carpeta Borrada.", 64, "Éxito") 114 End If 115 End If 116 End Sub 117 118 End Module Ahora se exponen los métodos específicos de cada manera. La primera manera, es la opción “Crear/Elimi-nar” en la que el administrador crea o borra al usuario uno a uno. Teniendo en cuenta (aunque es común paralas 3 maneras), que al crearlo o borrarlo, también incluye su directorio home, lo añade o elimina del grupo“Domain User” para poder tener permiso para el perfil fijo, para el script logon, para poder mapear los unidadesintroducidas en el fichero por lotes antes descrito en el fichero unidad.bat. 1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 2 If RadioButton1.Checked() Then 3 If TextBox1.Text.Length = 0 Then 4 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia") 5 Else 6 If TextBox2.Text.Length >= GLenghtPwd Then 7 CreateUser(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr( TextBox4.Text), CStr(TextBox2.Text), CStr(TextBox1.Text()), vbTrue) 8 Else 9 MsgBox("Contraseña menor de " & GLenghtPwd & " caracteres.", 16, "Advertencia") 10 End If 11 End If 12 ElseIf RadioButton2.Checked() Then 13 If TextBox1.Text.Length = 0 Then 14 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia") 15 Else 16 DeleteUser(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr(TextBox1. Text()), vbTrue) 26
  28. 28. 17 End If 18 ElseIf RadioButton3.Checked Then 19 If TextBox1.Text.Length = 0 Then 20 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia") 21 Else 22 If (TextBox5.Text.Length > 0) And (TextBox5.Text <> "mm/dd/yyyy") Then 23 Expires(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr(TextBox5. Text)) 24 Else 25 MsgBox("Introduce fecha de expiración.", 16, "Advertencia") 26 End If 27 End If 28 Else 29 MsgBox("Selecciona: Crear, Borrar o Expirar", 16, "Advertencia") 30 End If 31 End Sub La segunda manera, es la opción “Crear Varios” en “Carga por Ficheros” que es donde el administrador creaun fichero de texto separados los campos por “;”, donde cada campo representa el nombre, el password, la OUdel usuario, la OU del grupo y fecha de expiración (para tiempo nulo se deja en blanco). 1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button2.Click 2 OpenFileDialog1.ShowDialog() 3 End Sub 4 5 Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 6 TextBox1.Text = OpenFileDialog1.FileName 7 End Sub 8 9 Sub CreateOrDelete(ByVal user As String, ByVal userOU As String, ByVal groupOU As String, ByVal pwd As String, ByVal folder As String, ByVal fecha As String) 10 If RadioButton1.Checked Then 11 CreateUser(user, userOU, groupOU, pwd, user, vbFalse) 12 If (fecha.Length > 0) And (fecha <> "mm/dd/yyyy") Then 13 Expires(user, userOU, fecha) 14 End If 27
  29. 29. 15 ElseIf RadioButton2.Checked Then 16 DeleteUser(user, userOU, user, vbFalse) 17 End If 18 End Sub 19 20 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 21 Dim archive As System.IO.StreamReader 22 Dim field() As String 23 Dim user, pwd, userOU, groupOU, fecha 24 If My.Computer.FileSystem.FileExists(TextBox1.Text) Then 25 archive = File.OpenText(TextBox1.Text) 26 Do Until archive.EndOfStream 27 field = Split(archive.ReadLine(), ";") 28 user = field(0) 29 pwd = field(1) 30 userOU = field(2) 31 groupOU = field(3) 32 fecha = field(4) 33 CreateOrDelete(user, userOU, groupOU, pwd, user, fecha) 34 Loop 35 archive.Close() 36 Else 37 MsgBox("No Existe: " & TextBox1.Text, 16, "Advertencia") 38 End If 39 End Sub La tercera manera, es la opción “Crear Varios” en “Carga por Secuencia” pero esta vez el administradorpuede crear un número finito de usuarios con características similar, de manera que todos se llamen igual salvoel no final que sería el identificatorio (ej. emple5). Se le deja la opción de elegir la palabra común, el no deinicio, y la cantidad de usuarios a crer o borrar. 1 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button3.Click 2 Dim i, j As Integer 3 Dim user, pwd, userOU, groupOU, fecha 4 For i = 0 To TextBox3.Text - 1 5 j = CInt(TextBox4.Text) + i 6 user = CStr(TextBox2.Text) & j 7 pwd = user 28
  30. 30. 8 userOU = CStr(TextBox7.Text)9 groupOU = CStr(TextBox5.Text)10 fecha = CStr(TextBox6.Text)11 CreateOrDelete(user, userOU, groupOU, pwd, user, fecha)12 Next13 End Sub 29
  31. 31. B. Grupos Dentro del script existen varios apartados referidos a los grupos. El primero es la opción “Crear/Eliminar”que crea o borra grupos locales o globales. 1 Sub CreateGroup() 2 On Error GoTo Existe 3 Const TYPE_GLOBAL = -2147483646 4 Const TYPE_LOCAL = -2147483644 5 Dim obj_OU, obj_Group 6 obj_OU = GetObject("LDAP://ou=" & TextBox3.Text() & "," & GDomain) 7 obj_Group = obj_OU.Create("group", "cn=" & TextBox1.Text()) 8 Existe: 9 If Err.Number = vbEmpty Then 10 obj_Group.Put("sAMAccountName", "" & TextBox1.Text()) 11 If RadioButton3.Checked() Then 12 obj_Group.Put("Grouptype", TYPE_GLOBAL) 13 ElseIf RadioButton4.Checked() Then 14 obj_Group.Put("Grouptype", TYPE_LOCAL) 15 End If 16 If TextBox2.Text.Length > 0 Then 17 obj_Group.Description = TextBox2.Text() 18 End If 19 obj_Group.SetInfo() 20 MsgBox("Grupo Creado.", 64, "Éxito") 21 Else 22 MsgBox("Existe", 16, "Advertencia") 23 End If 24 End Sub 25 26 Sub DeleteGroup() 27 On Error GoTo Existe 28 Dim obj_OU 29 obj_OU = GetObject("LDAP://ou=" & TextBox3.Text() & "," & GDomain) 30 obj_OU.Delete("group", "cn=" & TextBox1.Text()) 31 Existe: 32 If Err.Number = vbEmpty Then 33 obj_OU.SetInfo() 34 MsgBox("Grupo Eliminado.", 64, "Éxito") 35 Else 36 MsgBox("No Existe", 16, "Advertencia") 37 End If 38 End Sub 30
  32. 32. 39 40 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 41 If TextBox1.Text.Length > 0 Then 42 If RadioButton1.Checked() Then 43 If RadioButton3.Checked() Or RadioButton4.Checked() Then 44 CreateGroup() 45 Else 46 MsgBox("Marca una casilla: Local o Global.", 16, "Advertencia") 47 End If 48 ElseIf RadioButton2.Checked() Then 49 DeleteGroup() 50 Else 51 MsgBox("Selecciona: Crear o Borrar.", 16, "Advertencia") 52 End If 53 Else 54 MsgBox("Introduzca nombre del Grupo.", 16, "Advertencia") 55 End If 56 End Sub El segundo apartado está en la opción “Agregar Miembros”, donde el administrador primero señalaríaconque tipo de grupo va a trabajar. Si eligiese Local, pues en la etiqueta “Grupo” aparecerían todos los gruposLocales, y podría señalar uno. Luego, en la etiqueta “usuario/Grupos” aparecerían todos los grupos Globalesque existen en la OU Group que existen, y para terminar si cliqueas en el botón de “Miembros” podrías vercuales miembros ya están incluidos, y así de esa manera podrías elegir uno que mejor te convenga. 1 Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows .Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress 2 e.KeyChar() = "" 3 End Sub 4 5 Private Sub ComboBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows .Forms.KeyPressEventArgs) Handles ComboBox2.KeyPress 6 e.KeyChar() = "" 7 End Sub 8 9 Private Sub ComboBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows .Forms.KeyPressEventArgs) Handles ComboBox3.KeyPress 10 e.KeyChar() = "" 11 End Sub 12 31
  33. 33. 13 Private Sub ListingGroup()14 Const TYPE_GLOBAL = -214748364615 Const TYPE_LOCAL = -214748364416 ComboBox1.Items.Clear()17 Dim obj_OU18 obj_OU = GetObject("LDAP://ou=" & TextBox5.Text() & "," & GDomain)19 For Each obj_Member In obj_OU20 If (LCase(obj_Member.Class) = "group") Then21 If (RadioButton3.Checked) Then22 If (obj_Member.Grouptype = TYPE_GLOBAL) Then23 ComboBox1.Items.Add(obj_Member.sAMAccountName)24 End If25 ElseIf (RadioButton4.Checked) Then26 If (obj_Member.Grouptype = TYPE_LOCAL) Then27 ComboBox1.Items.Add(obj_Member.sAMAccountName)28 End If29 End If30 End If31 Next32 End Sub3334 Private Sub ListingGroupGlobal()35 Const TYPE_GLOBAL = -214748364636 ComboBox2.Items.Clear()37 Dim obj_OU38 obj_OU = GetObject("LDAP://ou=" & TextBox5.Text() & "," & GDomain)39 For Each obj_Member In obj_OU40 If (LCase(obj_Member.Class) = "group") Then41 If (obj_Member.Grouptype = TYPE_GLOBAL) Then42 ComboBox2.Items.Add(obj_Member.sAMAccountName)43 End If44 End If45 Next46 End Sub4748 Private Sub ListingUsers()49 ComboBox2.Items.Clear()50 Dim obj_Group51 obj_Group = GetObject("LDAP://cn=Domain User,ou=" & TextBox5.Text() & "," & GDomain)52 For Each obj_Member In obj_Group.Members53 ComboBox2.Items.Add(obj_Member.sAMAccountName)54 Next55 End Sub5657 Private Sub ListingMember()58 ComboBox3.Items.Clear()59 Dim obj_Group60 obj_Group = GetObject("LDAP://cn=" & ComboBox1.Text() & ",ou=" & TextBox5. Text() & "," & GDomain)61 For Each obj_Member In obj_Group.Members62 ComboBox3.Items.Add(obj_Member.sAMAccountName)63 Next64 End Sub6566 Sub AddUserGroup()67 Dim obj_Group, obj_User68 obj_Group = GetObject("LDAP://cn=" & ComboBox1.Text() & ",ou=" & TextBox5. Text() & "," & GDomain)69 obj_User = GetObject("LDAP://cn=" & ComboBox2.Text() & ",ou=" & TextBox4. Text() & "," & GDomain)70 If Not obj_Group.IsMember(obj_User.ADsPath) Then71 obj_Group.Add(obj_User.ADsPath)72 MsgBox("Añadido al Grupo", 64, "Éxito")73 Else74 MsgBox("Existe", 16, "Advertencia") 32
  34. 34. 75 End If 76 End Sub 77 78 Sub RemoveUserGroup() 79 Dim obj_Group, obj_User 80 obj_Group = GetObject("LDAP://cn=" & ComboBox1.Text() & ",ou=" & TextBox5. Text() & "," & GDomain) 81 obj_User = GetObject("LDAP://cn=" & ComboBox2.Text() & ",ou=" & TextBox4. Text() & "," & GDomain) 82 If obj_Group.IsMember(obj_User.ADsPath) Then 83 obj_Group.Remove(obj_User.ADsPath) 84 MsgBox("Eliminado del Grupo", 64, "Éxito") 85 Else 86 MsgBox("No Existe", 16, "Advertencia") 87 End If 88 End Sub 89 90 Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged 91 ListingGroup() 92 ListingUsers() 93 End Sub 94 95 Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged 96 ListingGroup() 97 ListingGroupGlobal() 98 End Sub 99100 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click101 If (ComboBox1.Text.Length > 0) And (ComboBox2.Text.Length > 0) Then102 If RadioButton1.Checked Then103 If RadioButton3.Checked Or RadioButton4.Checked Then104 AddUserGroup()105 Else106 MsgBox("Selecciona: Local o Global", 16, "Advertencia")107 End If108 ElseIf RadioButton2.Checked Then109 RemoveUserGroup()110 Else111 MsgBox("Selecciona: Añadir o Eliminar", 16, "Advertencia")112 End If113 ElseIf (ComboBox1.Text.Length > 0) Then114 MsgBox("Selecciona Usuario/Grupo.", 16, "Advertencia")115 ElseIf (ComboBox2.Text.Length > 0) Then116 MsgBox("Selecciona un Grupo.", 16, "Advertencia")117 Else118 If RadioButton3.Checked Or RadioButton4.Checked Then119 MsgBox("Selecciona un Grupo y Usuario/Grupo.", 16, "Advertencia")120 Else121 MsgBox("Selecciona el tipo de Grupo: Global o Local.", 16, " Advertencia")122 End If123 End If124 End Sub125126 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button2.Click127 If (ComboBox1.Text.Length() > 0) Then128 ListingMember()129 Else130 MsgBox("Selecciona un Grupo.", 16, "Advertencia")131 End If132 End Sub 33
  35. 35. C. Carpeta Para la creación o eliminación de carpetas se añadió tales métodos en el módulo “Module1”, debido a queeran métodos importantes y necesarios para la creación o eliminación de usuarios. En cambio, en el formulariode carpeta tan sólo se dejó el método de mover. 1 Sub MoveFolder() 2 Dim obj_FSO, obj_Folder 3 obj_FSO = CreateObject("Scripting.FileSystemObject") 4 obj_Folder = obj_FSO.MoveFolder(TextBox1.Text, TextBox2.Text) 5 MsgBox("Carpeta Movida.", 64, "Éxito") 6 End Sub 7 8 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 9 If RadioButton1.Checked Then 10 If TextBox1.Text.Length = 0 Then 11 MsgBox("Introduce la ruta Origen.", 16, "Advertencia") 12 Else 13 Me.ToolStripStatusLabel1.Text = "Creando Carpeta: " & CStr(TextBox1. Text) 14 CreateFolder(CStr(TextBox1.Text), vbTrue) 15 Me.ToolStripStatusLabel1.Text = "Carpeta: " & CStr(TextBox1.Text) & " Creada" 16 End If 17 ElseIf RadioButton2.Checked() Then 18 If TextBox1.Text.Length = 0 Then 19 MsgBox("Introduce la ruta Origen.", 16, "Advertencia") 20 Else 21 DeleteFolder(CStr(TextBox1.Text), vbTrue) 22 End If 23 ElseIf RadioButton3.Checked Then 24 If (TextBox1.Text.Length = 0) Or (TextBox2.Text.Length = 0) Then 25 MsgBox("Introduce la ruta Origen y Destino.", 16, "Advertencia") 26 Else 27 MoveFolder() 28 End If 29 Else 30 MsgBox("Marca una casilla: Crear, Borrar o Mover", 16, "Advertencia") 31 End If 32 End Sub 34
  36. 36. D. Security Policy No se pudo acabar con éxito en su totalidad, debido a que no se encuentra solución al tratamiento de losdías y minutos. Al final se optó sólo por utilizar las que fueron posibles manipular. 1 Sub Configuration() 2 Dim obj_Domain 3 obj_Domain = GetObject("LDAP://" & GDomain) 4 obj_Domain.Put("minPwdLength", CInt(TextBox3.Text())) 5 ’obj_Domain.Put("minPwdAge", CInt(TextBox2.Text())) 6 ’obj_Domain.Put("maxPwdAge", CLng(TextBox1.Text()) * 86400) 7 obj_Domain.Put("pwdHistoryLength", CInt(TextBox4.Text())) 8 ’obj_Domain.Put("lockoutDuration", TextBox5.Text()) 9 obj_Domain.Put("lockoutThreshold", CInt(TextBox6.Text())) 10 ’obj_Domain.Put("lockoutObservationWindow", TextBox7.Text()) 11 obj_Domain.SetInfo() 12 End Sub 13 14 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 15 Configuration() 16 GLenghtPwd = TextBox3.Text 17 End Sub 35
  37. 37. E. Compartir Existe otro formulario que sirve para compartir carpetas. En este formulario se añade la ruta de la carpeta,el nombre que recibirá el recurso, y una descripción que es opcional. 1 Sub CreateShare() 2 Const FILE_SHARE = 0 3 Const MAXIMUM_CONNECTIONS = 25 4 Dim objWMIService, errReturn, objNewShare 5 objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!" & GServer & "rootcimv2") 6 objNewShare = objWMIService.Get("Win32_Share") 7 errReturn = objNewShare.Create(CStr(TextBox1.Text), CStr(TextBox2.Text), FILE_SHARE, MAXIMUM_CONNECTIONS, CStr(TextBox3.Text)) 8 MsgBox("Recurso Compartido.", 64, "Éxito") 9 End Sub 10 11 Function ExistsFolder() As Boolean 12 Dim obj_FSO 13 obj_FSO = CreateObject("Scripting.FileSystemObject") 14 If obj_FSO.FolderExists(TextBox1.Text) Then 15 ExistsFolder = True 16 Else 17 ExistsFolder = False 18 End If 19 End Function 20 21 Function ExistsFile() As Boolean 22 Dim obj_FSO 23 obj_FSO = CreateObject("Scripting.FileSystemObject") 24 If obj_FSO.FileExists(TextBox1.Text) Then 25 ExistsFile = True 26 Else 27 ExistsFile = False 28 End If 29 End Function 30 31 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 32 If TextBox1.Text.Length = 0 Then 33 MsgBox("Introduzca la ruta de la carpeta o fichero a compartir.", 16, " Advertencia") 34 ElseIf TextBox2.Text.Length = 0 Then 36
  38. 38. 35 MsgBox("Introduzca el nombre que desea para el recurso compartido.", 16, "Advertencia")36 Else37 If ExistsFile() Or ExistsFolder() Then38 CreateShare()39 Else40 MsgBox("No existe", 16, "Advertencia")41 End If42 End If43 End Sub 37
  39. 39. F. Permisos NTFS Para poder otorgar permisos especiales se hizo necesaria la herramienta “Xcacls.vbs”. Para poder utilizarla,primero se tuvo que instalar, y cuando solicitó una ubicación se seleccionó C:Windows. Luego, hubo quecambiar el motor de secuencias de comandos predeterminado de Wscript a Cscript. Para conseguirlo, se tuvoque escribir en la línea de comandos cscript.exe /h:cscript. El resto fue utilizar WScript.shell. 1 Sub Permission(ByVal Path As String, ByVal userOrGroup As String, ByVal permiso As String) 2 Dim Obj_Shell 3 Obj_Shell = CreateObject("WScript.shell") 4 Obj_Shell.Run("icacls " & Path & " /Grant:r " & userOrGroup & ":" & permiso) 5 End Sub 6 7 Function Simple() 8 If rdbControlT.Checked Then 9 Simple = "F" 10 ElseIf rdbModify.Checked Then 11 Simple = "M" 12 ElseIf rdbReadExejute.Checked Then 13 Simple = "RX" 14 ElseIf rdbRead.Checked Then 15 Simple = "R" 16 ElseIf rdbWrite.Checked Then 17 Simple = "W" 18 ElseIf rdbNone.Checked Then 19 Simple = "N" 20 Else 21 Simple = "" 22 End If 23 End Function 24 25 Sub add(ByRef cadena As String, ByVal cadenaAdd As String, ByRef posicion As Boolean) 26 If posicion Then 27 cadena = cadena & cadenaAdd 28 posicion = False 29 Else 30 cadena = cadena & "," & cadenaAdd 31 End If 32 End Sub 33 38
  40. 40. 34 Function Specific()35 Dim aux As String36 Dim first As Boolean37 first = True38 aux = "("39 If chkListing.Checked Then40 add(aux, "RD", first)41 End If42 If chkAddFile.Checked Then43 add(aux, "WD", first)44 End If45 If chkAddSubDirectory.Checked Then46 add(aux, "AD", first)47 End If48 If chkReadAttribute.Checked Then49 add(aux, "RA", first)50 End If51 If chkWriteAttribute.Checked Then52 add(aux, "WD", first)53 End If54 If chkExecute.Checked Then55 add(aux, "X", first)56 End If57 If aux.Length = 1 Then58 aux = ""59 Else60 aux = aux & ")"61 End If62 Specific = aux63 End Function6465 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click66 Dim permiso, permiso2 As String67 permiso = Simple()68 permiso2 = Specific()69 If txtPath.Text.Length > 0 And txtUserGroup.Text.Length > 0 Then70 If permiso.Length = 0 And permiso2.Length = 0 Then71 MsgBox("Selecciona un permiso.", 16, "Advertencia")72 ElseIf permiso2.Length > 0 Then73 Permission(CStr(txtPath.Text), CStr(txtUserGroup.Text), permiso2)74 Else75 Permission(CStr(txtPath.Text), CStr(txtUserGroup.Text), permiso)76 End If77 Else78 MsgBox("Rellene ruta y usuario/Grupo.", 16, "Advertencia")79 End If80 End Sub 39
  41. 41. G. Permiso Share Este formulario es un complementario del anexo E. Ya que una vez compartida la carpeta, se le añade aun grupo o a un usurio una serie de permisos a esa carpeta (recurso). En este formulario al igual que se hizoen los permisos NTFS, nos tuvimos que valer de un recurso externo. En este caso, fue RMTSHAR el cual es unarchivo que deberá estár presente en la localización del script para que pueda funcionar. 1 Sub AddPermission(ByVal ShareName As String, ByVal userOrGroup As String, ByVal permiso As String) 2 Dim Obj_Shell 3 Obj_Shell = CreateObject("WScript.shell") 4 Obj_Shell.Run("RMTSHARE.exe " & GServer & "" & ShareName & " /GRANT " & userOrGroup & ":" & permiso, 3) 5 MsgBox("Permiso Concedido.", 64, "Éxito") 6 End Sub 7 8 Sub mierda() 9 Dim Obj_Shell 10 Obj_Shell = CreateObject("WScript.shell") 11 Obj_Shell.Run("cmd /k cd c: | dir,3, true") 12 Obj_Shell = Nothing 13 MsgBox("Permiso Concedido.", 64, "Éxito") 14 End Sub 15 16 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) 17 mierda() 18 End Sub 19 20 Sub DeletePermission(ByVal ShareName As String, ByVal userOrGroup As String) 21 Dim Obj_Shell 22 Obj_Shell = CreateObject("WScript.shell") 23 Obj_Shell.Run("rmtshare " & GServer & "" & ShareName & " /REMOVE " & userOrGroup) 24 MsgBox("Permiso Restring.", 64, "Éxito") 25 End Sub 26 27 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Button1.Click 28 If TextBox1.Text.Length = 0 Then 29 MsgBox("Rellene nombre del Recurso.", 16, "Advertencia") 30 ElseIf TextBox2.Text.Length = 0 Then 40
  42. 42. 31 MsgBox("Rellene nombre del Grupo/Usuario.", 16, "Advertencia")32 Else33 If RadioButton1.Checked Then34 If RadioButton3.Checked Then35 AddPermission(CStr(TextBox1.Text), CStr(TextBox2.Text), "R")36 ElseIf RadioButton4.Checked Then37 AddPermission(CStr(TextBox1.Text), CStr(TextBox2.Text), "C")38 ElseIf RadioButton5.Checked Then39 AddPermission(CStr(TextBox1.Text), CStr(TextBox2.Text), "F")40 Else41 MsgBox("Seleccione un tipo de permiso.", 16, "Advertencia")42 End If43 ElseIf RadioButton2.Checked Then44 DeletePermission(CStr(TextBox1.Text), CStr(TextBox2.Text))45 Else46 MsgBox("Seleccione Añadir/Eliminar.", 16, "Advertencia")47 End If48 End If49 End Sub 41

×