Administracion de Sistemas

42
Administración de Sistemas Usuarios y Protección en Windows 2003 I TAHISA M. DÍAZ DÍAZ MARÍA D. BATISTA GALVÁN ESCUELA TÉCNICA SUPERIOR DE I NGENIERÍA I NFORMÁTICA Universidad de La Laguna

description

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

Transcript of Administracion de Sistemas

Page 1: Administracion de Sistemas

Administración de SistemasUsuarios y Protección en Windows 2003

ITAHISA M. DÍAZ DÍAZ

MARÍA D. BATISTA GALVÁN

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA

Universidad de La Laguna

Page 2: Administracion de Sistemas

RESUMEN. 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

Page 3: Administracion de Sistemas

Índice

1. Sistemas 3

2. Contraseñas 5

3. Directorio privado de los usuarios 9

4. Proyectos de la organización 13

5. Usuarios de la Organización 17

6. Directores de los proyectos 20

7. Ejecutivos de la organización 21

8. Resto de usuarios 22

Anexos 24

A. Usuarios 24

B. Grupos 30

C. Carpeta 34

D. Security Policy 35

E. Compartir 36

F. Permisos NTFS 38

G. Permiso Share 40

2

Page 4: Administracion de Sistemas

POLÍTICA DE SEGURIDAD DE LA ORGANIZACIÓN

1. SistemasCualquier usuario debe poder apagar el sistema.

En este primer punto, al menos en lo que respecta a conceder al usuario el privilegio de apagar elsistema, no fue necesario configurar nada puesto que el usuario ya tiene por defecto ese privilegio depoder 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 fuenecesario crear a los usuarios, lo que se explicará más adelante (véase apartado 2). Por tanto, se partede 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 laque se le llamó People) y se seleccionaron los usuarios del turno de mañana (pues se le asignaron lashoras según su turno, tal y cómo se propone en el punto ??.

(a) Properties (b) Account

Figura 1: Properties → Account

3

Page 5: Administracion de Sistemas

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 Hour

Finalmente se procedió de igual forma para los del grupo de tarde.

4

Page 6: Administracion de Sistemas

2. ContraseñasA 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 decreación de usuario.

CREACIÓN DE USUARIOS

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 ventanadonde 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 yalgunas 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), yno se marcó ninguna de las opciones, puesto que se configurarían posteriormente siguiendo las pautasque 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 figura4).

5

Page 7: Administracion de Sistemas

Figura 4: OU People

Los 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 Policy

Y luego, en dicha herramienta, en el árbol que aparece a la izquierda, se eligió:

Account Policies → Password Policy

Al 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

Page 8: Administracion de Sistemas

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 Policy

Para 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 Policies

Donde 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 Policy

Y, 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

Page 9: Administracion de Sistemas

Figura 5: Audit Policy

Para 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 → Security

y que el usuario quedó inhabilitado en Active Directory Users and Computer.

8

Page 10: Administracion de Sistemas

3. Directorio privado de los usuariosCada 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 delservidor, cuyo nombre coincida con el de la cuenta del usuario. El usuario podrá accederautomáticamente a este directorio a partir de la unidad n: desde cualquier máquina deldominio.

En primer lugar, se creó el directorio home en C:\ y dentro de home una carpeta por cada usuario de laorganización (desde emple1 hasta emple10, además de ejec1 y ejec2), como se muestra a continuaciónen la imagen:

