如何使用java代码切换Unix超级用户?

如何使用java代码切换Unix超级用户?

我正在尝试通过java代码切换unix超级用户。但出现身份验证失败错误,请帮助使用java切换用户。

答案1

你根本做不到。在 unix 中的进程中切换用户的唯一方法是通过setuid(2)系统调用,对于非特权用户帐户来说,只有在真实用户 ID 和保存的用户 ID 之间切换用户 ID 才有效(这种情况仅在 suid 可执行文件的情况下发生Thread)在允许这种情况的体系结构中作为进程线程运行,但不能作为不同的进程运行,因此所有 JVM 都作为单个进程正常运行。

所有这些概念对于 Java 来说都是陌生的,因为 JVM 代表启动应用程序的用户运行(您可以使 java setuid root,但这是一个非常危险的安全风险,因为 JVM 无法检查该应用程序的有效性) uid 更改,在这种情况下,所有能够执行 java 代码的用户都应该能够切换到他们想要的任何用户)因此,话虽这么说,在 un*x 系统中不允许更改 java 进程的用户。

我不知道是否存在Runtime.setuid()调用,但由于唯一的实用程序是由 root 启动的 JVM,他是唯一可以在不验证用户的情况下切换用户的用户,我认为没有实现,你将不得不处理一些JNI编程就实现了这么一个东西。

相关内容