1

如何获取带有 uid 和名称的数组?

我可以从 0 迭代到 99999 并执行getpwnam(). 但是,大多数机器的帐户少于 5 个,因此不是最佳选择。我不知道什么框架对此负责,因此我不知道要搜索什么。

有没有更优的方案可以遍历账户?

编辑:就在我发布后,我发现getpwent()了遍历帐户。

setpwent();
struct passwd *pw;
while ((pw = getpwent())) printf("%d\n", pw->pw_uid);
endpwent();

但是,这并不表示帐户是否是系统偏好帐户。

那么如何获得系统偏好帐户呢?


编辑:我找到了与此等效的命令行dscl命令。

prompt> dscl . -list /Users UniqueID
_mysql                  74
_postfix                27
_spotlight              89
_sshd                   75
_windowserver           88
_www                    70
daemon                  1
johndoe                 501
nobody                  -2
root                    0
4

1 回答 1

1

用于getgrnam("staff")获取人员组的组记录。该gr_mem成员虽然没有在手册页中详细解释,但似乎是一个由 NULL 指针终止的用户名数组。

要查找哪些用户是管理员,请对 admin 组执行相同的操作。

于 2010-06-06T06:42:57.237 回答