En el directorio C:\home (botón derecho del ratón) se eligió “Sharing and Security” (véase la figura7(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 alrecurso 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 grupoespecial creado para introducir a todos los usuarios de la organización, al que se le dio control total endicho recurso (\\home), para permitir a todos los usuarios acceder al mismo directorio y no limitarleluego 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”, semarcó la casilla “Connect” y elegimos la unidad N: tal y como dicta el enunciado de este apartado; y en

9

Page 11: Administracion de Sistemas

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.110\home\%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

Page 12: Administracion de Sistemas

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: Herencia

Luego, 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

Page 13: Administracion de Sistemas

Figura 10: Control Total

De 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

Page 14: Administracion de Sistemas

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 losproyectos en los que participe a partir de las unidades p:, q:,... desde cualquier máquinadel dominio.

En este apartado, fue necesario el mapeo de las unidades. En primer lugar, se crearon tres carpetas paracada proyecto bajo el directorio C:\proyectos\ con el nombre de cada proyecto (auditorio, aeropuertoy parque). Dichos directorios fueron compartidos en red, de la misma manera que se ha explicado enapartados anteriores; en cuánto a los permisos que se les dieron, se tratará en los siguientes subapartadoscon mayor detenimiento, puesto que requerían de una seguridad más personalizada y por tanto del usode los permisos especiales (véase en subapartados siguientes).

A continuación en C:\WINDOWS\SYSVOL\sysvol\as07.org\scripts se agregó un fichero .bat llamadounidad.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 correspondientesproyectos. El código fue el siguiente:

1 net use p: \\192.168.1.110\auditorio2 net use q: \\192.168.1.110\aeropuerto3 net use r: \\192.168.1.110\parque

Decir, además que las carpetas sysvol y scripts de la ruta anterior hubo que compartirlos con los usuariosde la organización (Grupo Domain User) con permiso de lectura y al .bat se le asignó también permisode 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 seañadió el nombre del .bat (véase la figura 12). De esa manera, ya se mapearían las unidades nada másel usuario iniciará sesión y tendrían acceso a ellas, en el caso de contar con los permisos necesarios.

13

Page 15: Administracion de Sistemas

Figura 12: Local Script

Todos 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.

CREACIÓN DE GRUPOS

Para 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

Page 16: Administracion de Sistemas

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 Grupo

El 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 Miembros

Se 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

Page 17: Administracion de Sistemas

Figura 15: OU Group

Bien, 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

Page 18: Administracion de Sistemas

5. Usuarios de la OrganizaciónLos 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 usuariosque ya se había modificado previamente a la manera deseada. Hubo que entrar como Administrador ylo 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)). Seseleccionar el perfil que se había modificado y se quería exportar, y luego se pulsó en “Copiar a” (véasela figura 17(b)).

(a) Configuración (b) Copiar a

Figura 17: Exportar Perfil de Usuario

17

Page 19: Administracion de Sistemas

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, \\Ord07\perfil (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 Obligatorio

Como ú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

Page 20: Administracion de Sistemas

Figura 19: Profile Path

De 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

Page 21: Administracion de Sistemas

6. Directores de los proyectosCada 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 losdirectores: en los grupos Globales de Directores (G***Dir) se introdujeron a los usuarios responsablesde 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 eranresponsables (véase la figura 20).

Figura 20: Grupo de Directores

20

Page 22: Administracion de Sistemas

7. Ejecutivos de la organizaciónPodrá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 seha 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ólolectura y ejecución al grupo Local de Ejecutivos (LEje) para que se limiten únicamente a ello (véase lafigura 21).

Figura 21: Permisos Para los Ejecutivos

21

Page 23: Administracion de Sistemas

8. Resto de usuariosNo 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 dichosdirectorios. Por lo que no es necesario denegarlos, sino simplemente no asignarlos.

22

Page 24: Administracion de Sistemas

SITUACIÓ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 demañ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 6meses).

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 cualse crearon dos usuarios con los respectivos nombres, un grupo local y otro global para establecer suspermisos particulares.

23

Page 25: Administracion de Sistemas

ANEXOSExisten algunos pocos más formularios, pero no se presentan debido a la falta de espacio, y

a que se piensan que no son tan relevantes (ej. creación de OU, habilitar/deshabilitar usuario,mapear unidad, ...).

A. UsuariosEn el script se tiene 3 maneras de crear usuarios. Y cada una de estas maneras tienen en común una serie

de métodos que están introducidas en un módulo, llamado “Module 1” y a continuación se describen:

1 Module Module12

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 = 48

9 Public GServer As String = "\\192.168.1.110"10

11

12 ’*************************************************************************13 ’ CREACIÓN Y ELIMINACIÓN DE USUARIOS : Form => Users, MultiUser14 ’*************************************************************************15

16 Public Sub CreateUser(ByVal user As String, ByVal userOU As String, ByValgroupOU As String, ByVal pwd As String, ByVal folder As String, ByValMessage As Boolean)

17 On Error GoTo Existe18 Err.Clear()19 Dim obj_OU, obj_User20 obj_OU = GetObject("LDAP://ou=" & userOU & "," & GDomain)21 obj_User = obj_OU.Create("user", "cn=" & user)22 Existe:23 If Err.Number = vbEmpty Then24 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 Then35 MsgBox("Usuario " & user & " Creado.", 64, "Éxito")36 End If37 Else38 If Message Then39 MsgBox("Existe: " & user, 16, "Advertencia")40 End If41 End If42 End Sub43

44 Public Sub UserEnable(ByVal user As String, ByVal userOU As String, ByValdisabled As Boolean)

24

Page 26: Administracion de Sistemas

