作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个字符串代表一个用户和该用户的密码。我想检查这是否是 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/
我是一名优秀的程序员,十分优秀!