[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Wed Dec 20 11:21:01 UTC 2023


The branch, master has been updated
       via  8cfc6ea9232 Revert "rpc_server:srvsvc - retrieve share ACL via root context"
       via  ff3b50034e2 rpcd_classic: Open share_info.tdb as root
      from  6d3146f94b2 smbd: Modernize a few DEBUG statements

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8cfc6ea92320be4ef26b91fce58fd76bfc7b95eb
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Dec 19 10:30:58 2023 +0100

    Revert "rpc_server:srvsvc - retrieve share ACL via root context"
    
    This reverts commit 80c0b416892bfacc0d919fe032461748d7962f05.
    
    With the previous patch it is no longer required. We open
    share_info.tdb as root when starting up rpcd_classic and keep it open.
    
    Commit 80c0b416892bfacc0d919fe032461748d7962f05 only fixed the
    problem in one place, but we had it in a lot more places...
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15265
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Wed Dec 20 11:20:51 UTC 2023 on atb-devel-224

commit ff3b50034e2821e54633daafc751d3ea3c00f4c3
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Dec 13 12:07:00 2023 +0100

    rpcd_classic: Open share_info.tdb as root
    
    srvsvc needs it, but for example NetShareGetInfo() runs as a
    user. Opening share_info.tdb at that point is too late.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15265
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/rpc_server/rpcd_classic.c         |  6 ++++++
 source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 17 +++--------------
 2 files changed, 9 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/rpcd_classic.c b/source3/rpc_server/rpcd_classic.c
index 9766d0a760b..2b7e9398d90 100644
--- a/source3/rpc_server/rpcd_classic.c
+++ b/source3/rpc_server/rpcd_classic.c
@@ -115,6 +115,12 @@ static NTSTATUS classic_servers(
 		exit(1);
 	}
 
+	status = share_info_db_init();
+	if (!NT_STATUS_IS_OK(status)) {
+		DBG_ERR("share_info_db_init failed: %s\n", nt_errstr(status));
+		exit(1);
+	}
+
 	lp_load_with_shares(get_dyn_CONFIGFILE());
 
 	mangle_reset_cache();
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index d6e7bed5949..29d224c427d 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -542,7 +542,6 @@ static bool is_hidden_share(int snum)
 static bool is_enumeration_allowed(struct pipes_struct *p,
                                    int snum)
 {
-	bool allowed;
 	struct dcesrv_call_state *dce_call = p->dce_call;
 	struct auth_session_info *session_info =
 		dcesrv_call_session_info(dce_call);
@@ -559,19 +558,9 @@ static bool is_enumeration_allowed(struct pipes_struct *p,
 		return false;
 	}
 
-
-	/*
-	 * share_access_check() must be opened as root
-	 * because it ultimately gets a R/W db handle on share_info.tdb
-	 * which has 0o600 permissions
-	 */
-	become_root();
-	allowed = share_access_check(session_info->security_token,
-				     lp_servicename(talloc_tos(), lp_sub, snum),
-				     FILE_READ_DATA, NULL);
-	unbecome_root();
-
-	return allowed;
+	return share_access_check(session_info->security_token,
+				  lp_servicename(talloc_tos(), lp_sub, snum),
+				  FILE_READ_DATA, NULL);
 }
 
 /****************************************************************************


-- 
Samba Shared Repository



More information about the samba-cvs mailing list