45 Dim obj_User46 obj_User = GetObject("LDAP://cn=" & user & ",ou=" & userOU & "," & GDomain)47 obj_User.AccountDisabled = disabled48 obj_User.SetInfo()49 End Sub50

51 Public Sub AddUserGroup(ByVal user As String, ByVal userOU As String, ByValgroupOU As String)

52 Dim obj_Group, obj_User53 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) Then56 obj_Group.Add(obj_User.ADsPath)57 End If58 End Sub59

60 Public Sub Expires(ByVal user As String, ByVal userOU As String, ByVal fecha AsString)

61 Dim obj_User62 obj_User = GetObject("LDAP://cn=" & user & ",ou=" & userOU & "," & GDomain)63 obj_User.AccountExpirationDate = fecha64 obj_User.SetInfo()65 End Sub66

67 Public Sub DeleteUser(ByVal user As String, ByVal userOU As String, ByVal folderAs String, ByVal Message As Boolean)

68 On Error GoTo Existe69 Dim obj_OU = GetObject("LDAP://ou=" & userOU & "," & GDomain)70 obj_OU.Delete("user", "cn=" & user)71 Existe:72 If Err.Number = vbEmpty Then73 obj_OU.SetInfo()74 DeleteFolder("C:\home\" & Folder, vbFalse)75 If Message Then76 MsgBox("Usuario " & user & " Eliminado.", 64, "Éxito")77 End If78 Else79 If Message Then80 MsgBox("No Existe: " & user, 16, "Advertencia")81 End If82 End If83 End Sub84

85 ’*************************************************************************86 ’ CREACIÓN Y BORRADO DE CARPETAS : Form => Users, Folder87 ’*************************************************************************88 Public Sub CreateFolder(ByVal archive As String, ByVal Message As Boolean)89 Dim obj_FSO, obj_Folder90 obj_FSO = CreateObject("Scripting.FileSystemObject")91 If obj_FSO.FolderExists(archive) Then92 If Message Then93 MsgBox("Existe: " & archive, 16, "Advertencia")94 End If95 Else96 obj_Folder = obj_FSO.CreateFolder(archive)97 If Message Then98 MsgBox("Carpeta " & archive & " Creada.", 64, "Éxito")99 End If

100 End If101 End Sub102

103 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

Page 27: Administracion de Sistemas

107 If Message Then108 MsgBox("No Existe: " & archive, 16, "Advertencia")109 End If110 Else111 obj_Folder = obj_FSO.DeleteFolder(archive)112 If Message Then113 MsgBox("Carpeta Borrada.", 64, "Éxito")114 End If115 End If116 End Sub117

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() Then3 If TextBox1.Text.Length = 0 Then4 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia")5 Else6 If TextBox2.Text.Length >= GLenghtPwd Then7 CreateUser(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr(

TextBox4.Text), CStr(TextBox2.Text), CStr(TextBox1.Text()),vbTrue)

8 Else9 MsgBox("Contraseña menor de " & GLenghtPwd & " caracteres.", 16,

"Advertencia")10 End If11 End If12 ElseIf RadioButton2.Checked() Then13 If TextBox1.Text.Length = 0 Then14 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia")15 Else16 DeleteUser(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr(TextBox1.

Text()), vbTrue)

26

Page 28: Administracion de Sistemas

17 End If18 ElseIf RadioButton3.Checked Then19 If TextBox1.Text.Length = 0 Then20 MsgBox("Introduce el nombre de usuario.", 16, "Advertencia")21 Else22 If (TextBox5.Text.Length > 0) And (TextBox5.Text <> "mm/dd/yyyy")

Then23 Expires(CStr(TextBox1.Text), CStr(TextBox3.Text), CStr(TextBox5.

Text))24 Else25 MsgBox("Introduce fecha de expiración.", 16, "Advertencia")26 End If27 End If28 Else29 MsgBox("Selecciona: Crear, Borrar o Expirar", 16, "Advertencia")30 End If31 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 Sub4

5 Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e AsSystem.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk

6 TextBox1.Text = OpenFileDialog1.FileName7 End Sub8

9 Sub CreateOrDelete(ByVal user As String, ByVal userOU As String, ByVal groupOUAs String, ByVal pwd As String, ByVal folder As String, ByVal fecha AsString)

10 If RadioButton1.Checked Then11 CreateUser(user, userOU, groupOU, pwd, user, vbFalse)12 If (fecha.Length > 0) And (fecha <> "mm/dd/yyyy") Then13 Expires(user, userOU, fecha)14 End If

27

