Java
如何使用 java 程式碼切換 Unix 超級使用者?
我正在嘗試通過 java 程式碼切換 unix 超級使用者。但出現身份驗證失敗錯誤,請幫助使用 java 切換使用者。
你根本做不到。在 unix 的程序中切換使用者的唯一方法是通過
setuid(2)
系統呼叫,對於非特權使用者帳戶,只有在真實使用者 ID 和保存的使用者 ID 之間切換使用者 ID 才有效(這僅在 suid 執行檔的情況下發生)JavaThread
s在允許這樣做的體系結構中作為程序執行緒執行,但不能作為不同的程序執行,因此所有 JVM 都作為單個程序正常執行。所有這些概念對 Java 來說都是陌生的,因為 JVM 代表啟動應用程序的使用者執行(您可以將 java setuid 設為 root,但這是一個非常危險的安全風險,因為 JVM 無法檢查uid 發生了變化,在這種情況下,所有能夠執行 java 程式碼的使用者都應該能夠切換到他們想要的任何使用者)所以這就是說,在 un*x 系統中不允許更改 java 程序的使用者。
我不知道是否存在
Runtime.setuid()
呼叫,但由於唯一的實用程序是由 root 啟動的 JVM,他是唯一可以在不驗證使用者的情況下切換使用者的使用者,我認為沒有實現,你必須處理一些JNI 程式來實現這樣的事情。