Luego de de esta extensa búsqueda de datos hemos podido resolver esta aprieto que presentan ciertos de nuestros usuarios. Te regalamos la respuesta y deseamos serte de gran ayuda.
- Todas las interfaces implementadas:
Serializable
,Guard
public final class FilePermission
extends Permission
implements Serializable
Esta clase representa el acceso a un archivo o directorio. Un FilePermission consta de un nombre de ruta y un conjunto de acciones válidas para ese nombre de ruta.
Nombre de ruta es el nombre de ruta del archivo o directorio al que se le otorgan las acciones especificadas. Un nombre de ruta que termina en “/ *” (donde “/” es el carácter separador de archivos, File.separatorChar
) indica todos los archivos y directorios contenidos en ese directorio. Un nombre de ruta que termina con “/ -” indica (recursivamente) todos los archivos y subdirectorios contenidos en ese directorio. Este nombre de ruta se denomina nombre de ruta comodín. De lo contrario, es un nombre de ruta simple.
Un nombre de ruta que consta del token especial “
Nota: Un nombre de ruta que consta de un solo “*” indica todos los archivos en el directorio actual, mientras que un nombre de ruta que consta de un solo “-” indica todos los archivos en el directorio actual y (recursivamente) todos los archivos y subdirectorios contenidos en el directorio actual. directorio.
Las acciones que se otorgan se pasan al constructor en una cadena que contiene una lista de una o más palabras clave separadas por comas. Las posibles palabras clave son “leer”, “escribir”, “ejecutar”, “eliminar” y “leer enlace”. Su significado se define de la siguiente manera:
- leer
- permiso de lectura
- escribir
- permiso de escritura
- ejecutar
- ejecutar permiso. Permite
Runtime.exec
ser llamado. Corresponde aSecurityManager.checkExec
. - Eliminar
- eliminar el permiso. Permite
File.delete
ser llamado. Corresponde aSecurityManager.checkDelete
. - readlink
- leer permiso de enlace. Permite que se lea el destino de un enlace simbólico invocando el
readSymbolicLink
método.
La cadena de acciones se convierte a minúsculas antes del procesamiento.
Tenga cuidado al conceder FilePermissions. Piense en las implicaciones de otorgar acceso de lectura y especialmente de escritura a varios archivos y directorios. Los “
Tenga en cuenta: el código siempre puede leer un archivo del mismo directorio en el que se encuentra (o un subdirectorio de ese directorio); no necesita un permiso explícito para hacerlo.
- Ya que:
- 1.2
- Ver también:
Permission
,Permissions
,PermissionCollection
Resumen del constructor
Constructor | Descripción |
---|---|
FilePermission(String path, |
Crea un nuevo objeto FilePermission con las acciones especificadas. |
Resumen del método
Modificador y tipo | Método | Descripción |
---|---|---|
boolean |
equals(Object obj) |
Comprueba la igualdad de dos objetos FilePermission. |
String |
getActions() |
Devuelve la “representación de cadena canónica” de las acciones. |
int |
hashCode() |
Devuelve el valor del código hash para este objeto. |
boolean |
implies(Permission p) |
Comprueba si este objeto FilePermission “implica” el permiso especificado. |
PermissionCollection |
newPermissionCollection() |
Devuelve un nuevo objeto PermissionCollection para almacenar objetos FilePermission. |
Métodos declarados en la clase java.security.Permission
Métodos declarados en la clase java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Detalles del constructor
Crea un nuevo objeto FilePermission con las acciones especificadas. sendero es el nombre de la ruta de un archivo o directorio, y comportamiento contiene una lista separada por comas de las acciones deseadas otorgadas en el archivo o directorio. Las posibles acciones son “leer”, “escribir”, “ejecutar”, “eliminar” y “leer enlace”.
Un nombre de ruta que termina en “/ *” (donde “/” es el carácter separador de archivos, File.separatorChar
) indica todos los archivos y directorios contenidos en ese directorio. Un nombre de ruta que termina con “/ -” indica (recursivamente) todos los archivos y subdirectorios contenidos en ese directorio. El nombre de ruta especial “
Un nombre de ruta que consta de un solo “*” indica todos los archivos en el directorio actual, mientras que un nombre de ruta que consta de un solo “-” indica todos los archivos en el directorio actual y (recursivamente) todos los archivos y subdirectorios contenidos en el directorio actual.
Un nombre de ruta que contiene una cadena vacía representa una ruta vacía.
- Nota de implementación:
- En esta implementación, el
jdk.io.permissionsUseCanonicalPath
La propiedad del sistema dicta cómopath
El argumento se procesa y almacena.Si el valor de la propiedad del sistema se establece en
true
,path
se canonicaliza y almacena como un objeto String llamadocpath
. Esto significa que una ruta relativa se convierte en una ruta absoluta, una ruta 8.3 estilo DOS de Windows se expande a una ruta larga y un enlace simbólico se resuelve a su destino, etc.Si el valor de la propiedad del sistema se establece en
false
,path
se convierte en unPath
objeto nombradonpath
despuésnormalization
. No se realiza ninguna canonicalización, lo que significa que no se accede al sistema de archivos subyacente. Si unaInvalidPathException
se lanza durante la conversión, esteFilePermission
se etiquetará como no válido.En cualquier caso, el carácter “*” o “-” al final de un comodín
path
se elimina antes de la canonicalización o normalización. Se almacena en un campo de bandera comodín separado.El valor predeterminado de la
jdk.io.permissionsUseCanonicalPath
la propiedad del sistema esfalse
en esta implementación.El valor también se puede establecer con una propiedad de seguridad con el mismo nombre, pero establecer una propiedad del sistema anulará el valor de la propiedad de seguridad.
- Parámetros:
path
– el nombre de la ruta del archivo / directorio.actions
– la cadena de acción.- Lanza:
IllegalArgumentException
– si las acciones sonnull
, vacío, mal formado o contiene una acción diferente a las posibles acciones especificadas
Detalles del método
implica
publicboolean implies(Permission p)
Comprueba si este objeto FilePermission “implica” el permiso especificado.
Más específicamente, este método devuelve verdadero si:
- pag es una instancia de FilePermission,
- pagLas acciones son un subconjunto adecuado de las acciones de este objeto, y
- pagEl nombre de la ruta está implícito en el nombre de la ruta de este objeto. Por ejemplo, “/ tmp / *” implica “/ tmp / foo”, ya que “/ tmp / *” abarca todos los archivos del directorio “/ tmp”, incluido el denominado “foo”.
Precisamente, un nombre de ruta simple implica otro nombre de ruta simple si y solo si son iguales. Un nombre de ruta simple nunca implica un nombre de ruta comodín. Un nombre de ruta comodín implica otro nombre de ruta comodín si y solo si todos los nombres de ruta simples implícitos en el último están implícitos en el primero. Un nombre de ruta comodín implica un nombre de ruta simple si y solo si
- si la bandera comodín es “*”, la ruta del nombre de ruta simple debe estar dentro de la ruta del nombre de ruta comodín.
- si la bandera comodín es “-“, la ruta del nombre de ruta simple debe estar recursivamente dentro de la ruta del nombre de ruta comodín.
“
- Especificado por:
implies
en la clasePermission
- Nota de implementación:
- Si
jdk.io.permissionsUseCanonicalPath
estrue
, un simplecpath
está dentro de un comodíncpath
si y solo si después de eliminar el nombre base (el apellido en la secuencia del nombre de la ruta) del primero, la parte restante es igual al último, un simplecpath
está recursivamente dentro de un comodíncpath
si y solo si el primero comienza con el segundo.Si
jdk.io.permissionsUseCanonicalPath
esfalse
, un simplenpath
está dentro de un comodínnpath
si y solo sisimple_npath.relativize(wildcard_npath)
es exactamente “..”, un simplenpath
está recursivamente dentro de un comodínnpath
si y solo sisimple_npath.relativize(wildcard_npath)
es una serie de uno o más “..”. Esto significa que “/ -” implica “/ foo” pero no “foo”.Un inválido
FilePermission
no implica ningún objeto excepto él mismo. Un inválidoFilePermission
no está implícito en ningún objeto excepto por sí mismo o unFilePermission
sobre “> “cuyas acciones son un superconjunto de este inválido FilePermission
. Incluso si dosFilePermission
se crean con la misma ruta inválida, una no implica la otra. - Parámetros:
p
– el permiso para verificar.- Devoluciones:
true
si el permiso especificado no esnull
y está implícito en este objeto,false
de lo contrario.
es igual a
publicboolean equals(Object obj)
Comprueba la igualdad de dos objetos FilePermission. Comprueba que obj es un FilePermission y tiene el mismo nombre de ruta y acciones que este objeto.
- Especificado por:
equals
en la clasePermission
- Nota de implementación:
- Más específicamente, dos nombres de ruta son iguales si y solo si tienen la misma bandera comodín y su
cpath
(sijdk.io.permissionsUseCanonicalPath
estrue
) onpath
(sijdk.io.permissionsUseCanonicalPath
esfalse
) son iguales. O son ambos “> “. Cuando
jdk.io.permissionsUseCanonicalPath
esfalse
, un inválidoFilePermission
no es igual a ningún objeto excepto a sí mismo, incluso si se crean utilizando la misma ruta no válida. - Parámetros:
obj
– el objeto que estamos probando para la igualdad con este objeto.- Devoluciones:
true
si obj es un FilePermission y tiene el mismo nombre de ruta y acciones que este objeto FilePermission,false
de lo contrario.- Ver también:
Object.hashCode()
,HashMap
código hash
publicinthashCode()
Devuelve el valor del código hash para este objeto.
- Especificado por:
hashCode
en la clasePermission
- Devoluciones:
- un valor de código hash para este objeto.
- Ver también:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
getActions
publicStringgetActions()
Devuelve la “representación de cadena canónica” de las acciones. Es decir, este método siempre devuelve acciones presentes en el siguiente orden: leer, escribir, ejecutar, eliminar, leer enlace. Por ejemplo, si este objeto FilePermission permite tanto acciones de escritura como de lectura, una llamada a getActions
devolverá la cadena “leer, escribir”.
- Especificado por:
getActions
en la clasePermission
- Devoluciones:
- la representación de cadena canónica de las acciones.
newPermissionCollection
publicPermissionCollectionnewPermissionCollection()
Devuelve un nuevo objeto PermissionCollection para almacenar objetos FilePermission.
Los objetos FilePermission deben almacenarse de manera que se puedan insertar en la colección en cualquier orden, pero que también habilita el PermissionCollection implies
método para ser implementado de una manera eficiente (y consistente).
Por ejemplo, si tiene dos FilePermissions:
"/tmp/-", "read"
"/tmp/scratch/foo", "write"
y estás llamando al implies
método con FilePermission:
"/tmp/scratch/foo", "read,write",
entonces el implies
La función debe tener en cuenta los permisos “/ tmp / -” y “/ tmp / scratch / foo”, por lo que el permiso efectivo es “leer, escribir” y implies
devuelve verdadero. La semántica “implica” para FilePermissions se maneja correctamente mediante el objeto PermissionCollection devuelto por este newPermissionCollection
método.
- Anulaciones:
newPermissionCollection
en la clasePermission
- Devoluciones:
- un nuevo objeto PermissionCollection adecuado para almacenar FilePermissions.
Si para ti ha resultado provechoso este artículo, te agradeceríamos que lo compartas con el resto juniors así nos ayudas a dar difusión a nuestra información.