Page 29: Administracion de Sistemas

15 ElseIf RadioButton2.Checked Then16 DeleteUser(user, userOU, user, vbFalse)17 End If18 End Sub19

20 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

21 Dim archive As System.IO.StreamReader22 Dim field() As String23 Dim user, pwd, userOU, groupOU, fecha24 If My.Computer.FileSystem.FileExists(TextBox1.Text) Then25 archive = File.OpenText(TextBox1.Text)26 Do Until archive.EndOfStream27 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 Loop35 archive.Close()36 Else37 MsgBox("No Existe: " & TextBox1.Text, 16, "Advertencia")38 End If39 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 Integer3 Dim user, pwd, userOU, groupOU, fecha4 For i = 0 To TextBox3.Text - 15 j = CInt(TextBox4.Text) + i6 user = CStr(TextBox2.Text) & j7 pwd = user

28

Page 30: Administracion de Sistemas

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

Page 31: Administracion de Sistemas

B. GruposDentro 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 Existe3 Const TYPE_GLOBAL = -21474836464 Const TYPE_LOCAL = -21474836445 Dim obj_OU, obj_Group6 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() Then12 obj_Group.Put("Grouptype", TYPE_GLOBAL)13 ElseIf RadioButton4.Checked() Then14 obj_Group.Put("Grouptype", TYPE_LOCAL)15 End If16 If TextBox2.Text.Length > 0 Then17 obj_Group.Description = TextBox2.Text()18 End If19 obj_Group.SetInfo()20 MsgBox("Grupo Creado.", 64, "Éxito")21 Else22 MsgBox("Existe", 16, "Advertencia")23 End If24 End Sub25

26 Sub DeleteGroup()27 On Error GoTo Existe28 Dim obj_OU29 obj_OU = GetObject("LDAP://ou=" & TextBox3.Text() & "," & GDomain)30 obj_OU.Delete("group", "cn=" & TextBox1.Text())31 Existe:32 If Err.Number = vbEmpty Then33 obj_OU.SetInfo()34 MsgBox("Grupo Eliminado.", 64, "Éxito")35 Else36 MsgBox("No Existe", 16, "Advertencia")37 End If38 End Sub

30

Page 32: Administracion de Sistemas

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 Then42 If RadioButton1.Checked() Then43 If RadioButton3.Checked() Or RadioButton4.Checked() Then44 CreateGroup()45 Else46 MsgBox("Marca una casilla: Local o Global.", 16, "Advertencia")47 End If48 ElseIf RadioButton2.Checked() Then49 DeleteGroup()50 Else51 MsgBox("Selecciona: Crear o Borrar.", 16, "Advertencia")52 End If53 Else54 MsgBox("Introduzca nombre del Grupo.", 16, "Advertencia")55 End If56 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 Sub4

5 Private Sub ComboBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox2.KeyPress

6 e.KeyChar() = ""7 End Sub8

9 Private Sub ComboBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox3.KeyPress

10 e.KeyChar() = ""11 End Sub12

31

Page 33: Administracion de Sistemas

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 Sub33

34 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 Sub47

48 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 Sub56

57 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 Sub65

66 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

Page 34: Administracion de Sistemas

75 End If76 End Sub77

78 Sub RemoveUserGroup()79 Dim obj_Group, obj_User80 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) Then83 obj_Group.Remove(obj_User.ADsPath)84 MsgBox("Eliminado del Grupo", 64, "Éxito")85 Else86 MsgBox("No Existe", 16, "Advertencia")87 End If88 End Sub89

90 Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles RadioButton3.CheckedChanged

91 ListingGroup()92 ListingUsers()93 End Sub94

95 Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles RadioButton4.CheckedChanged

96 ListingGroup()97 ListingGroupGlobal()98 End Sub99

100 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

101 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 Sub125

126 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

127 If (ComboBox1.Text.Length() > 0) Then128 ListingMember()129 Else130 MsgBox("Selecciona un Grupo.", 16, "Advertencia")131 End If132 End Sub

33

Page 35: Administracion de Sistemas

C. CarpetaPara la creación o eliminación de carpetas se añadió tales métodos en el módulo “Module1”, debido a que

eran 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_Folder3 obj_FSO = CreateObject("Scripting.FileSystemObject")4 obj_Folder = obj_FSO.MoveFolder(TextBox1.Text, TextBox2.Text)5 MsgBox("Carpeta Movida.", 64, "Éxito")6 End Sub7

8 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

