2010-07-04 12 views

Respuesta

11

No se puede jugar con la máscara de usuario directamente, ya que Java es una abstracción y la máscara de usuario es específico POSIX-aplicación. Sin embargo, usted tiene las siguientes API:

File f; 
f.setExecutable(true); 
f.setReadable(false); 
f.setWritable(true); 

Hay algunos más API disponibles, check the docs.

Si debe tiene acceso directo a la máscara de usuario, o bien lo hace a través de JNI y el chmod() de llamada al sistema o generar un nuevo proceso con exec("chmod").

+0

Hm interesante, gracias. Supongo que puedo usar JNI para llamar a umask (2), entonces? – eeee

+0

@eeee seguro, pero que tendría que desplegar el módulo JNI para todas las plataformas que desea apoyar, ya que es, casi por definición plataforma dependiente. – extraneon

+0

@extraneon sí, por supuesto. Para ser honesto, estoy muy sorprendido de que nadie haya hecho un módulo para Java que exponga todas las interfaces posix. Quiero decir, eso no puede ser correcto, ¿no? ¿Cómo realizan las personas las actividades del sistema en Java sin este tipo de cosas? – eeee

1

java.nio.file.attribute.PosixFileAttributes en Java SE 7.

+1

No encontré ninguna función allí para configurar umask específicamente, solo permisos de archivos. – Nakedible

+0

@Nakedible Sí. –

0

Otro enfoque es utilizar una biblioteca de Java tercera partes que se expone a las llamadas del sistema POSIX; p.ej.

El problema con este enfoque es que es intrínsecamente no portátil (no funcionará en una plataforma no compatible con POSIX), y requiere una biblioteca nativa específica de la plataforma ... y todo lo que eso conlleva.

Cuestiones relacionadas