The Samba-Bugzilla – Attachment 13817 Details for
Bug 13129
The samba daemons should not double fork when started by systemd
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch for 4.7
v4-7-test-samba-foreground.patch (text/plain), 6.28 KB, created by
Andreas Schneider
on 2017-11-28 15:32:22 UTC
(
hide
)
Description:
patch for 4.7
Filename:
MIME Type:
Creator:
Andreas Schneider
Created:
2017-11-28 15:32:22 UTC
Size:
6.28 KB
patch
obsolete
>From 5c88229f50f8732e633c205bd0b39ba335ffc2bb Mon Sep 17 00:00:00 2001 >From: Andreas Schneider <asn@samba.org> >Date: Fri, 10 Nov 2017 09:18:18 +0100 >Subject: [PATCH 1/2] s4:samba: Allow samba daemon to run in foreground > >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> > >(cherry picked from commit 8736013dc42c5755b75bbb2e843a290bcd545909) >--- > source3/smbd/server.c | 2 +- > source4/smbd/server.c | 13 ++++++++++--- > 2 files changed, 11 insertions(+), 4 deletions(-) > >diff --git a/source3/smbd/server.c b/source3/smbd/server.c >index 181bcd1e123..252b43190d7 100644 >--- a/source3/smbd/server.c >+++ b/source3/smbd/server.c >@@ -1592,7 +1592,7 @@ extern void build_options(bool screen); > struct poptOption long_options[] = { > POPT_AUTOHELP > {"daemon", 'D', POPT_ARG_NONE, NULL, OPT_DAEMON, "Become a daemon (default)" }, >- {"interactive", 'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE, "Run interactive (not a daemon)"}, >+ {"interactive", 'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE, "Run interactive (not a daemon) and log to stdout"}, > {"foreground", 'F', POPT_ARG_NONE, NULL, OPT_FORK, "Run daemon in foreground (for daemontools, etc.)" }, > {"no-process-group", '\0', POPT_ARG_NONE, NULL, OPT_NO_PROCESS_GROUP, "Don't create a new process group" }, > {"log-stdout", 'S', POPT_ARG_NONE, NULL, OPT_LOG_STDOUT, "Log to stdout" }, >diff --git a/source4/smbd/server.c b/source4/smbd/server.c >index aeec439e0a0..4ddaf41bc06 100644 >--- a/source4/smbd/server.c >+++ b/source4/smbd/server.c >@@ -348,6 +348,7 @@ static int binary_smbd_main(const char *binary_name, > const char *argv[]) > { > bool opt_daemon = false; >+ bool opt_fork = true; > bool opt_interactive = false; > int opt; > poptContext pc; >@@ -362,6 +363,7 @@ static int binary_smbd_main(const char *binary_name, > struct stat st; > enum { > OPT_DAEMON = 1000, >+ OPT_FOREGROUND, > OPT_INTERACTIVE, > OPT_PROCESS_MODEL, > OPT_SHOW_BUILD >@@ -370,6 +372,8 @@ static int binary_smbd_main(const char *binary_name, > POPT_AUTOHELP > {"daemon", 'D', POPT_ARG_NONE, NULL, OPT_DAEMON, > "Become a daemon (default)", NULL }, >+ {"foreground", 'F', POPT_ARG_NONE, NULL, OPT_FOREGROUND, >+ "Run the daemon in foreground", NULL }, > {"interactive", 'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE, > "Run interactive (not a daemon)", NULL}, > {"model", 'M', POPT_ARG_STRING, NULL, OPT_PROCESS_MODEL, >@@ -392,6 +396,9 @@ static int binary_smbd_main(const char *binary_name, > case OPT_DAEMON: > opt_daemon = true; > break; >+ case OPT_FOREGROUND: >+ opt_fork = false; >+ break; > case OPT_INTERACTIVE: > opt_interactive = true; > break; >@@ -415,7 +422,7 @@ static int binary_smbd_main(const char *binary_name, > "not allowed together with -D|--daemon\n\n"); > poptPrintUsage(pc, stderr, 0); > return 1; >- } else if (!opt_interactive) { >+ } else if (!opt_interactive && !opt_fork) { > /* default is --daemon */ > opt_daemon = true; > } >@@ -451,8 +458,8 @@ static int binary_smbd_main(const char *binary_name, > } > > if (opt_daemon) { >- DEBUG(3,("Becoming a daemon.\n")); >- become_daemon(true, false, false); >+ DBG_NOTICE("Becoming a daemon.\n"); >+ become_daemon(opt_fork, opt_no_process_group, false); > } > > /* Create the memory context to hang everything off. */ >-- >2.15.0 > > >From 71113e45933fe5d31f10ebb93bde7e9ed49ac77e Mon Sep 17 00:00:00 2001 >From: Andreas Schneider <asn@samba.org> >Date: Fri, 10 Nov 2017 09:32:27 +0100 >Subject: [PATCH 2/2] systemd: Start processes in forground and without a > process group > >We should not double fork in notify mode or systemd think something >during startup will be wrong and send SIGTERM to the process. So >sometimes the daemon will not start up correctly. > >systemd will also handle the process group. > >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> > >(cherry picked from commit 8b6f58194da7e849cdb9d20712dff49b17a93a77) >--- > packaging/systemd/nmb.service | 2 +- > packaging/systemd/samba.service | 2 +- > packaging/systemd/smb.service | 2 +- > packaging/systemd/winbind.service | 2 +- > 4 files changed, 4 insertions(+), 4 deletions(-) > >diff --git a/packaging/systemd/nmb.service b/packaging/systemd/nmb.service >index 992c0cd9d2b..71c93d6088b 100644 >--- a/packaging/systemd/nmb.service >+++ b/packaging/systemd/nmb.service >@@ -7,7 +7,7 @@ Type=notify > NotifyAccess=all > PIDFile=/run/nmbd.pid > EnvironmentFile=-/etc/sysconfig/samba >-ExecStart=/usr/sbin/nmbd $NMBDOPTIONS >+ExecStart=/usr/sbin/nmbd --foreground --no-process-group $NMBDOPTIONS > ExecReload=/usr/bin/kill -HUP $MAINPID > LimitCORE=infinity > >diff --git a/packaging/systemd/samba.service b/packaging/systemd/samba.service >index 824f89c2030..1b64c3b779d 100644 >--- a/packaging/systemd/samba.service >+++ b/packaging/systemd/samba.service >@@ -8,7 +8,7 @@ NotifyAccess=all > PIDFile=/run/samba.pid > LimitNOFILE=16384 > EnvironmentFile=-/etc/sysconfig/samba >-ExecStart=/usr/sbin/samba $SAMBAOPTIONS >+ExecStart=/usr/sbin/samba --foreground --no-process-group $SAMBAOPTIONS > ExecReload=/usr/bin/kill -HUP $MAINPID > > [Install] >diff --git a/packaging/systemd/smb.service b/packaging/systemd/smb.service >index 6053a5caaa5..adf6684c7d9 100644 >--- a/packaging/systemd/smb.service >+++ b/packaging/systemd/smb.service >@@ -8,7 +8,7 @@ NotifyAccess=all > PIDFile=/run/smbd.pid > LimitNOFILE=16384 > EnvironmentFile=-/etc/sysconfig/samba >-ExecStart=/usr/sbin/smbd $SMBDOPTIONS >+ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS > ExecReload=/usr/bin/kill -HUP $MAINPID > LimitCORE=infinity > >diff --git a/packaging/systemd/winbind.service b/packaging/systemd/winbind.service >index c511488166e..46b3797251d 100644 >--- a/packaging/systemd/winbind.service >+++ b/packaging/systemd/winbind.service >@@ -7,7 +7,7 @@ Type=notify > NotifyAccess=all > PIDFile=/run/winbindd.pid > EnvironmentFile=-/etc/sysconfig/samba >-ExecStart=/usr/sbin/winbindd "$WINBINDOPTIONS" >+ExecStart=/usr/sbin/winbindd --foreground --no-process-group "$WINBINDOPTIONS" > ExecReload=/usr/bin/kill -HUP $MAINPID > LimitCORE=infinity > >-- >2.15.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
ab
:
review+
Actions:
View
Attachments on
bug 13129
:
13816
|
13817
|
13821
|
13875
|
13878
|
13940