对于试图访问不可读文件的 JAVA 程序,unix 看到的用户名是什么

What will be the user name seen by unix for JAVA program which tries to access a non readable file

如果我尝试在受读保护的文件上创建 FileInputStream

new FileInputStream(new File("temp.txt"))

然后我收到 FileNotFoundException 消息 Access is Denied

操作系统看到的那个 java 程序的用户名是什么?

OS 永远不会真正看到用户名,但在类 Unix 系统的情况下,它会看到 UID(用户 ID)。这将是 运行 运行应用程序的 JVM 进程所有者的任何用户的 UID。

这可能是当前登录的用户,或者如果在 ACL 中为 JVM 的可执行文件配置了 setuid 位(或在其他地方的系统安全策略中),那么这可能 运行 根据策略具有另一个用户的权限(基本上 JVM 将显示为 运行ning 作为不同的用户)。

总之,要看你的系统配置。


在 Java 中,要获取表示您正在申请的当前用户的字符串是 运行ning,您可以使用以下命令:

System.getProperty("user.name");

无论您 OS 运行 宁如何,这都会起作用。然后,您可以将其打印到控制台或您有权访问的其他地方。如果这个问题只是基于解决访问被拒绝的问题,那么我建议将其打印到控制台,然后确保该用户对您尝试 [=23] 的任何目录具有 read/write 权限=] from/to.