Cambiar permisos con calcs

De WikiEtl
Saltar a: navegación, buscar

El comando "calcs" se usa para cambiar de forma remota los permisos de un directorio en Windows (y todo lo contenido en él); y siempre que se trate de un sistema de ficheros NTFS. En realidad el comando calcs trabaja con Listas de Control de Acceso, las cuales le dicen a Windows qué o quién tiene permiso para acceder (lectura/escritura) a un sitio determinado. Por lo tanto, dicho comando calcs, se encargará de gestionar estas "listas" mediante la siguiente sintaxis:

CACLS archivo [/T] [/M] [/S:[:SDDL]] [/E] [/C] [/G usuario:perm]
            [/R usuario [...]] [/P usuario:perm [...]] [/D usuario [...]]
 archivo          Muestra las ACL
 /T               Cambia las ACL de los archivos especificados en
                  el directorio actual y en todos los subdirectorios.
 /M               Cambia las ACL de los volúmenes montados en un directorio.
 /S               Muestra la cadena SDDL para la DACL.
 /S:SDDL          Reemplaza las ACL con las especificadas en la cadena SDDL
                  (no válido con /E, /G, /R, /P ni /D).
 /E               Modifica la ACL en vez de remplazarla.
 /C               Continúa cambiando ACL, omitiendo errores.
 /G usuario:perm  Concede derechos de acceso al usuario.
                  Perm puede ser: R  Leer
                                  W  Escribir
                                  C  Cambiar (escribir)
                                  F  Control total
 /R usuario       Suspende los derechos del usuario (sólo con /E).
 /P usuario:perm  Sustituye los derechos de acceso del usuario.
                  Perm puede ser: N  Ninguno
                                  R  Leer
                                  W  Escribir
                                  C  Cambiar (escribir)
                                  F  Control total
 /D usuario       Deniega acceso al usuario especificado.
 Se pueden usar comodines para especificar más de un archivo en el comando.
 Puede especificar más de un usuario en el comando.
 Abreviaturas:
 CI - Herencia de contenedor.
      ACE se heredará por directorios.
 OI - Herencia de objeto.
      ACE se heredará por archivos.
 IO - Sólo heredar.
      ACE no se aplica al archivo o directorio actual.

Así que jugando con sus opciones, podemos dar de forma remota permisos de lectura, escritura o incluso control total a ciertos ficheros del sistema, y para un cierto grupo de usuarios. Usando un simple bucle for desde el cmd de Windows 2000 y estando logueados como Administrador en el dominio LDIT, podemos cambiar los permisos de un aula entera con un solo comando.

A continuación se muestra un ejemplo, que da permisos de lectura y escritura al grupo "usuarios" sobre el directorio "C:\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator" y todo lo que contiene. La salida del programa para cada equipo, se guarda en un fichero de texto con el nombre del equipo. Se ha divido en aulas para mayor facilidad y flexibilidad, a la hora de cambiar los permisos. Para otro caso, bastaría con copiar estos mismos bucles y cambiar los parámetros [/T /E /G usuarios:C] por los que se necesiten (mirar sintaxis arriba), al igual que la ruta del directorio:

Doc (4.1.B02):
-------------------
for %i IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30) do cacls "\\doc0%i\C$\Archivos   de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_doc0%i.txt
IT (4.1.B01):
-------------------
for %i IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20) do cacls "\\it0%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_it0%i.txt
LM (4.1.B01):
-------------------
for %i IN (01 02 03 04 05 06 07 08 09 10) do cacls "\\lm0%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_lm0%i.txt
JBIT (7.0.J02/03):
-------------------
for %i IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56) do cacls "\\jbit1%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_jbit1%i.txt
DIT (4.S.D01):
-------------------
for %i IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20) do cacls "\\dit1%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_dit1%i.txt
DIT (4.S.D02):
-------------------
for %i IN (21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40) do cacls "\\dit1%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_dit1%i.txt
DIT (4.S.D03):
-------------------
for %i IN (41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60) do cacls "\\dit1%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_dit1%i.txt
DIT (4.S.D04):
-------------------
for %i IN (61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85) do cacls "\\dit1%i\C$\Archivos de programa\Nokia\Server_SDKs\Nokia_WAP_Gateway_Simulator"  /T /E /G usuarios:C > salida_dit1%i.txt

Por último, sólo queda recordar algo obvio pero importante; que hay que hacer antes un "remoteReboot" del aula en cuestión en Windows, y que todos los equipos estén registrados en el Active Directory.



--Miguel 14:20 9 abr 2008 (CEST)