I dump dell'heap java generati in una macchina Linux (e probabilmente anche nelle macchine Unix) hanno accesso limitato. L'heap può essere letto solo dal proprietario del processo (la maschera ACL è impostata su 600). Capisco che questo è per motivi di sicurezza. Tuttavia, non sono stato in grado di trovare alcuna documentazione che faccia riferimento o che spieghi il comportamento. Qualcuno può indicarmi la documentazione (se presente)? Inoltre, c'è un modo per ignorare questo comportamento?Autorizzazioni di dumping Heap Java
risposta
Il dump dell'heap è scritto dal processo JVM, che viene eseguito come utente particolare. Proprio come qualsiasi file creato da qualsiasi processo Linux, sarà di proprietà di tale utente.
Se si desidera la documentazione effettiva, here it is. Guarda la descrizione sotto O_CREAT
.
Non credo che sia come creare qualsiasi altro file dallo stesso utente. Nel mio ambiente, ho umask per l'utente impostato su 022. Quando creo un file tramite touch, i permessi dei file sono 644 (rw-r-r-). Infatti, anche i file di log generati dal processo java hanno le autorizzazioni dettate da umask. Tuttavia, lo heap dump è alwys a 600 (rw ----). Credo che JVM stia configurando i permssns in modo esplicito a causa di problemi di sicurezza (l'heap di bcos può contenere dati sensibili) o l'uso di una chiamata di sistema che causa questo. Sto cercando una documentazione che lo spieghi e qualsiasi mezzo per sovrascriverlo (chmod dopo h-dump non è un optn) –
Se si è interessati a interni JVM profondi, è possibile controllare il codice sorgente per OpenJDK.
Ecco un link per il servizio di HeapDumper: http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/services/heapDumper.cpp
Se si scava dentro, vedrete JVM è la creazione di file binari con S_IREAD | S_IWRITE
4373 // create binary file, rewriting existing file if required
4374 int os::create_binary_file(const char* path, bool rewrite_existing) {
4375 int oflags = O_WRONLY | O_CREAT;
4376 if (!rewrite_existing) {
4377 oflags |= O_EXCL;
4378 }
4379 return ::open64(path, oflags, S_IREAD | S_IWRITE);
4380 }
- 1. java spazio di heap
- 2. Disco rigido Heap Java
- 3. java.lang.OutOfMemoryError: Java heap space
- 4. Java SnakeYaml - impedire il dumping nomi di riferimento
- 5. Autorizzazioni applet Java
- 6. Tomcat7 java.lang.OutOfMemoryError: Java heap space
- 7. Dumping memory to file
- 8. Windbg - dumping System.Guid
- 9. Ottimizzazione dello spazio di heap Java
- 10. Errore di spazio Heap Java nel glassfish
- 11. Dumping un programma Java in un file e riavviandolo
- 12. Spazio heap Java - In che modo -Xmx funziona esattamente?
- 13. pyyaml: il dumping senza etichette
- 14. Dumping di multiprocessing.Queue in una lista
- 15. Hibernate, SessionFactoryObjectFactory e OutOfMemoryError: java heap space
- 16. Java heap JVM massimo prenotabile in anticipo
- 17. Implementazione Java per Min-Max Heap?
- 18. Java JDBC clearBatch() e memoria heap
- 19. Spazio heap Java Parametri Xmx Xms ignorati
- 20. Impostazione dimensione heap Java sotto Apache Karaf
- 21. Aumentare la dimensione heap in Java
- 22. Applicazione Spark - Java.lang.OutOfMemoryError: Java heap space
- 23. Perché errore memoria spazio java heap YARN?
- 24. java.lang.OutOfMemoryError: Java spazio heap con alveare
- 25. Build Failed java.lang.OutOfMemoryError: Java heap space
- 26. Esiste un'implementazione Java standard di un heap di Fibonacci?
- 27. Nome memoria file di heap automatico di memoria esaurita Java
- 28. Come capire le autorizzazioni socket Java?
- 29. Problemi di java heap space in Tomcat 7
- 30. Strumento per analizzare grandi discariche di heap Java
Non è una risposta completa, ma discariche thread può contenere ** veramente ** informazioni riservate, compresa la password del database. Quindi farai meglio a tenerli al sicuro. –
Sovrascrivi con 'chmod' ...? –