Вы находитесь на странице: 1из 5

1. Introducción.

Como todo informático que debe controlar la gestión que se realiza de los recursos
software y hardware de una empresa, siempre aborrecemos tener que repetir nuestro trabajo.
Cuando hemos logrado diseñar una configuración satisfactoria para una determinada situación,
después debemos rehacerla para otras situaciones semejantes.
En este tema pretenderemos automatizar algunos aspectos relacionados con la creación
de usuarios y grupos de usuarios, configuración de cuentas y gestión de permisos.
Dado que se trata de un curso no muy extenso, no profundizaremos mucho, pero, al
menos, quedará el camino abierto para que cada uno pueda continuar en la medida de sus
necesidades.
Vamos a atacar el problema desde dos puntos de vista diferentes.
Por un lado, haremos uso de los comandos de consola, del tipo del comando NET y
otros, creando ficheros “.bat”.
Por otro lado, intentaremos aprovechar más la potencia de la programación, haciendo
uso de la gestión de los objetos de Active Directory con Windows Script Host (WSH),
programando con VBScript.

2. Comandos NET y Ficheros BAT.


Existen muchos comandos relacionados con la gestión de usuarios que comienzan con
NET (no todos), de ahí ese agrupamiento común. La gran mayoría de estos comandos los
podemos utilizar tanto en Windows NT como en Windows 2003 Server, incluso en máquinas
independientes con Windows XP.

Naturalmente, para conseguir crear unas tareas que merezcan la pena, habrá que
colocar varios comandos en un fichero “.bat” que ejecutaremos después. Además, este fichero
podrá leer datos de un fichero de texto para facilitarnos la creación de varios usuarios de
manera desatendida.

Hay que tener en cuenta, que si los comandos se ejecutan en un equipo cliente, se
aplicarán a sus usuarios (y otros objetos) locales, a nos ser que se indique, mediante un
parámetro, el nombre del Dominio. Cuando se ejecutan en un Controlador de dominio se
aplican a los usuarios (y otros objetos) del dominio.

2.1. Comandos NET.


Algunos de los principales comandos los comentaremos a continuación, aunque se
adjunta con el tema una relación más completa.

Net User
Agrega o modifica cuentas de usuario o muestra información acerca de ellas.
net user [nombre_usuario [contraseña | *] [opciones]] [/domain]
net user nombre_usuario {contraseña | *} /add [opciones] [/domain]
net user nombre_usuario [/delete] [/domain]

net user, sin parámetros: para ver una lista de las cuentas de usuario del equipo.

nombre_usuario: nombre de la cuenta de usuario que se desea agregar, eliminar, modificar o


ver.
contraseña: asigna o cambia una contraseña para la cuenta de usuario. Si ponemos * pedirá la
contraseña en tiempo de ejecución. Los caracteres no se muestran en pantalla a medida que
se escriben.

/add: agrega una cuenta de usuario a la base de datos de cuentas de usuario.

/delete: quita una cuenta de usuario de la base de datos de cuentas de usuario.


Opciones:
/active:{no | yes}: desactiva o activa la cuenta de usuario. El valor predeterminado es yes
(activa).

/comment:"texto": proporciona un comentario descriptivo acerca de la cuenta de usuario. Puede


tener hasta 48 caracteres, entre comillas.

/expires:{fecha | never}: establece una fecha de caducidad de la cuenta de usuario o una


duración ilimitada. Las fechas pueden darse en el formato mm/dd/aa, dd/mm/aa o mm,dd,aa,
dependiendo de /countrycode.

/fullname:"nombre": agrega un nombre al usuario en lugar de su nombre de usuario normal.


/homedir:ruta_acceso: establece la ruta de acceso del directorio particular del usuario. Debe
ser una ya existente.

/passwordchg:{yes | no}: especifica si los usuarios pueden o no cambiar su contraseña. El valor


predeterminado es yes.

/passwordreq:{yes | no}: especifica si una cuenta de usuario debe tener una contraseña. El
valor predeterminado es yes.

/profilepath[:ruta_acceso]: establece una ruta de acceso para el perfil del usuario.

/scriptpath:ruta_acceso: ruta del archivo de comandos de inicio de sesión, debe ser relativa a
%raíz_sistema%\SYSTEM32\REPL\IMPORT\SCRIPTS.

Ejemplos:

Para mostrar una lista de todas las cuentas de usuario:


net user

Para ver información acerca de la cuenta juanh:


net user juanh

Para agregar una cuenta de usuario para Enrique Pérez, con una contraseña obligatoria y el
nombre completo del usuario:
net user enriquep pswenriquep /add /passwordreq:yes /fullname:"Enrique Pérez"

Para establecer /homedirreq en yes para enriquep y asignarle


