如何使用C/C++创建linux用户?

Web*_*ide 8 c c++ linux

我想构建一个程序,程序将用户名作为参数并创建用户及其主文件夹(具有一些硬编码规范,如文件夹,并且用户名等安全检查不能是root用户或现有用户).

我的应用程序需要创建用户才能提供SSH访问权限.

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

  • 你能给我一些关于如何实现这一目标的建议或良好实践吗?
  • 我应该使用一些Pam库吗?有什么例子吗?
  • 有哪些可能的安全漏洞?

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

编辑:

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

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

Mar*_*rkR 10

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

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

  • Linux C库中没有"适当的API". (5认同)

Bor*_*lid 6

你是说喜欢adduser还是useradd?尝试查看他们的源代码.


Ken*_*oom 5

这没有API.您只需使用普通文件访问系统调用写入/etc/passwd/etc/group(以及可能的阴影版本).

  • 不要忘记,在修改这些值之前,您应始终获取文件的独占锁定(修改这些文件的所有系统命令都会这样做).否则可能会出现文件损坏,然后你的状态非常糟糕. (6认同)