mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3:rpc_server/srvsvc: make sure we (re-)load all shares as root.
This fixes a regression in commit f03665bb7e
The use of reload_services() has a lot of side effects, e.g. reopen of
log files and other things, which are only useful in smbd, but not in rpcd_classic.
It was also unloading the user and registry shares we loaded a few lines
above.
We need to do all (re-)loading as root, otherwise we won't be able
to read root only smb.conf files, access registry shares, ...
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15243
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15266
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Walker <awalker@ixsystems.com>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Thu Dec 29 21:14:02 UTC 2022 on sn-devel-184
This commit is contained in:
parent
a00c7395fb
commit
f28553105b
@ -1 +0,0 @@
|
||||
^samba3.blackbox.registry_share.Test.for.share.enum.with.registry.share.clusteredmember
|
@ -644,30 +644,34 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
|
||||
union srvsvc_NetShareCtr ctr;
|
||||
uint32_t resume_handle = resume_handle_p ? *resume_handle_p : 0;
|
||||
const char *unix_name = session_info->unix_info->unix_name;
|
||||
int existing_home = lp_servicenumber(unix_name);
|
||||
int existing_home = -1;
|
||||
int added_home = -1;
|
||||
WERROR ret = WERR_OK;
|
||||
|
||||
DEBUG(5,("init_srv_share_info_ctr\n"));
|
||||
|
||||
/* Ensure all the usershares are loaded. */
|
||||
/*
|
||||
* We need to make sure to reload the services for the connecting user.
|
||||
* It is possible that we have includes with substitutions.
|
||||
*
|
||||
* include = /etc/samba/%U.conf
|
||||
*
|
||||
* We also need all printers and usershares.
|
||||
*
|
||||
* We need to be root in order to have access to registry shares
|
||||
* and root only smb.conf files.
|
||||
*/
|
||||
become_root();
|
||||
lp_kill_all_services();
|
||||
lp_load_with_shares(get_dyn_CONFIGFILE());
|
||||
delete_and_reload_printers();
|
||||
load_usershare_shares(NULL, connections_snum_used);
|
||||
load_registry_shares();
|
||||
unbecome_root();
|
||||
|
||||
existing_home = lp_servicenumber(unix_name);
|
||||
if (existing_home == -1) {
|
||||
added_home = register_homes_share(unix_name);
|
||||
}
|
||||
|
||||
/*
|
||||
* We need to make sure to reload the services for the connecting user.
|
||||
* It is possible that the we have includes with substitutions.
|
||||
*
|
||||
* include = /etc/samba/%U.conf
|
||||
*/
|
||||
reload_services(NULL, NULL, false);
|
||||
unbecome_root();
|
||||
|
||||
num_services = lp_numservices();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user