summaryrefslogtreecommitdiff
path: root/source4/smbd
Commit message (Collapse)AuthorAgeFilesLines
* s4:server: add support for 'smbcontrol samba shutdown'Stefan Metzmacher2019-02-051-1/+37
| | | | | | | | BUG: https://bugzilla.samba.org/show_bug.cgi?id=13752 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Björn Baumbach <bbaumbach@samba.org> (cherry picked from commit 832776c0fcf7cc658c128765514755c2d15b06a6)
* s4:server: avoid using pid=0 for the parent 'samba' processStefan Metzmacher2019-02-051-1/+1
| | | | | | | | | | It confuses the 'samba-tool processes' output and log messages. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13752 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Björn Baumbach <bbaumbach@samba.org> (cherry picked from commit 5bd7a8e5685caa09067745b108ef7e53e3108e97)
* waf: Remove build system info (uname -a)Mathieu Parent2018-01-141-3/+0
| | | | | | | | | | | | Preventing reproducible builds while adding minor benefit. More information at <https://reproducible-builds.org/>. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13213 Signed-off-by: Mathieu Parent <math.parent@gmail.com> Reviewed-by: Andreas Schneider <asn@samba.org> Reviewed-by: Andrew Bartlet <abartlet@samba.org>
* samba: Only use async signal-safe functions in signal handlerVolker Lendecke2018-01-061-3/+1
| | | | | | | Otherwise shutdown can hang Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
* Happy New Year 2018!Stefan Metzmacher2018-01-011-1/+1
| | | | | | | Signed-off-by: Stefan Metzmacher <metze@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Mon Jan 1 19:19:22 CET 2018 on sn-devel-144
* s4:samba: Fix default to be running samba as a deamonAndrew Bartlett2017-12-191-1/+1
| | | | | | | | | | | | | Commit 8736013dc42c5755b75bbb2e843a290bcd545909 got the (confusing) sense of opt_fork wrong. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13129 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Tue Dec 19 11:24:29 CET 2017 on sn-devel-144
* s4:samba: Allow samba daemon to run in foregroundAndreas Schneider2017-11-281-2/+9
| | | | | | | | | | | | | | We are passing the no_process_group to become_daemon() that setsid() is not called. In case we are double forking, we run in SysV daemon mode, setsid() should be called! See: https://www.freedesktop.org/software/systemd/man/daemon.html BUG: https://bugzilla.samba.org/show_bug.cgi?id=13129 Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
* s4:samba: Do not segfault if we run into issuesAndreas Schneider2017-11-281-0/+8
| | | | | Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
* samba: Fix CID 1420179 Code maintainability issues UNUSED_VALUEVolker Lendecke2017-10-271-1/+0
| | | | | | | I don't think pid is used at all here. Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
* samba: Fix CID 1420180 Null pointer dereferencesVolker Lendecke2017-10-271-1/+1
| | | | | Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
* s4:smbd: Add missing unistd.h include to fix build of process_preforkAndreas Schneider2017-10-191-0/+2
| | | | | | | | error: implicit declaration of function ‘getpgrp’; did you mean ‘getpt’? [-Werror=implicit-function-declaration] Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
* source4/smbd: replace DEBUG( with DBG_Gary Lockyer2017-10-198-61/+65
| | | | | | | | Update the debug logging to use the currently preferred debug macros Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* source4/smbd: add a prefork process model.Gary Lockyer2017-10-192-0/+398
| | | | | | | | | | | | | | | | Add a pre fork process model to bound the number processes forked by samba. Currently workers are only pre-forked for the ldap server, all the other services have pre-fork support disabled. When pre-fork support is disabled a new process is started for each service, and requests are processed by that process. This commit partially reverts commit b5be45c453bd51373bade26c29828b500ba586ec. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* source4/smbd: Fix code formatting after refactoring.Gary Lockyer2017-10-192-22/+27
| | | | | | | | | | Fix code formatting from the refactoring in the previous commits. Done as a separate patch to make the changes to functionality easier to review. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* process_standard: Do not log at level 2 every time a child exitsGary Lockyer2017-10-191-2/+4
| | | | | | Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* process_standard: Honour proc_ctx->inhibit_fork_on_acceptGary Lockyer2017-10-191-0/+15
| | | | | | | | This allows the service to control if it should fork per accept() without needing to replace the whole process model with process_single. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* process_standard: Move child pipe setup further down ↵Gary Lockyer2017-10-191-8/+5
| | | | | | | | | | standard_accept_connection() This avoids cleaning up on error from accept() but more importantly allows a future mode that acts like process_single and so has no child. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* process_standard: Use the new process_contextGary Lockyer2017-10-191-12/+57
| | | | | | | | | | | Use the new process_context to control the from_parent_fd This avoids the use of global variables, and will in the next patch allow process_standard to run as what was known as single without over-stamping a different process model. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* source4/smbd: refactor the process model for preforkGary Lockyer2017-10-1910-43/+105
| | | | | | | | | | | | | | | | | | Refactor the process model code to allow the addition of a prefork process model. - Add a process context to contain process model specific state - Add a service details structure to allow service to indicate which process model options they can support. In the new code the services advertise the features they support to the process model. The process model context is plumbed through to allow the process model to keep track of the supported options, and any state the process model may require. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* source4 smbd: remove global control pipe from process_standard.Gary Lockyer2017-09-286-42/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The standard model uses a pipe to signal the worker processes spawned on accept that the controlling process has terminated and that they should shut down. This pipe is currently a static global variable in process_standard.c. This patch replaces that global pipe with a file descriptor passed into the process model init functions, giving a single mechanism across all process models. This paves the way for the addition of a pre-fork process model. Ensuring that the correct file descriptors are closed, is difficult so it is best do this only once rather than require the process models to do this individually. Notes on debugging pipe ownership: Add code to log the process id and the file descriptor of the writeable pipe. run: lsof | grep FIFO | grep samba | grep <process id> this will produce lines like: samba 25624 him 4w FIFO 0,10 0t0 472206 pipe where: 4w is the file descriptor and mode and the number to the left of "pipe" is the pipe id. then: lsof | grep FIFO | grep samba | grep <pipe id> This will display all the processes with the pipe open and the mode only the smbd master process should have it open in write mode. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Ralph Böhme <slow@samba.org> Autobuild-Date(master): Thu Sep 28 02:08:34 CEST 2017 on sn-devel-144
* s4:smbd: set samba root process titleGary Lockyer2017-09-261-0/+2
| | | | | | | | | Set the process title in the samba root process to clearly identify it in ps output. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
* s4:smbd: call setproctitle_initGary Lockyer2017-09-261-0/+2
| | | | | | | | | | | | | | Call setproctitle_init() in main which suppresses the "samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor." messages, but more importantly it displays meaningful details in ps output. BUG: https://bugzilla.samba.org/show_bug.cgi?id=9816 Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
* s4/smbd: set the process group.Gary Lockyer2017-09-181-1/+17
| | | | | | | | | | | | | Set the process group in the samba daemon, the --no-process-group option allows this to be disabled. The no-process-group option needs to be disabled in self test. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Ralph Böhme <slow@samba.org> Autobuild-Date(master): Mon Sep 18 04:39:50 CEST 2017 on sn-devel-144
* stream_terminate_connection: Prevent use-after-freeGarming Sam2017-06-151-0/+10
| | | | | | | | This sometimes would show up as corrupted bytes during logs. Hammering the LDAP server enough times managed to trigger an outright segfault. Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
* s4: Add TALLOC_CTX * to register_server_service().Jeremy Allison2017-05-111-3/+4
| | | | | | | | Use the passed in context from callers. Remove one talloc_autofree_context(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
* process_standard: clean up messaging for children after exit()Andrew Bartlett2017-04-252-1/+4
| | | | | | | | This makes sure we remove any messaging sockets if a child dies or calls exit() without running the talloc destructor for messaging Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
* lib: modules: Change XXX_init interface from XXX_init(void) to ↵Jeremy Allison2017-04-224-10/+10
| | | | | | | | | | | | | | | | | | | | XXX_init(TALLOC_CTX *) Not currently used - no logic changes inside. This will make it possible to pass down a long-lived talloc context from the loading function for modules to use instead of having them internally all use talloc_autofree_context() which is a hidden global. Updated all known module interface numbers, and added a WHATSNEW. Signed-off-by: Jeremy Allison <jra@samba.org> Signed-off-by: Ralph Böhme <slow@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Sat Apr 22 01:17:00 CEST 2017 on sn-devel-144
* s4: server: Use state as the talloc context for open_schannel_session_store.Jeremy Allison2017-04-171-1/+10
| | | | | | | | | | Ensure it's freed on all error paths. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Mon Apr 17 23:10:06 CEST 2017 on sn-devel-144
* s4: server: Remove use of talloc_autofree_context as the parent of event_ctx.Jeremy Allison2017-04-171-2/+6
| | | | | | | | | | Use state->event_ctx as the parent of the initial imessaging context. Now we control all exit paths, we can call TALLOC_FREE(state) on all of them. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: messaging: When talloc_free()'ing an event context, only remove ↵Jeremy Allison2017-04-171-1/+1
| | | | | | | | | | msg_dgm_ref's that point to *that* context. Defensive programming change. Not strictly needed to prevent any crash/error. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Add a tevent signal handler for SIGTERM.Jeremy Allison2017-04-171-3/+28
| | | | | | | | | | | | | | Simplify by removing global state we don't need now we're called by tevent (and in the short window where we're installed by CatchSignal but before we install the tevent handler we don't need the complex global state handling as we have no forked children). We now have access to struct server_state on all exit paths - next commits will stop using talloc autofree context. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Add error return checks for tevent_add_fde, tevent_add_timer.Jeremy Allison2017-04-171-2/+9
| | | | | Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Plumb server_state through the irpc messaging for samba_terminate().Jeremy Allison2017-04-171-6/+9
| | | | | | | Use it in the message print to avoid a "unused variable" compile error. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Use server_state as a parameter to max_runtime_handler, not just ↵Jeremy Allison2017-04-171-3/+4
| | | | | | | name. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Use server_state as a parameter to stdin handler, not just name.Jeremy Allison2017-04-171-3/+4
| | | | | Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server: Create a server 'state' struct.Jeremy Allison2017-04-171-14/+26
| | | | | | | | No logic changes, will be used to move allocated pointers off the talloc autofree context in a later commit. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: server. Whitespace and 80+ column cleanup.Jeremy Allison2017-04-171-52/+97
| | | | | | | No logic changes. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
* s4: process_standard: Add a simplified SIGTERM handler based on code from ↵Jeremy Allison2017-04-081-0/+40
| | | | | | | | | | | | source4/smbd/server.c. Use from a tevent handler added to standard_accept_connection() and standard_new_task() Allows us to be independent of parent SIGTERM signal handling. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Ralph Böhme <slow@samba.org> Autobuild-Date(master): Sat Apr 8 16:21:57 CEST 2017 on sn-devel-144
* s4: process_standard: Add tevent SIGHUP signal handler to ↵Jeremy Allison2017-04-081-0/+31
| | | | | | | | | standard_accept_connection() and standard_new_task(). This makes us independent of parent SIGHUP signal handling. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
* s4: process_standard: Add return checking for tevent_add_fd() to ↵Jeremy Allison2017-04-081-2/+11
| | | | | | | standard_accept_connection() and standard_new_task(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
* s4: process_standard: Always free tevent_context before exit().Jeremy Allison2017-04-081-0/+1
| | | | | Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
* s4: process_standard: Move talloc_free of event context so it is last thing ↵Jeremy Allison2017-04-081-2/+3
| | | | | | | freed before exit(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
* s4: server: Fix crash in NTVFS server caused by ordering of destructor calls.Jeremy Allison2017-04-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the NTVFS server we have the following talloc heirarchy: event_ctx | ---------------------------------------------------- .. other children | | | msg_dgm_ref srv_conn msg_dgm_ref ^ | | NTVFS structures | | | XXXXXX | | | | --------------------- pointer to msg_dgm_ref Some of the structures under NTVFS (marked XXXXX) can have pointers to imessaging contexts which internally have pointers to msg_dgm_ref structurs allocated off event_ctx. The original code calls: model_ops->terminate(event_ctx, srv_conn->lp_ctx, reason); talloc_free(srv_conn); But model_ops->terminate() calls talloc_free(event_ctx) and then calls exit(). In this case srv_conn is never explicitly freed, but only freed as a talloc child of the event_ctx. Depending on the ordering of the linked list of talloc children under event_ctx(which can be reordered via talloc_free/reinit of msg_dgm_ref) a pointer to msg_dgm_ref under srv_conn can be left pointing to memory that was already freed. This pointer is then used in the destructor for a file object called when srv_conn is freed. Re-ordering this to explicitly call TALLOC_FREE(srv_conn) first and then model_ops->terminate() fixes this problem. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Böhme <slow@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Sun Apr 2 05:18:39 CEST 2017 on sn-devel-144
* s4: messaging. Add imessaging_reinit_all() function.Jeremy Allison2017-03-312-1/+15
| | | | | | | | | | | Ensure it is called from process_standard.c after every fork(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org> Autobuild-User(master): Volker Lendecke <vl@samba.org> Autobuild-Date(master): Fri Mar 31 14:48:17 CEST 2017 on sn-devel-144
* s4-named_pipe_auth: Rename client -> remote_client and server -> local_serverGary Lockyer2017-03-291-12/+14
| | | | | | | | | | | This brings the callers of named_pipe_auth in line with that subsystem. While these names may be better, the rest of Samba consistently uses remote_address and local_address, and this difference has hidden bugs Signed-off-by: Andrew Bartlett <abartlet@samba.org> Pair-Programmed-by: Gary Lockyer <gary@catalyst.net.nz> Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
* s4-smbd: Remember the original client and server IPs from the SMB connectionAndrew Bartlett2017-03-291-0/+3
| | | | | | | | | We need to know in the RPC server the original address the client came from so that we can log this with the authentication audit information Signed-off-by: Andrew Bartlett <abartlet@samba.org> Pair-Programmed-by: Gary Lockyer <gary@catalyst.net.nz> Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
* Correct "initialze" typos.Chris Lamb2017-02-221-1/+1
| | | | | | Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
* rpc_server: Allow to configure the port range for RPC servicesAndreas Schneider2017-01-271-5/+3
| | | | | | | | | BUG: https://bugzilla.samba.org/show_bug.cgi?id=12521 Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Stefan Metzmacher <metze@samba.org>
* rpc_server: Use the RPC TCPIP ports of WindowsAndreas Schneider2017-01-271-2/+2
| | | | | | | | | | | | | Since Windows Server 2008 Microsoft uses a different port range for RPC services. Before it was 1024-65535 and they changed it to 49152-65535. We should use the same range as these are the ports the firewall in AD networks normally allow. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12521 Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
* param: Remove winbindd privileged socket directory optionAndrew Bartlett2017-01-221-1/+0
| | | | | | | | | | | | This option is unused and has not been used since before Samba 4.3 when the source4/ winbindd code went away. The associated dynconfig parameters used for the default are also removed. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10066 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>