mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-27 11:13:24 +02:00
71 lines
1.7 KiB
Diff
71 lines
1.7 KiB
Diff
From 56bfca66b8597afe731f4624bb9f862bb45f81ba Mon Sep 17 00:00:00 2001
|
|
From: Matt Rogers <mrogers@redhat.com>
|
|
Date: Mon, 12 Oct 2015 14:46:18 +0200
|
|
Subject: [PATCH] PATCHSET33: s3-auch: Fix secuirty = server share access
|
|
|
|
Resolve user groups in non-winbind path of passwd_to_SamInfo3(), fixing
|
|
group memberships with server security.
|
|
|
|
Signed-off-by: Matt Rogers <mrogers@redhat.com>
|
|
---
|
|
source3/auth/server_info.c | 28 ++++++++++++++++++++++++++++
|
|
1 file changed, 28 insertions(+)
|
|
|
|
diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
|
|
index 1fd9317..91724cc 100644
|
|
--- a/source3/auth/server_info.c
|
|
+++ b/source3/auth/server_info.c
|
|
@@ -571,7 +571,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
|
|
enum lsa_SidType type;
|
|
uint32_t num_sids = 0;
|
|
struct dom_sid *user_sids = NULL;
|
|
+ gid_t *gids = NULL;
|
|
bool ok;
|
|
+ int i;
|
|
|
|
tmp_ctx = talloc_stackframe();
|
|
|
|
@@ -629,6 +631,29 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
|
|
get_global_sam_sid(),
|
|
DOMAIN_RID_USERS);
|
|
}
|
|
+
|
|
+ if (!getgroups_unix_user(tmp_ctx,
|
|
+ unix_username,
|
|
+ pwd->pw_gid,
|
|
+ &gids,
|
|
+ &num_sids)) {
|
|
+ DEBUG(1, ("Failed to get unix user groups.\n"));
|
|
+ goto done;
|
|
+ }
|
|
+
|
|
+ if (num_sids == 0) {
|
|
+ smb_panic("primary group missing");
|
|
+ }
|
|
+
|
|
+ user_sids = TALLOC_ARRAY(tmp_ctx, struct dom_sid, num_sids);
|
|
+
|
|
+ if (user_sids == NULL) {
|
|
+ return NT_STATUS_NO_MEMORY;
|
|
+ }
|
|
+
|
|
+ for (i = 0; i < num_sids; i++) {
|
|
+ gid_to_sid(&user_sids[i], gids[i]);
|
|
+ }
|
|
}
|
|
|
|
/* Make sure we have a valid group sid */
|
|
@@ -696,6 +721,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
|
|
|
|
status = NT_STATUS_OK;
|
|
done:
|
|
+ if (gids != NULL) {
|
|
+ talloc_free(gids);
|
|
+ }
|
|
talloc_free(tmp_ctx);
|
|
|
|
return status;
|
|
--
|
|
2.5.0
|
|
|