\\SERVIDOR\USUARIOS\\ENRIQUEP como directorio particular:
net user enriquep /homedirreq:yes /homedir \\SERVIDOR\USUARIOS\ENRIQUEP

Net Group
Agrega, muestra o modifica grupos globales en dominios de Windows NT/2003 Server.
Este comando sólo está disponible en los dominios de Windows Server.
net group [nombre_grupo [/comment:"texto"]] [/domain]
net group nombre_grupo {/add [/comment:"texto"] | /delete} [/domain]
net group nombre_grupo nombre_usuario[...] {/add | /delete} [/domain]

net group, sin parámetros: para mostrar el nombre de un servidor y los nombres de los grupos
de dicho servidor. Los nombres de grupos que vayan precedidos por un asterisco (*), serán
aquellos que incluyan usuarios y grupos.

nombre_grupo: grupo que va a agregarse, expandirse o eliminarse. Especifique un nombre de


grupo para ver la lista de los usuarios correspondientes.

/comment:"texto": agrega un comentario para un grupo nuevo o existente. Dicho comentario


puede tener hasta 48 caracteres. El texto debe ir entre comillas.
/domain: realiza la operación sobre el controlador principal del dominio actual. Si no se
especifica este parámetro, la operación se realizará en el equipo local. Esto se aplica
únicamente a equipos clientes de un dominio, los equipos Server realizan las operaciones en el
controlador principal del dominio.

nombre_usuario[...]: lista de uno o más usuarios que se agregarán o quitarán de un grupo. Los
nombres de usuario se separan con un espacio en blanco.

/add: para agregar un grupo o un nombre de usuario a un grupo.

/delete: para quitar un grupo o un nombre de usuario de un grupo.

Ejemplos:
Para ver una lista de todos los grupos en el servidor local:
net group

Para crear un grupo llamado “ejec”:


net group ejec /add
Para agregar las cuentas de usuario ya existentes “esterv”, “rafar” y “jesust” al grupo “ejec”:
net group ejec esterv rafar jesust /add

Net Localgroup
Agrega, muestra o modifica grupos locales. La explicación de su uso es similar a la del
comando Net Group.
net localgroup [nombre_grupo [/comment:"texto"]] [/domain]
net localgroup nombre_grupo {/add [/comment:"texto"] | /delete} [/domain]
net localgroup nombre_grupo nombre [...] {/add | /delete} [/domain]

Net Share
Crea, elimina o muestra recursos compartidos. Para compartir un directorio con una ruta de
acceso que contiene un carácter en blanco, debe escribirse la ruta completa del directorio
(incluyendo la unidad) entre comillas (" ").
net share recurso_compartido
net share recurso_compartido=unidad:ruta_de_acceso [/users:número | /unlimited]
[/remark:"texto"]
net share recurso_compartido [/users:número | unlimited] [/remark:"texto"]
net share {recurso_compartido | unidad:ruta_de_acceso} /delete

net share, sin parámetros: para mostrar información de todos los recursos compartidos.

unidad:ruta_de_acceso: especifica la ruta de acceso absoluta del directorio que va a


compartirse.

/users:número: establece el número máximo de usuarios que pueden tener acceso


simultáneamente al recurso compartido.

/unlimited: puede tener acceso simultáneamente un número ilimitado de usuarios.

/remark:"texto": agrega un comentario descriptivo acerca del recurso.

/delete: deja de compartir un recurso.

Ejemplos:
Para mostrar información acerca de los recursos compartidos en el equipo:
net share

Para compartir el directorio C:\CARTAS de un equipo con el nombre compartido SECRETARIA


e incluir un comentario:
net share secretaria=c:\cartas /remark:"Para el departamento 123."
Para dejar de compartir el directorio CARTAS:
net share secretaria /delete

Net Use
Conecta (o desconecta) un equipo a un recurso compartido o muestra información acerca de
las conexiones del equipo. También controla las conexiones de red persistentes.
net use [nombre_dispositivo] [\\nombre_equipo\recurso_compartido [\volumen]] [contraseña
| *]] [/user:[nombre_dominio\]nombre_usuario] [[/delete] | [/persistent:{yes | no}]]
net use nombre_dispositivo [/home[contraseña | *]] [/delete:{yes | no}]
net use [/persistent:{yes | no}]

Ejemplos:
Para asignar la unidad de disco E: al directorio compartido CARTAS del servidor FINANCIERO:
net use e: \\financiero\cartas

Para asignar la unidad de disco H: al directorio particular del usuario mario:


net use h: \\contabilidad\usuarios /home /user:mario

Para desconectarse del directorio \\FINANCIERO\NOTAS:


net use f: \\financiero\notas /delete

