我可以从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
答案 0 :(得分:1)
使用getgrnam("staff")
获取员工组的组记录。 gr_mem
成员虽然未在联机帮助页中详细说明,但似乎是一个由NULL指针终止的用户名数组。
要查找哪些用户是管理员,请对管理员组执行相同的操作。