gpt4 book ai didi

java - 如何在 Java 程序中检查 Unix 凭据

转载 作者:行者123 更新时间:2023-11-29 09:32:32 25 4
gpt4 key购买 nike

我有两个字符串代表一个用户和该用户的密码。我想检查这是否是 Unix 环境中的有效身份验证对。

我考虑运行 sudo bash 命令在 Java 代码内部进行身份验证,并查看执行的命令的退出值是否等于 0。

但是我做不到。

public class Test{
public static void main(String args[]){
String user = "user";
String pass = "pass\n";

try{

Process proc = new ProcessBuilder(
"/bin/sh","-c","sudo","-S","su",user).start();

OutputStream os = proc.getOutputStream();
os.write(pass.getBytes());
os.flush();
os.close();

try{
System.out.println(proc.waitFor());
} catch ( InterruptedException e ){
e.printStackTrace();
}

} catch ( IOException e ){
e.printStackTrace();
}

}
}

此代码打印 1 作为退出代码。我真的已经尽我所能并在网上找到了所有方法,但我仍然需要弄清楚如何使它正常工作。

有人能帮帮我吗?谢谢

最佳答案

sudo 要求当前用户的密码,即启动 java 进程的用户,因此它不会检查 user 的密码。

代替 "/bin/sh","-c","sudo","-S","su",user).start();试试 "/bin/sh","-c","su",user).start();.这只会尝试切换到该用户,因此会要求输入 user 的密码。

关于java - 如何在 Java 程序中检查 Unix 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47562069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com