代码之家  ›  专栏  ›  技术社区  ›  Stéphane

在linux上,我应该调用什么API来设置用户密码?

  •  3
  • Stéphane  · 技术社区  · 16 年前

    我知道 passwd(1) crypt(3) . 我正在寻找一个C API来调用,它将在passwd/shadow文件中设置用户的密码,而不必通过编程遍历文件并覆盖相关用户的条目。应用程序以root用户身份运行。

    这样的API存在吗?

    编辑:我想我应该指定,密码正在不同的系统之间同步,所以我们不能简单地调用系统(“passwd”),并允许用户在passwd提示时输入他们想要的任何密码。我们需要知道密码,这样我们就可以通过编程使用相同的密码更新其他系统。

    7 回复  |  直到 16 年前
        1
  •  4
  •   Stéphane    16 年前

    正如上面8jean所评论的,看起来/usr/sbin/chpasswd可能是最简单的方法。否则,我会同意noha的评论,即使用fgetpwent()或fGetPent()等函数处理影子文件,遍历用户列表并修改需要更改的记录。谢谢大家!

        2
  •  4
  •   Oskar Duveborn    16 年前

    这很可能会因系统使用的机制而异。。。

    …这给我带来了另一个建议,使用现有的工具让不同的系统根据公共存储对用户进行身份验证—例如LDAP或站点上可用的任何目录或主系统。或者设置一个。最好不是NIS+^^

    不要像他们所说的那样重新发明轮子。

    从哪里开始获取明文密码?如果它在外面,为什么还要麻烦设置密码呢?(是的,我知道在这些事情上我是个讨厌鬼,对不起,让我们开始投票吧;)

        3
  •  2
  •   hometoast    16 年前

    “不要这样做”的答案是使用NIS服务器,只更改一次密码。

        4
  •  2
  •   Norbert Hartl    16 年前

    也许你要找的就是这个电话。试试男人的呕吐。在quicks搜索中,我找到了一个包含一些示例的页面。这可能会有帮助。

    http://linux.omnipotent.net/article.php?article_id=10935

    检查getpwnam以查找而不是更改条目并使用putpwent。

        5
  •  0
  •   dmckee --- ex-moderator kitten    16 年前

    PAM

    补充: 看起来MacOSX使用的是 openssl

        6
  •  0
  •   Anonymous    16 年前

    您可以查看passwd源代码,但我首先要尝试一种更简单、更懒惰的方法:我只需扫描passwd,看看会发生什么。

        7
  •  -1
  •   Shannon Nelson    16 年前

    推荐文章