我在RPI上以.jar文件的形式执行一个java程序,其中接收用户"pi“的正确主路径是至关重要的。
System.getProperty("user.home")
返回给我/root,什么是错误的目录,并打乱了我的文件结构,因为在该目录。我正在创建更多的文件夹等。我以用户pi的身份启动程序。
如何才能在不被黑客攻击的情况下为某个用户(在我的例子中是pi,"/home/pi/")接收到正确的home文件夹?
PS:当然,该用户可以作为参数输入。
Raspbian stretch
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+1-Raspbian-1)
OpenJDK Server VM (build 11.0.3+1-Raspbian-1, mixed mode)
发布于 2019-07-20 13:18:16
在Java中,没有一种干净(可移植)的方式来查找另一个用户的信息。
如果您对特定于操作系统的解决方案没有意见(对于基于Linux的系统),您可以使用Process
和朋友来运行getent passwd
外部命令,然后读取并解析其输出。
对于每个匹配的用户,getent passwd
输出由一行组成。每一行都由许多冒号分隔的字段组成,因此可以使用String::split
解析这些行。在我的系统上,用户的主目录是条目中的第6个字段。
有关更多信息,请阅读man getent
以及Process
和ProcessBuilder
的javadoc。
https://stackoverflow.com/questions/57125017
复制