为什么没有标准库来修改/etc/{passwd,shadow}?

为什么没有标准库来修改/etc/{passwd,shadow}?

为什么glibc不提供标准库来修改/etc/passwd和/etc/shadow,即添加用户,更改passwd,

我得出这个结论是因为我查了源码shadow并没有找到这样的接口

答案1

因为这不是glibc的责任。 glibc 委托系统上安装的其他服务进行身份验证;如果有的话,那就是那些能够提供修改用户数据库的能力。

答案2

你从这里开始一个假设,这/etc/{passwd,shadow,group}始终是单点真理(SPOT) 用于 Unix 机器上的用户信息。自 20 世纪 80 年代中期以来,情况并非如此,当时 Sun 推出了NIS

相反情况的 API 确实存在:getpwnam(3)和朋友。如果您网站的用户数据 SPOT 是LDAP服务器,很容易看出如何减少它丰富的输出仅显示 中存在的那些内容/etc/{passwd,shadow}

但是,您需要一个执行相反操作的 API。在不setpwnam(3)知道后端数据存储是/etc/*、NIS 或NIS+,或 LDAP,或活动目录, 或者...?你可以从海洋中过滤磷虾,但你无法从一桶磷虾中过滤出立方米的海洋。

答案3

如果你想一想,答案很简单,不可能有 C 标准库与它们交互,只是因为它们不是 C 标准功能。这在 Windows 上如何工作?

相关内容