Salve,
Ho qualche problema a settare i permessi di lettura/scrittura su dei file/folder che il mio applicativo crea. Sostanzialmente vorrei che file e folder che creo abbiano i permessi 0777. L'applicativo gira dentro tomcat, e tomcat gira come utente root, e a me sta bene così (tant'è che i file vengono creati come utente root, e sta bene cosi come avviene). il problema è che non riesco a settare corretamente i permessi.
ambiente di produzione: linux
ambiente di sviluppo: dipende, diciamo windows
All'inizio ho provato questo codice:
però la cartella viene creata con i permessi del tipo:codice:File f = new File("/path/to/folder"); folder.mkdirs(); f.setReadable(true, false); f.setWritable(true, false); f.setExecutable(true, false);
ovvero ad "others" non viene dato alcun permesso.. cosa che mi pare sia normale leggendo la documentazione ma ora non l'ho davanti gli occhi quindi non ricordo...ma ciò è male per il mio scenario. Allora ho aggiunto questo pezzo di codice:drwxrwx--- 3 root root 4096 Jul 27 18:39 miacartella
ma la situazione non cambia di una virgola. che poi non capisco perchè la "root" viene creata con i permessi sbagliati mentre poi internamente i permessi vengono settati correttamente, ma per via dei permessi della root poi gli altri programmi non riescono a leggerli i file creati. Eppure il codice è sempre lo stesso.codice:if (!SystemUtils.IS_OS_WINDOWS) { //using PosixFilePermission to set file permissions 777 Set<PosixFilePermission> perms = new HashSet<>(); //add owners permission perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.OWNER_WRITE); perms.add(PosixFilePermission.OWNER_EXECUTE); //add group permissions perms.add(PosixFilePermission.GROUP_READ); perms.add(PosixFilePermission.GROUP_WRITE); perms.add(PosixFilePermission.GROUP_EXECUTE); //add others permissions perms.add(PosixFilePermission.OTHERS_READ); perms.add(PosixFilePermission.OTHERS_WRITE); perms.add(PosixFilePermission.OTHERS_EXECUTE); try { Files.setPosixFilePermissions(f.toPath(), perms); } catch (IOException ex) { //do nothing } }
Cmq volevo un feedback sul codice, se insomma ho scritto un sacco di fregnacce oppure se più o meno il codice quello dovrebbe essere.
Grazie

Rispondi quotando