summaryrefslogtreecommitdiff
path: root/source3/passdb/pdb_util.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2018-03-06 22:47:42 +0100
committerAndreas Schneider <asn@cryptomilk.org>2018-03-19 20:30:49 +0100
commitc5874b9b68e0795e9dc23b04efa5959ac03ec8dc (patch)
tree106697d620089cdcbeedbe8fe7c004d28be0f303 /source3/passdb/pdb_util.c
parentc2480b96b5f1cd22c2bc3b26c5846312295566f1 (diff)
downloadsamba-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.c52
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;
+}