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:

codice:
File f = new File("/path/to/folder");

folder.mkdirs();

f.setReadable(true, false);
f.setWritable(true, false);
 f.setExecutable(true, false);
però la cartella viene creata con i permessi del tipo:

drwxrwx--- 3 root root 4096 Jul 27 18:39 miacartella
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:

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
                }
            }
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.

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