Creo una carpeta en mi programa java (ejecutándose en Linux) con la función mkdirs() del objeto Archivo. El problema es que la carpeta solo obtiene permisos de lectura para el grupo. Necesito que también tenga permisos de escritura (para poder eliminar sus archivos más adelante). ¿Cuál es la manera de hacerlo?Crear directorio con permisos de escritura para el grupo
Respuesta
En java 6, hay métodos que le permiten hacer esto, como setwriteable(). En versiones anteriores de java, tendrás que acceder a la línea de comando para hacer un comando chmod.
EDIT: Woops, estoy completamente equivocado; No me di cuenta de que querías permisos grupales específicamente. Esos no parecen configurables sin Runtime.exec().
@David: Tienes razón.
Otra idea: si tiene que modificar muchos archivos, ¿qué le parece escribir un script de shell y llamarlo desde runtime.exec()?
Sospecho (a menos que/hasta que alguien publique una respuesta al contrario) que no hay forma de hacerlo en la biblioteca estándar de Java, porque los permisos del grupo POSIX (el tipo rwxrwxrwx al que está acostumbrado) no son multiplataforma. Java 6 le permitirá establecer permisos de propietario o permisos globales, pero (hasta donde puedo ver) no permisos de grupo. Si realmente debe hacerlo, intente usar Runtime.exec("chmod g+w directory")
, pero podría ser una buena idea estilísticamente envolverlo en un método como setGroupWritable()
.
OK esta no es una solución java y definitivamente no es portátil.
Como mencionas que eres Linux, probablemente puedas pensar en comprobar la configuración de "umask" y configurarla adecuadamente (para tener directorios creados con permisos de escritura grupales) y luego ejecutar tu programa java.
NIO de Java puede ayudar con el archivo POSIX atributos: http://openjdk.java.net/projects/nio/javadoc/java/nio/file/attribute/PosixFileAttributeView.html
Path path = ...
Set<PosixFilePermission> perms =
EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE);
Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
Una solución muy simple para esto es:
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
En el código anterior, el archivo es un objeto File.
Al crear un archivo, establezca estos permisos en un archivo setExecutable(true)
y le permitirá establecer ese archivo como Executable
solo para el propietario. Si agrega un parámetro más que he agregado en el código anterior, file.setExecutable(true, false);
hará Executable
false
para el propietario solamente, eso significa que establecerá permisos para todo el grupo/mundo.
Probado y trabajando en Debian y Windows XP.
una mejor solución es usar java nio porque esta solución establece permisos solo para un propietario o para todos. – Nurlan
Esto no funciona para mí. Intenté crear dir bajo la carpeta raíz (en Linux) con la aplicación java (el usuario es Tomcat) pero falla incluso si uso 'if (! RootFile.canWrite()) { rootFile.setWritable (true, true); } ' me parece que el usuario de tomcat no puede cambiar el permiso en dir/files – pikimota
- 1. ¿cómo puedo crear un archivo con file_put_contents que tenga permisos de escritura grupales?
- 2. permisos del Grupo de Symfony2 con ACL
- 3. Crear/escribir permisos en MySQL
- 4. ¿Cómo se configura un directorio para que tenga permisos de grupo persistentes?
- 5. ¿Cómo cambiar los permisos de usuario y grupo para un directorio, por nombre?
- 6. Permiso de grupo de cambio de Linux para que coincida con los permisos del propietario
- 7. escritura de permisos de archivo en Android
- 8. Verificar el acceso de escritura en un directorio antes de crear archivos dentro de él
- 9. Verificar permisos de escritura en Windows/Linux
- 10. Tastypie - Permitir permisos de solo lectura para usuarios no autenticados al permitir permisos de escritura autorizados
- 11. django admin - permisos de grupo para editar o ver modelos
- 12. ¿Cómo comprobar los permisos de escritura de un directorio en java?
- 13. Permisos por directorio en git
- 14. Los permisos de archivo no heredan los permisos de directorio
- 15. Permisos de usuario/grupo en Active Directory
- 16. Paperclip crear carpeta con permisos incorrectos
- 17. ¿Cómo crear un directorio compartido con acceso de lectura y escritura a todas las aplicaciones en Android?
- 18. ¿Cómo soluciono el error "No tiene permisos de escritura en el directorio/usr/bin" al instalar Rails?
- 19. permisos para crear un disparador en MySQL
- 20. ¿Cuáles son las mejores prácticas para los permisos en los directorios de escritura de Apache?
- 21. Cómo crear un directorio con permisos derechos usando C en Posix
- 22. ¿Por qué PHP no puede crear un directorio con 777 permisos?
- 23. mongodb permisos de directorio de datos
- 24. Permisos de directorio para Cygwin SSH (Windows 7)
- 25. ¿Es posible crear un script para guardar y restaurar permisos?
- 26. Eliminar todos los permisos de directorio
- 27. Establecer permisos de escritura para todos los usuarios para mi carpeta de programa
- 28. con Symfony sfDoctrineGuardPlugin, necesito tener un grupo de usuarios y algunas configuraciones para permisos, etc.
- 29. ¿Cómo se configuran los permisos de directorio en NSIS?
- 30. Tomar posesión de archivos con permisos 'rotos'
No es agradable, pero hace el trabajo. Solo para copiar/pegar: Tiene que ser Runtime.getRuntime.exec ("chmod g + w directory") – schoenk