diff options
author | Stefan Metzmacher <metze@samba.org> | 2018-03-06 22:47:42 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-03-19 20:30:49 +0100 |
commit | c5874b9b68e0795e9dc23b04efa5959ac03ec8dc (patch) | |
tree | 106697d620089cdcbeedbe8fe7c004d28be0f303 /source3/passdb/pdb_util.c | |
parent | c2480b96b5f1cd22c2bc3b26c5846312295566f1 (diff) | |
download | samba-c5874b9b68e0795e9dc23b04efa5959ac03ec8dc.tar.gz |
s3:passdb: add create_builtin_guests()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/passdb/pdb_util.c')
-rw-r--r-- | source3/passdb/pdb_util.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/source3/passdb/pdb_util.c b/source3/passdb/pdb_util.c index 309eb893f8a..dcafbfcf62f 100644 --- a/source3/passdb/pdb_util.c +++ b/source3/passdb/pdb_util.c @@ -187,3 +187,55 @@ NTSTATUS create_builtin_administrators(const struct dom_sid *dom_sid) return status; } + +/******************************************************************* +*******************************************************************/ + +NTSTATUS create_builtin_guests(const struct dom_sid *dom_sid) +{ + NTSTATUS status; + struct dom_sid tmp_sid = { 0, }; + + status = pdb_create_builtin(BUILTIN_RID_GUESTS); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(5,("create_builtin_guests: Failed to create Guests\n")); + return status; + } + + /* add local guest */ + if (sid_compose(&tmp_sid, get_global_sam_sid(), DOMAIN_RID_GUEST)) { + status = add_sid_to_builtin(&global_sid_Builtin_Guests, + &tmp_sid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + } + + /* add local guests */ + if (sid_compose(&tmp_sid, get_global_sam_sid(), DOMAIN_RID_GUESTS)) { + status = add_sid_to_builtin(&global_sid_Builtin_Guests, + &tmp_sid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + } + + if (lp_server_role() != ROLE_DOMAIN_MEMBER) { + return NT_STATUS_OK; + } + + if (dom_sid == NULL) { + return NT_STATUS_INTERNAL_ERROR; + } + + /* add domain guests */ + if (sid_compose(&tmp_sid, dom_sid, DOMAIN_RID_GUESTS)) { + status = add_sid_to_builtin(&global_sid_Builtin_Guests, + &tmp_sid); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + } + + return NT_STATUS_OK; +} |