在Linux机器上生成的Java堆转储文件(很可能也适用于Unix机器)具有受限访问权限。堆只能被进程所有者读取(ACL掩码设置为600)。我理解这是出于安全原因。但是,我找不到任何参考或解释此行为的文档。是否有人可以指向文档(如果有的话)?此外,是否有办法覆盖这种行为?
在Linux机器上生成的Java堆转储文件(很可能也适用于Unix机器)具有受限访问权限。堆只能被进程所有者读取(ACL掩码设置为600)。我理解这是出于安全原因。但是,我找不到任何参考或解释此行为的文档。是否有人可以指向文档(如果有的话)?此外,是否有办法覆盖这种行为?
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 }
堆转储是由JVM进程编写的,该进程作为特定用户运行。就像任何Linux进程创建的任何文件一样,它将归该用户所有。
如果您想要实际的文档,在这里查看O_CREAT
下的描述。