📄 pdb_interface.c
字号:
if (!pdb_context) { return; } pdb_context->pdb_endsampwent(pdb_context);}BOOL pdb_getsampwent(SAM_ACCOUNT *user) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_getsampwent(pdb_context, user));}static SAM_ACCOUNT *sam_account_cache = NULL;BOOL pdb_getsampwnam(SAM_ACCOUNT *sam_acct, const char *username) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } if (!NT_STATUS_IS_OK(pdb_context->pdb_getsampwnam(pdb_context, sam_acct, username))) return False; if (sam_account_cache != NULL) { pdb_free_sam(&sam_account_cache); sam_account_cache = NULL; } pdb_copy_sam_account(sam_acct, &sam_account_cache); return True;}BOOL pdb_getsampwsid(SAM_ACCOUNT *sam_acct, const DOM_SID *sid) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } if ((sam_account_cache != NULL) && (sid_equal(sid, pdb_get_user_sid(sam_account_cache)))) return pdb_copy_sam_account(sam_account_cache, &sam_acct); return NT_STATUS_IS_OK(pdb_context->pdb_getsampwsid(pdb_context, sam_acct, sid));}BOOL pdb_add_sam_account(SAM_ACCOUNT *sam_acct) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_add_sam_account(pdb_context, sam_acct));}BOOL pdb_update_sam_account(SAM_ACCOUNT *sam_acct) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } if (sam_account_cache != NULL) { pdb_free_sam(&sam_account_cache); sam_account_cache = NULL; } return NT_STATUS_IS_OK(pdb_context->pdb_update_sam_account(pdb_context, sam_acct));}BOOL pdb_delete_sam_account(SAM_ACCOUNT *sam_acct) { struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } if (sam_account_cache != NULL) { pdb_free_sam(&sam_account_cache); sam_account_cache = NULL; } return NT_STATUS_IS_OK(pdb_context->pdb_delete_sam_account(pdb_context, sam_acct));}NTSTATUS pdb_rename_sam_account(SAM_ACCOUNT *oldname, const char *newname){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_NOT_IMPLEMENTED; } if (sam_account_cache != NULL) { pdb_free_sam(&sam_account_cache); sam_account_cache = NULL; } return pdb_context->pdb_rename_sam_account(pdb_context, oldname, newname);}NTSTATUS pdb_update_login_attempts(SAM_ACCOUNT *sam_acct, BOOL success){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_NOT_IMPLEMENTED; } return pdb_context->pdb_update_login_attempts(pdb_context, sam_acct, success);}BOOL pdb_getgrsid(GROUP_MAP *map, DOM_SID sid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_getgrsid(pdb_context, map, sid));}BOOL pdb_getgrgid(GROUP_MAP *map, gid_t gid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_getgrgid(pdb_context, map, gid));}BOOL pdb_getgrnam(GROUP_MAP *map, const char *name){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_getgrnam(pdb_context, map, name));}BOOL pdb_add_group_mapping_entry(GROUP_MAP *map){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_add_group_mapping_entry(pdb_context, map));}BOOL pdb_update_group_mapping_entry(GROUP_MAP *map){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_update_group_mapping_entry(pdb_context, map));}BOOL pdb_delete_group_mapping_entry(DOM_SID sid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_delete_group_mapping_entry(pdb_context, sid));}BOOL pdb_enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **pp_rmap, size_t *p_num_entries, BOOL unix_only){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_enum_group_mapping(pdb_context, sid_name_use, pp_rmap, p_num_entries, unix_only));}NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx, const DOM_SID *sid, uint32 **pp_member_rids, size_t *p_num_members){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_UNSUCCESSFUL; } return pdb_context->pdb_enum_group_members(pdb_context, mem_ctx, sid, pp_member_rids, p_num_members);}NTSTATUS pdb_enum_group_memberships(const char *username, gid_t primary_gid, DOM_SID **pp_sids, gid_t **pp_gids, size_t *p_num_groups){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_UNSUCCESSFUL; } return pdb_context->pdb_enum_group_memberships(pdb_context, username, primary_gid, pp_sids, pp_gids, p_num_groups);}BOOL pdb_find_alias(const char *name, DOM_SID *sid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_find_alias(pdb_context, name, sid));}NTSTATUS pdb_create_alias(const char *name, uint32 *rid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_NOT_IMPLEMENTED; } return pdb_context->pdb_create_alias(pdb_context, name, rid);}BOOL pdb_delete_alias(const DOM_SID *sid){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_delete_alias(pdb_context, sid)); }BOOL pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_get_aliasinfo(pdb_context, sid, info));}BOOL pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context->pdb_set_aliasinfo(pdb_context, sid, info));}BOOL pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_add_aliasmem(pdb_context, alias, member));}BOOL pdb_del_aliasmem(const DOM_SID *alias, const DOM_SID *member){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_del_aliasmem(pdb_context, alias, member));}BOOL pdb_enum_aliasmem(const DOM_SID *alias, DOM_SID **pp_members, size_t *p_num_members){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_enum_aliasmem(pdb_context, alias, pp_members, p_num_members));}BOOL pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx, const DOM_SID *domain_sid, const DOM_SID *members, size_t num_members, uint32 **pp_alias_rids, size_t *p_num_alias_rids){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_enum_alias_memberships(pdb_context, mem_ctx, domain_sid, members, num_members, pp_alias_rids, p_num_alias_rids));}NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid, int num_rids, uint32 *rids, const char **names, uint32 *attrs){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return NT_STATUS_NOT_IMPLEMENTED; } return pdb_context->pdb_lookup_rids(pdb_context, domain_sid, num_rids, rids, names, attrs);}BOOL pdb_get_account_policy(int policy_index, uint32 *value){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_get_account_policy(pdb_context, policy_index, value));}BOOL pdb_set_account_policy(int policy_index, uint32 value){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_set_account_policy(pdb_context, policy_index, value));}BOOL pdb_get_seq_num(time_t *seq_num){ struct pdb_context *pdb_context = pdb_get_static_context(False); if (!pdb_context) { return False; } return NT_STATUS_IS_OK(pdb_context-> pdb_get_seq_num(pdb_context, seq_num));}/*************************************************************** Initialize the static context (at smbd startup etc). If uninitialised, context will auto-init on first use. ***************************************************************/BOOL initialize_password_db(BOOL reload){ return (pdb_get_static_context(reload) != NULL);}/*************************************************************************** Default implementations of some functions. ****************************************************************************/static NTSTATUS pdb_default_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname){ return NT_STATUS_NO_SUCH_USER;}static NTSTATUS pdb_default_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid){ return NT_STATUS_NO_SUCH_USER;}static NTSTATUS pdb_default_add_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd){ DEBUG(0,("this backend (%s) should not be listed as the first passdb backend! You can't add users to it.\n", methods->name)); return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_update_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd){ return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_delete_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd){ return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_rename_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd, const char *newname){ return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_update_login_attempts (struct pdb_methods *methods, SAM_ACCOUNT *newpwd, BOOL success){ return NT_STATUS_OK;}static NTSTATUS pdb_default_setsampwent(struct pdb_methods *methods, BOOL update, uint16 acb_mask){ return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT *user){ return NT_STATUS_NOT_IMPLEMENTED;}static void pdb_default_endsampwent(struct pdb_methods *methods){ return; /* NT_STATUS_NOT_IMPLEMENTED; */}static NTSTATUS pdb_default_get_account_policy(struct pdb_methods *methods, int policy_index, uint32 *value){ return account_policy_get(policy_index, value) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;}static NTSTATUS pdb_default_set_account_policy(struct pdb_methods *methods, int policy_index, uint32 value){ return account_policy_set(policy_index, value) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;}static NTSTATUS pdb_default_get_seq_num(struct pdb_methods *methods, time_t *seq_num){ *seq_num = time(NULL); return NT_STATUS_OK;}static void add_uid_to_array_unique(TALLOC_CTX *mem_ctx, uid_t uid, uid_t **pp_uids, size_t *p_num){ size_t i; for (i=0; i<*p_num; i++) { if ((*pp_uids)[i] == uid) return; } *pp_uids = TALLOC_REALLOC_ARRAY(mem_ctx, *pp_uids, uid_t, *p_num+1); if (*pp_uids == NULL) return; (*pp_uids)[*p_num] = uid; *p_num += 1;}static BOOL get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size_t *p_num){ struct group *grp; char **gr; struct sys_pwent *userlist, *user; *pp_uids = NULL; *p_num = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -