对于试图访问不可读文件的 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.
如果我尝试在受读保护的文件上创建 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.