9 If RadioButton1.Checked Then10 If TextBox1.Text.Length = 0 Then11 MsgBox("Introduce la ruta Origen.", 16, "Advertencia")12 Else13 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 If17 ElseIf RadioButton2.Checked() Then18 If TextBox1.Text.Length = 0 Then19 MsgBox("Introduce la ruta Origen.", 16, "Advertencia")20 Else21 DeleteFolder(CStr(TextBox1.Text), vbTrue)22 End If23 ElseIf RadioButton3.Checked Then24 If (TextBox1.Text.Length = 0) Or (TextBox2.Text.Length = 0) Then25 MsgBox("Introduce la ruta Origen y Destino.", 16, "Advertencia")26 Else27 MoveFolder()28 End If29 Else30 MsgBox("Marca una casilla: Crear, Borrar o Mover", 16, "Advertencia")31 End If32 End Sub

34

Page 36: Administracion de Sistemas

D. Security PolicyNo se pudo acabar con éxito en su totalidad, debido a que no se encuentra solución al tratamiento de los

días y minutos. Al final se optó sólo por utilizar las que fueron posibles manipular.

1 Sub Configuration()2 Dim obj_Domain3 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 Sub13

14 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

15 Configuration()16 GLenghtPwd = TextBox3.Text17 End Sub

35

Page 37: Administracion de Sistemas

E. CompartirExiste 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 = 03 Const MAXIMUM_CONNECTIONS = 254 Dim objWMIService, errReturn, objNewShare5 objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!"

& GServer & "\root\cimv2")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 Boolean12 Dim obj_FSO13 obj_FSO = CreateObject("Scripting.FileSystemObject")14 If obj_FSO.FolderExists(TextBox1.Text) Then15 ExistsFolder = True16 Else17 ExistsFolder = False18 End If19 End Function20

21 Function ExistsFile() As Boolean22 Dim obj_FSO23 obj_FSO = CreateObject("Scripting.FileSystemObject")24 If obj_FSO.FileExists(TextBox1.Text) Then25 ExistsFile = True26 Else27 ExistsFile = False28 End If29 End Function30

31 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

32 If TextBox1.Text.Length = 0 Then33 MsgBox("Introduzca la ruta de la carpeta o fichero a compartir.", 16, "

Advertencia")34 ElseIf TextBox2.Text.Length = 0 Then

36

Page 38: Administracion de Sistemas

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

Page 39: Administracion de Sistemas

F. Permisos NTFSPara 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 permisoAs String)

2 Dim Obj_Shell3 Obj_Shell = CreateObject("WScript.shell")4 Obj_Shell.Run("icacls " & Path & " /Grant:r " & userOrGroup & ":" & permiso)5 End Sub6

7 Function Simple()8 If rdbControlT.Checked Then9 Simple = "F"

10 ElseIf rdbModify.Checked Then11 Simple = "M"12 ElseIf rdbReadExejute.Checked Then13 Simple = "RX"14 ElseIf rdbRead.Checked Then15 Simple = "R"16 ElseIf rdbWrite.Checked Then17 Simple = "W"18 ElseIf rdbNone.Checked Then19 Simple = "N"20 Else21 Simple = ""22 End If23 End Function24

25 Sub add(ByRef cadena As String, ByVal cadenaAdd As String, ByRef posicion AsBoolean)

26 If posicion Then27 cadena = cadena & cadenaAdd28 posicion = False29 Else30 cadena = cadena & "," & cadenaAdd31 End If32 End Sub33

38

Page 40: Administracion de Sistemas

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 Function64

65 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

66 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

Page 41: Administracion de Sistemas

G. Permiso ShareEste formulario es un complementario del anexo E. Ya que una vez compartida la carpeta, se le añade a

un 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, ByValpermiso As String)

2 Dim Obj_Shell3 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 Sub7

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 = Nothing13 MsgBox("Permiso Concedido.", 64, "Éxito")14 End Sub15

16 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

17 mierda()18 End Sub19

20 Sub DeletePermission(ByVal ShareName As String, ByVal userOrGroup As String)21 Dim Obj_Shell22 Obj_Shell = CreateObject("WScript.shell")23 Obj_Shell.Run("rmtshare " & GServer & "\" & ShareName & " /REMOVE " &

userOrGroup)24 MsgBox("Permiso Restring.", 64, "Éxito")25 End Sub26

27 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

28 If TextBox1.Text.Length = 0 Then29 MsgBox("Rellene nombre del Recurso.", 16, "Advertencia")30 ElseIf TextBox2.Text.Length = 0 Then

40

Page 42: Administracion de Sistemas

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