在没有root的Linux中检查用户名/密码

时间:2017-11-20 19:22:04

标签: c linux passwords passwd

如果我有用户名和密码对,如何在Linux系统中验证它们是否真的正确?我知道我可以使用passwd这样做,但我想用编程方式使用C.

我不应该要求root权限(因此不能选择读取影子文件)。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您使用PAM,则可以使用checkpassword-pam

本手册有一个示例命令(带有调试功能),可以为您提供一个好的起点。

public class Graphics{
    public ObservableList<Ball> balls = FXCollections.observableArrayList(); //add all created ball-objs to the array
    private static final Color[] COLORS = new Color[] { RED, BLUE };

    public Graphics() {
        //Creating a new Object every time Class is called?
        createBalls(1,10,20,10,20,0,0);
    }


    public void createBalls(int numBalls, double minRadius, double maxRadius, double minSpeed, double maxSpeed,
            double initialX, double initialY) {
        final Random rng = new Random();
        for (int i = 0; i < numBalls; i++) {
            double radius = minRadius + (maxRadius - minRadius) * rng.nextDouble();
            double mass = Math.pow((radius / 40), 3);

            final double speed = minSpeed + (maxSpeed - minSpeed) * rng.nextDouble();
            final double angle = 2 * PI * rng.nextDouble();
            Ball ball = new Ball(initialX, initialY, radius, speed * cos(angle), speed * sin(angle), mass);
            ball.getView().setFill(COLORS[i % COLORS.length]);
            // ball.getView().setFill(i==0 ? RED : TRANSPARENT);

            getBalls().add(ball); //add to FXCollection
        }
    }

    public ObservableList<Ball> getBalls() {
        return balls;
    }

    public void setBalls(ObservableList<Ball> balls) {
        this.balls = balls;
    }

}