¿Por qué cualquier archivo se puede leer con el uso de java.security.SecurityManager en Java?

islas:

Sólo quiero algunos archivos para ser leídos y escritos en mi programa Java. Así que uso java.security.SecurityManagerpara manejar esto, pero parece poco satisfactoria.

El Main.javaarchivo se encuentra por debajo

import java.io.*;
import java.util.*;
public class Main {
    static private final String INPUT = "in.txt";
    public static void main(String args[]) throws Exception {
        FileInputStream instream = null;
        BufferedReader reader = new BufferedReader(new FileReader(INPUT));
        String tempString = null;
        while ((tempString = reader.readLine()) != null) {
            System.out.println(tempString);
        }
    }
}

y el archivo /opt/java.policy, como a continuación

grant {
    permission java.io.FilePermission "./out.txt", "write";
};

Luego ejecutar

java -Xss64m -Xms16m -Xmx512m -Djava.security.manager -Djava.security.policy=/opt/java.policy Main

Pero no hay errores, la salida es lo que el in.txtes. Probé otro archivo y obtuve el mismo resultado. ¿Por qué pasó esto?

user207421:

Desde el Javadoc :

Por favor nota: El código siempre se puede leer un archivo desde el mismo directorio que está en (o un subdirectorio de ese directorio); que no necesita ningún permiso explícito para hacerlo.

No es que esto está bien especificado. El código no es 'en' un directorio: se ejecuta desde un directorio de trabajo actual, y esto parece ser lo que se quiere decir.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=201527&siteId=1
Recomendado
Clasificación