1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

s3:passdb add pdb_*_is_responsible_for* functions

allows PDB modules to specify for which special domains they
are responsible when it comes to SID->xid conversion

By default, passdb modules will be responsible for local BUILTIN,
local SAM and Unix Users/Groups

Pair-Programmed-With: Michael Adam <obnox@samba.org>

Signed-off-by: Christian Ambach <ambi@samba.org>
Signed-off-by: Michael Adam <obnox@samba.org>
This commit is contained in:
Christian Ambach 2013-05-27 12:24:22 +02:00 committed by Michael Adam
parent 9eb67f259f
commit 0ad38d777f
3 changed files with 84 additions and 0 deletions

View File

@ -934,6 +934,11 @@ NTSTATUS pdb_enum_upn_suffixes(TALLOC_CTX *mem_ctx,
NTSTATUS pdb_set_upn_suffixes(uint32_t num_suffixes,
const char **suffixes);
bool pdb_is_responsible_for_our_sam(void);
bool pdb_is_responsible_for_builtin(void);
bool pdb_is_responsible_for_wellknown(void);
bool pdb_is_responsible_for_unix_users(void);
bool pdb_is_responsible_for_unix_groups(void);
/* The following definitions come from passdb/pdb_util.c */

View File

@ -90,6 +90,11 @@ pdb_default_get_aliasinfo: NTSTATUS (struct pdb_methods *, const struct dom_sid
pdb_default_getgrgid: NTSTATUS (struct pdb_methods *, GROUP_MAP *, gid_t)
pdb_default_getgrnam: NTSTATUS (struct pdb_methods *, GROUP_MAP *, const char *)
pdb_default_getgrsid: NTSTATUS (struct pdb_methods *, GROUP_MAP *, struct dom_sid)
pdb_is_responsible_for_our_sam: bool (void)
pdb_is_responsible_for_builtin: bool (void)
pdb_is_responsible_for_wellknown: bool (void)
pdb_is_responsible_for_unix_users: bool (void)
pdb_is_responsible_for_unix_groups: bool (void)
pdb_default_set_aliasinfo: NTSTATUS (struct pdb_methods *, const struct dom_sid *, struct acct_info *)
pdb_default_update_group_mapping_entry: NTSTATUS (struct pdb_methods *, GROUP_MAP *)
pdb_del_aliasmem: NTSTATUS (const struct dom_sid *, const struct dom_sid *)

View File

@ -2373,6 +2373,69 @@ NTSTATUS pdb_set_upn_suffixes(uint32_t num_suffixes,
return pdb->set_upn_suffixes(pdb, num_suffixes, suffixes);
}
/*******************************************************************
idmap control methods
*******************************************************************/
static bool pdb_default_is_responsible_for_our_sam(
struct pdb_methods *methods)
{
return true;
}
static bool pdb_default_is_responsible_for_builtin(
struct pdb_methods *methods)
{
return true;
}
static bool pdb_default_is_responsible_for_wellknown(
struct pdb_methods *methods)
{
return false;
}
static bool pdb_default_is_responsible_for_unix_users(
struct pdb_methods *methods)
{
return true;
}
static bool pdb_default_is_responsible_for_unix_groups(
struct pdb_methods *methods)
{
return true;
}
bool pdb_is_responsible_for_our_sam(void)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->is_responsible_for_our_sam(pdb);
}
bool pdb_is_responsible_for_builtin(void)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->is_responsible_for_builtin(pdb);
}
bool pdb_is_responsible_for_wellknown(void)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->is_responsible_for_wellknown(pdb);
}
bool pdb_is_responsible_for_unix_users(void)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->is_responsible_for_unix_users(pdb);
}
bool pdb_is_responsible_for_unix_groups(void)
{
struct pdb_methods *pdb = pdb_get_methods();
return pdb->is_responsible_for_unix_groups(pdb);
}
/*******************************************************************
secret methods
*******************************************************************/
@ -2523,5 +2586,16 @@ NTSTATUS make_pdb_method( struct pdb_methods **methods )
(*methods)->enum_upn_suffixes = pdb_default_enum_upn_suffixes;
(*methods)->set_upn_suffixes = pdb_default_set_upn_suffixes;
(*methods)->is_responsible_for_our_sam =
pdb_default_is_responsible_for_our_sam;
(*methods)->is_responsible_for_builtin =
pdb_default_is_responsible_for_builtin;
(*methods)->is_responsible_for_wellknown =
pdb_default_is_responsible_for_wellknown;
(*methods)->is_responsible_for_unix_users =
pdb_default_is_responsible_for_unix_users;
(*methods)->is_responsible_for_unix_groups =
pdb_default_is_responsible_for_unix_groups;
return NT_STATUS_OK;
}