Ver los efectos del Fichero de Policía

En los pasos anteriores hemos creado una entrada en el fichero de policía raypolicy concediendo permiso al código firmado por susan para leer ficheros en el directorio C:\TestData\ (o el directorio testdata en tu directorio home si estámos trabajando en UNIX). Ahora deberíamos poder ejecuar con éxito el programa Count para leer y contar los caracteres de unfichero del directorio especificado, incluso aunque estemos ejecutando la aplicación con un controlador de seguridad.

Como se describe al final de la lección Visión Rápida para Controlar Applet, hay dos formas posibles en la podemos considerar el fichero de policía raypolicy como arte de la policía general, además de los ficheros de policía especificados en el fichero de propiedades de seguridad. La primera aproximación es especificar el fichero de policía adicional en una propiedad pasada el sistema de ejecución. La segunda aproximación es añadir una línea al fichero de propiedades de segurdad específicando el fichero de policía adicional.

Aproximación 1

Podemos usar un argumento de la línea de comandos -Djava.security.policy para especificar un fichero de policía que debería usarse en adicción o en lugar de alguno de los especificado en el fichero de propiedades de seguridad.

Para ejecutar la aplicación Count y tener incluido el fichero de policía raypolicy, tecleamos esto, en una sóla línea, en el directorio que contiene los ficheros sCount.jar y raypolicy:

java -Djava.security.manager -Djava.security.policy=raypolicy
  -cp sCount.jar Count C:\TestData\data
El programa debería devolver el número de caracteres en el fichero especificado.

Si todavía informa un error, algo hay erróno en el fichero de policía. Usamos Policy Tool para comprobar el permiso que acabamos de crear en el paso anterior.

Aproximación 2

Podemos especificar un número de URLs -- incluidas algunas con la forma "http://" -- en propiedades policy.url.n en el fichero de propiedades de seguridad, y se cargarán todos los ficheros de policía especificados.

Por eso una forma de hacer que nuestra entrada en el fichero de policía raypolicy sea considerada por el intérprete es añadir una entrada indicando este fichero en el fichero de propiedades de seguridad.


Importante: Si estas ejecutando tu propia copia del JDK, puedes fácilmente editar tu fichero de propiedades de seguridad. Si estás ejecutando una versión compartida con otros, sólo podrás modificarlo si tienes acceso de escritura, o si pides al admistrados que modifique el fichero de la forma apropiada. Sin embargo, no es apropiado realizar modificaciones en un fichero de seguridad para todo el sistema sólo para probar este tutorial. Te sugerimos que leas los pasos siguiente para ver cómo se hace o que te instales tu propia versión privada del JDK para usar con las lecciones del tutor.
El fichero de propiedades de seguridad está alojado en
  Windows:
    java.home\lib\security\java.security 
  UNIX:
    java.home/lib/security/java.security
La porción java.home indica el directorio en el que se instaló el JRE.

Para modificar el fichero de propiedades de seguridad, lo abrimos en un editor que permita editar ficheros de texto ASCII. Luego añadimos la siguiente línea después de la línea que empieza con policy.url.2:

  Windows:
    policy.url.3=file:/C:/Test/raypolicy
  UNIX:
    policy.url.3=file:${user.home}/test/raypolicy
En un sistema UNIS podemos específicar explícitamente nuestro directorio home, como
policy.url.3=file:/home/susanj/test/raypolicy
Luego, en nuestra ventana de comandos, vamos al directorio que contiene el fichero sCount.jar, que es, el directorio C:\Test o ~/test. Y tecleamos el siguiente comando:
java -Djava.security.manager
        -cp sCount.jar Count C:\TestData\data

Como en la aproximación 1, si el programa aún mustra algún error, tenemos algo erróneo en el fichero de policía. Usamos Policy Tool para comprobar el permiso que acabamos de crear en el paso anterior.


Importante: Antes de continuar probablemente querrás borrar la línea que acabamos de añadir al fichero de propiedades de seguridad, ya que no querrás que el fichero raypolicy sea incluido cuando no estás ejecutando las lecciones del tutor

Ozito