Net Accounts
Actualiza la base de datos de cuentas de usuario y modifica los requisitos de contraseña e
inicio de sesión para todas las cuentas. El servicio Inicio de sesión de red debe estar en
ejecución en el equipo para el que desee cambiar los parámetros de cuenta.
net accounts [/forcelogoff:{minutos | no}] [/minpwlen:longitud] [/maxpwage:{días |
nlimited}]
[/minpwage:días] [/uniquepw:número] [/domain]
net accounts [/sync] [/domain]

CACLS
Muestra o modifica las listas de control de acceso (ACL) de archivos. Se pueden usar
comodines para especificar más de un archivo en el comando. Se puede especificar más de un
usuario en el comando.
CACLS archivo [/T] [/E] [/C] [/G usuario:perm] [/R usuario [...]] [/P usuario:perm
[...]]
[/D usuario [...]]

archivo: Muestra sus ACLs.

/T: Cambia las ACLs de los archivos especificados en el directorio actual y en todos los
subdirectorios.

/E: Modifica la ACL en vez de remplazarla.

/C: Continúa cambiando ACLs, omitiendo errores.

/G usuario:perm: Concede derechos de acceso al usuario. perm puede ser: R (leer), W


(escribir), C (cambiar) o (F) (control total)

/R usuario: suspende los derechos del usuario (sólo con /E).

/P usuario:perm: sustituye los derechos de acceso del usuario, dejando unos nuevos. perm
puede ser: N (ninguno), R (leer), W (escribir), C (cambiar) o F (control total)

/D usuario: deniega acceso al usuario especificado.

Ejemplos:
Para modificar los permisos NTFS de la carpeta D:\ALUMNOS, dando permiso de cambio al
grupo de alumnos, control total al Administrador y quitando todos los permisos al grupo Todos:
cacls D:\ALUMNOS /e /g Alumnos:C Administrador:F /r TODOS
2.2. Ficheros BAT.
Con los ficheros bat aprovechamos la simplicidad de los comandos de consola y del paso
de parámetros, y la posibilidad de leer ficheros con la ayuda de la orden FOR.

A continuación, mostraremos un ejemplo en el que es necesario el uso de tres ficheros


bat. Desde uno se hacen llamadas a los otros dos.

Se pretende automatizar la organización de los accesos a un servidor de aula. Se ha


decidido crear una carpeta (C:\CURSO) y dentro de ella, una para cada asignatura.
Se asignaran permisos totales al Administrador y a cada profesor sobre su asignatura.
Los alumnos no se crean hasta que la matrícula sea definitiva, por lo que se creará
después (como práctica) un proceso para ellos.

El fichero bat principal es CURSO.BAT:


@ECHO OFF
rem Fichero: CURSO.BAT
rem Crea el grupo profesores y la carpeta del curso
rem Comparte la carpeta
rem Asigna permisos totales al Administrador y profesores, quitando los que hubiese
net group profesores /add
md C:\CURSO
net share CURSO=C:\CURSO
CACLS C:\CURSO /g Administrador:F profesores:F < resp.txt
rem Lee el fichero de profesores y llama al BAT de profesores
ECHO Procesando profesores...
for /f "tokens=1,2" %%i in (profesores.txt) do call bat_prof %%i %%j
rem Lee el fichero de asignaturas y llama al BAT de asignaturas
ECHO Procesando asignaturas...
for /f "tokens=1,2" %%i in (asignaturas.txt) do call bat_asig %%i %%j
ECHO --- Trabajo finalizado ---
Pause

El fichero resp.txt sólo contiene una “s”. Se necesita como respuesta de esa orden al no poner
el /e. Este modificador hace que se mantengan los permisos previos de la carpeta, al no
ponerlo se quitan los permisos heredados y, para ello, solicita confirmación. En otros casos no
es necesario.

Los datos se incluirán en dos ficheros de texto:


Profesores.txt (usuario y contraseña) Asignaturas.txt (profesor y asignatura)
pjose 123_jose ppedro FP
pluis 123_luis pjose RAL
ppedro 123_pedro pluis SIMM

Los datos del primero los recibe bat_prof.bat:

@ECHO OFF
rem Fichero: BAT_PROF.BAT
rem Crea un usuario por cada profesor y lo agrega al grupo de profesores
net user %1 %2 /add
net group profesores %1 /add

Los datos del segundo los recibe bat_asig.bat:

@ECHO OFF
rem Fichero: BAT_ASIG.BAT
rem Crea una carpeta para cada asignatura y añade permisos totales
rem para el profesor de dicha asignatura. Tiene en cuenta los permisos
rem que se heredan y modifica a sólo lectura los de los profesores (grupo)
md C:\CURSO\%2
CACLS C:\CURSO\%2 /e /g %1:F /p profesores:R

Вам также может понравиться