我试图通过Java代码切换Unix超级用户。但收到验证失败错误,请帮助使用Java切换用户。
你根本不能。在unix的进程中切换用户的唯一方法是通过setuid(2)
系统调用,即对于没有特权的用户帐户,仅在真实和已保存的用户ID之间切换用户ID(仅在suid可执行文件的情况下才有效)是有效的Thread
。在允许该架构的架构中作为进程线程运行,但不能作为不同的进程运行,因此所有JVM都可以作为单个进程正常运行。
所有这些概念对于Java都是陌生的,因为JVM代表启动应用程序的用户运行(您可以将Java setuid设为root,但这是非常危险的安全风险,因为JVM无法检查uid更改,并且在这种情况下,所有能够执行Java代码的用户都应该能够切换到他们想要的任何用户)因此,这就是说,在un * x系统中不允许为Java进程更改用户。
我不知道是否存在Runtime.setuid()
调用,但是由于唯一的实用程序是针对root用户启动的JVM的,root是唯一可以在不验证用户的情况下切换用户的用户,因此我认为没有实现,您必须处理一些问题。 JNI编程实现了这样的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句