// Copyright 2004-present Facebook. All Rights Reserved. #include #include #include #include #include "osquery/core.h" #include "osquery/database.h" namespace osquery { namespace tables { std::mutex pwdEnumerationMutex; QueryData genUsers() { std::lock_guard lock(pwdEnumerationMutex); QueryData results; struct passwd *pwd = (passwd *)malloc(sizeof(struct passwd)); setpwent(); while ((pwd = getpwent()) != NULL) { Row r; r["uid"] = boost::lexical_cast(pwd->pw_uid); r["gid"] = boost::lexical_cast(pwd->pw_gid); r["username"] = std::string(pwd->pw_name); r["description"] = std::string(pwd->pw_gecos); r["directory"] = std::string(pwd->pw_dir); r["shell"] = std::string(pwd->pw_shell); results.push_back(r); } endpwent(); free(pwd); return results; } } }