C++;添加linux用户 在C++中用Linux添加用户/组的最好方法是:有一个我可以调用的库吗?我不想开始做这样的事情: fopen("/etc/passwd", "a"); fprintf(tmp, "%s:x:%d:1:%s:/%s/%s:/bin/ksh\n", username, usernumber, commentfield, userdir, username); fclose(tmp); fopen("/etc/shadow", "a"); fprintf(stmp, "%s:*LK*:::::::\n", username); fclose(stmp);

C++;添加linux用户 在C++中用Linux添加用户/组的最好方法是:有一个我可以调用的库吗?我不想开始做这样的事情: fopen("/etc/passwd", "a"); fprintf(tmp, "%s:x:%d:1:%s:/%s/%s:/bin/ksh\n", username, usernumber, commentfield, userdir, username); fclose(tmp); fopen("/etc/shadow", "a"); fprintf(stmp, "%s:*LK*:::::::\n", username); fclose(stmp);,c++,c,linux,user-administration,C++,C,Linux,User Administration,谢谢 添加用户的级别有点太高,无法对其进行系统调用。据我所知,也没有任何广泛使用的库。您最好使用system调用调用带有适当选项的useradd程序。您可以尝试使用库 与libuser一起分发的应用程序之一是luseradd,这是一个似乎是跨平台useradd实用程序的程序。在其核心,luseradd使用libuser的lu\u user\u add函数来实际创建用户 有关文档,请参见源代码分发中的docs/html文件夹。我注意到,大多数添加和更改用户的主要实用程序都是以不同的方式直接添加和更

谢谢

添加用户的级别有点太高,无法对其进行系统调用。据我所知,也没有任何广泛使用的库。您最好使用
system
调用调用带有适当选项的
useradd
程序。

您可以尝试使用库

与libuser一起分发的应用程序之一是
luseradd
,这是一个似乎是跨平台
useradd
实用程序的程序。在其核心,
luseradd
使用libuser的
lu\u user\u add
函数来实际创建用户


有关文档,请参见源代码分发中的
docs/html
文件夹。

我注意到,大多数添加和更改用户的主要实用程序都是以不同的方式直接添加和更改用户的。可用于修改和卷影文件的函数在和中公开

,

例如,我们可以研究busybox(via)是如何做到这一点的。在中,他们通过构建passwd结构将用户放入passwd文件,然后调用
putpwent
。为了在影子文件中添加用户密码,他们只需调用
fprintf
并直接写入字符串

对于以现代方式对用户进行身份验证,有以下几种方法。但就添加用户而言,您可以看到他们调用了,调用了中的各种函数,如果您使用它,您必须将这些函数作为依赖项添加到项目中

也就是说,我为编写了两个实用程序来解析passwd和shadow数据库并直接修改它们而感到内疚。它工作得很好,但这是在一个嵌入式系统上,我可以严格控制一切。我不必担心其他程序修改passwddb时的竞争条件


如果您需要添加组,则。

很少的事情也是如此:*不要使用system(),除非您非常确定您传递的内容不会被shell解释为特殊字符。*useradd不是特别可移植的(在某些系统上,您可能无法创建“普通”用户,例如用户位于LDAP/NIS/AD/等中的用户。通常,对于一次性用户创建,我会使用shell脚本。