如何使用C / C ++创build一个Linux用户?

我想build立一个程序,以用户名为参数,并创build用户和它的主文件夹 (一些硬编码规范像文件夹,和安全检查,如用户名不能是根或现有的用户)。

我的应用程序需要创build用户才能获得SSH访问权限。

该程序将使用sudo执行。 我读过它应该用C或C ++而不是脚本编写,因为脚本很容易被利用。

  • 你可以给我一些build议或良好的做法 ,如何实现这一目标?
  • 我应该使用一些Pam库吗? 有没有例子?
  • 什么是可能的安全缺陷?

我知道C / C ++,并运行Ubuntu Lucid。

编辑:

用户将只有sudo权限才能运行该特定命令,我不希望它能够运行shell或绕过某些程序(例如,通过更改PATH环境)。

因此,例如,我将需要覆盖PATH还有什么我应该担心的?

Solutions Collecting From Web of "如何使用C / C ++创build一个Linux用户?"

可能你最好的选择是调用useradd; 它会做正确的事情(给定适当的参数)。

尝试通过调用适当的API手动创建一个是可能的,但不是可取的。

你的意思是像adduseruseradd ? 试着看看他们的源代码。

没有这个API。 您只需使用普通文件访问系统调用,就可以写入/etc/passwd/etc/group (也可能是影子版本)。