有没有办法使用java在Linux机器上获取用户的UID?
有没有办法使用java在Linux机器上获取用户的UID?我知道 System.getProperty("user.name");
方法,但它返回用户名,而我正在寻找 UID。
Is there a way to get user's UID on Linux machine using java? I'm aware of System.getProperty("user.name");
method, but it return's user name and I'm looking for UID.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以执行
id
命令并读取结果。例如:
$ id -u jigar
输出:
执行命令
你可以通过source
you can execute
id
command and read result.for example:
$ id -u jigar
output:
you can execute command by
source
实际上有一个 api 可以实现这一点。无需调用 shell 命令或使用 JNI,只需
There is actually an api for this. There is no need to call a shell command or use JNI, just
如果您可以影响 Java VM 的启动方式,您可以将 uid 作为用户属性进行移交:
在您的 CoolApp 中,您可以简单地通过以下方式获取 ID:
问候,
Martin。
If you can influence how the Java VM is started, you could handover the uid as a user property:
In your CoolApp, you could simply fetch the ID with:
Regards,
Martin.
为了完整起见,这里提供了一个仅 Java 的解决方案,不需要 JNI、子进程或私有 API。
警告:这依赖于用户主目录,它根本不需要匹配当前正在运行的 Java 进程的所有者。在盲目依赖之前,请先确定您的目标系统环境:
Just for the sake of completeness, here is a Java-only solution without any need for JNI, child processes or private API.
A word of warning: This relies on the user home directory, which is not at all required to match the owner of the currently running Java process. Be sure about your targeted system environment, before blindly relying on this:
另一种选择是使用 JNI 调用 getuid()。
Another choice would be calling getuid() using JNI.
只需打开
/etc/passwd
文件并搜索用户等于System.getProperty("user.name")
的行。Just open the
/etc/passwd
file and search for the line that has a user equal toSystem.getProperty("user.name")
.