Ver los Efectos del Fichero de Policía

Ahora que hemos creado el fichero de policía mypolicy deberíamos poder ejecutar con éxito el applet WriteFile para crear y escribir el fichero writetest, como se ve en la siguiente figura..

Siempre que ejecutemos un applet o una aplicación con un controlador de seguridad, los ficheros de policía que son cargados y usados por defecto son los especificados en el "security properties file", que está localizado en uno de los siguientes directorios:

  Windows:
    java.home\lib\security\java.security 
  UNIX:
    java.home/lib/security/java.security
Observa que java.home indica el directorio en el que se instaló el JRE.

Las localizaciones de los ficheros de policía se especifican como valores de propiedades cuyos nombres tienen la forma:

policy.url.n
Donde n indica un número. Especificamos cada uno de los valores en una línea con la siguiente forma:
policy.url.n=URL
Donde URL es una especificación de URL. Por ejemplo, los ficheros de policía por defecto, algunas veces refereidos como los ficheros de policía del sistema y de usuario, respectivamente están definidos en el fichero de propiedades de seguridad como:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy

Nota: Usar la notación ${propName} en el fichero de propiedades de seguridad es una forma de especificar el valor de una propiedad. Así, ${java.home} será reemplazado en el momento de la ejecución por el valor real de la propiedad "java.home", que indica el directorio en el que se instaló el JRE, y ${user.home} será reemplazado por el valor de la propiedad "user.home", por ejemplo, C:\Windows.
En el paso anterior no modificamos ninguno de estos ficheros de policía. Creamos uno nuevo llamado mypolicy. Aquí tenemos dos posibles formas de hacer que el fichero mypolicy sea considerado como parte de la policía general, además de los ficheros de policía especificados en el fichero de propiedades de seguridad. Podemos especificar el fichero de policía adicional en una propiedad pasada al sistema de ejecución, como se describe en Aproximación 1, o añadir una nueva línea al fichero de propiedades de seguridad, como se describe en Aproximación 2.

Nota: En un sistema UNIX , debemos tener DNS configurado para que el programas WriteFile sea descargado desde una site pública como en los comandos de ejecución mostrados abajo. Necesitamos tener dns en la lista de servicios para host en nuestro fichero /etc/nsswitch.conf, como:
    hosts:    dns files nis
También necesitaremos un fichero /etc/resolv.conf con una lista de nombres de servidores. Consulta con tu administrador de sistemas para más información.

Aproximación 1

Podemos usar un argumento de la línea de comandos para el appletviewer, -J-Djava.security.policy, para especificar un fichero de policía que debería ser usado además de los especificados en el fichero de propiedades de seguridad. Para ejecutar el applet WriteFile con el fichero de policía mypolicy incluido, debemos teclear lo siguiente, en el directorio en el que tengamos almacenado a mypolicy:
appletviewer -J-Djava.security.policy=mypolicy  
 http://java.sun.com/docs/books/tutorial/security1.2/tour1/
 example-1dot2/WriteFile.html

Nota:
  • Esto debe ser tecleado como un sóla línea, con un espacio entre mypolicy y la URL y sin espacios en la URL. Aquí hemos usado múltipels líneas para facilitar su lectura.

  • Si esta línea de ocmandos es mayor que el máximo número de caracteres que tienes permitidos, haz lo siguiente. Crea un fichero de texto que contenga el comando completo, y llamado con una extensión .bat, por ejemplo, wf.bat. Luego, en tu ventana de comandos sólo tienes que teclear el nombre del fichero .bat. Esto resulta en la ejecución del comando completo.

Si el applet muestra algún error, es que hay algo mal en el fichero de policía. Esa la herramienta Policy Tool para abrir el fichero mypolicy y chequear las entradas de policía que acabamos de crear en el paso anterior, Configurar un Fichero de Policía para Conceder los Permisos Requeridos.

Para ver o editar una entrada de policía existente, se selecciona la línea paa esa entrada en el ventana principal de Policy Tool, y se pulsa el botón Edit Policy Entry. También se puede hacer doble click sobre la línea de esa entrada.

Esto muestra el mismo diálogo de Polciy Entry que aparenció cuando añadimos una nueva entrada, excepto en que ahora está relleno con la información de la entrada existente. Para cambiar la información, simplemente tecleamos el valor correcto en el campo de texto adecuado.

Aproximación 2

Podemos especificar un número de URLs (incluyendo de la forma "http://") en las propiedades policy.url.n en el fichero de propiedades de seguridad, y todos los ficheros designados se cargarán.

Por eso una forma de forma de hacer que nuestro fichero de policía mypolicy sea considerado por el appletviewer es añadir una entrada especificando el fichero de policía al 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.

Para modificar el fichero de propiedades de seguridad, abrelo en un fichero capaz de editar ficheros ASCII. Luego añade la siguiente línea después de la línea que empieza con policy.url.2:

  Windows:
    policy.url.3=file:/C:/Test/mypolicy
  UNIX:
    policy.url.3=file:${user.home}/test/mypolicy
En un sistema UNIX también puedes especificar tu directorio home como
policy.url.3=file:/home/susanj/test/mypolicy
Ahora deberías poder ejecutar esto con éxito:
appletviewer http://java.sun.com/docs/books/tutorial/
security1.2/tour1/example-1dot2/WriteFile.html

Importante: El fichero mypolicy también se utiliza en la lección Visión Rápida para Controlar Aplicaciones. Si no vas a seguir esa lección, 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 mypolicy sea incluido cuando no estás ejecutando las lecciones del tutor.

Ozito