/********************************************************* Fix a list of Users for uninitialised passwords **********************************************************/ static int fix_users_list(void) { struct pdb_search *u_search; struct samr_displayentry userentry; struct samu *sam_pwent; TALLOC_CTX *tosctx; struct dom_sid user_sid; NTSTATUS status; bool bret; int ret; tosctx = talloc_tos(); if (!tosctx) { fprintf(stderr, "Out of memory!\n"); return 1; } u_search = pdb_search_users(tosctx, 0); if (!u_search) { fprintf(stderr, "User Search failed!\n"); ret = 1; goto done; } while (u_search->next_entry(u_search, &userentry)) { sam_pwent = samu_new(tosctx); if (sam_pwent == NULL) { fprintf(stderr, "Out of memory!\n"); ret = 1; goto done; } sid_compose(&user_sid, get_global_sam_sid(), userentry.rid); bret = pdb_getsampwsid(sam_pwent, &user_sid); if (!bret) { DEBUG(2, ("getsampwsid failed\n")); TALLOC_FREE(sam_pwent); continue; } status = pdb_update_sam_account(sam_pwent); if (!NT_STATUS_IS_OK(status)) { printf("Update of user %s failed!\n", pdb_get_username(sam_pwent)); } TALLOC_FREE(sam_pwent); } ret = 0; done: TALLOC_FREE(tosctx); return ret; }
/********************************************************* List Users **********************************************************/ static int print_users_list(bool verbosity, bool smbpwdstyle) { struct pdb_search *u_search; struct samr_displayentry userentry; struct samu *sam_pwent; TALLOC_CTX *tosctx; struct dom_sid user_sid; bool bret; int ret; tosctx = talloc_tos(); if (!tosctx) { DEBUG(0, ("talloc failed\n")); return 1; } u_search = pdb_search_users(tosctx, 0); if (!u_search) { DEBUG(0, ("User Search failed!\n")); ret = 1; goto done; } while (u_search->next_entry(u_search, &userentry)) { sam_pwent = samu_new(tosctx); if (sam_pwent == NULL) { DEBUG(0, ("talloc failed\n")); ret = 1; goto done; } sid_compose(&user_sid, get_global_sam_sid(), userentry.rid); bret = pdb_getsampwsid(sam_pwent, &user_sid); if (!bret) { DEBUG(2, ("getsampwsid failed\n")); TALLOC_FREE(sam_pwent); continue; } if (verbosity) { printf ("---------------\n"); } print_sam_info(sam_pwent, verbosity, smbpwdstyle); TALLOC_FREE(sam_pwent); } ret = 0; done: TALLOC_FREE(tosctx); return ret; }
static uint32 get_maxrid(void) { uint32 max_rid = 0; if (!search_maxrid(pdb_search_users(0), "users", &max_rid)) return 0; if (!search_maxrid(pdb_search_groups(), "groups", &max_rid)) return 0; if (!search_maxrid(pdb_search_aliases(get_global_sam_sid()), "aliases", &max_rid)) return 0; return max_rid; }