Unexpected interactions between init.d, upstart, "service" and "samba", "smbd" and "nmbd"

Bug #1321369 reported by Paul Kilgo on 2014-05-20
68
This bug affects 12 people
Affects Status Importance Assigned to Milestone
samba (Ubuntu)
Medium
Unassigned

Bug Description

The /etc/init.d/samba script appears to try and start smbd/nmbd improperly. If a user types "service samba restart" here is the behavior:

root@cups:~# service samba restart
root@cups:~# echo $?
1

I tried to track down the problem a bit by putting "set -x" on the init script:

root@cups:~# service samba start
+ /etc/init.d/nmbd start

So the nmbd init script appears to be exiting improperly without any output. After putting set -x on /etc/init.d/nmbd:

root@cups:~# service samba start
+ /etc/init.d/nmbd start
+ PIDDIR=/var/run/samba
+ NMBDPID=/var/run/samba/nmbd.pid
+ unset TMPDIR
+ test -x /usr/sbin/nmbd
+ . /lib/lsb/init-functions
+ run-parts --lsbsysinit --list /lib/lsb/init-functions.d
+ [ -r /lib/lsb/init-functions.d/20-left-info-blocks ]
+ . /lib/lsb/init-functions.d/20-left-info-blocks
+ [ -r /lib/lsb/init-functions.d/50-ubuntu-logging ]
+ . /lib/lsb/init-functions.d/50-ubuntu-logging
+ LOG_DAEMON_MSG=
+ FANCYTTY=
+ [ -e /etc/lsb-base-logging.sh ]
+ true
+ init_is_upstart
+ [ -x /sbin/initctl ]
+ /bin/grep -q upstart
+ /sbin/initctl version
+ return 0
+ exit 1

Looking at /etc/init.d/nmbd:

 24 case $1 in
 25 start)
 26 if init_is_upstart; then
 27 exit 1
 28 fi

And if we look at how /etc/init.d/samba start nmbd we can see why it exits at this point:

 16 case $1 in
 17 start)
 18 /etc/init.d/nmbd start
 19 /etc/init.d/smbd start
 20 /etc/init.d/samba-ad-dc start

Please note /etc/init.d/smbd also has a similar call to init_is_upstart.

Here's the behavior of all the init scripts in question when both smbd and nmbd are stopped initially:

root@cups:~# /etc/init.d/nmbd start; echo $?
1
root@cups:~# /etc/init.d/smbd start; echo $?
1
root@cups:~# /etc/init.d/samba start; echo $?
1
root@cups:~# service nmbd start; echo $?
nmbd start/running, process 32731
0
root@cups:~# service smbd start; echo $?
smbd start/running, process 32741
0
root@cups:~# service smbd stop; echo $?
smbd stop/waiting
0
root@cups:~# service nmbd stop; echo $?
nmbd stop/waiting
0
root@cups:~# service samba start; echo $?
1

Expected behavior:

Calling "/etc/init.d/{smbd,nmbd} start" exits 1 and prints a short message to stderr explaining that the user should be using "service {smbd,nmbd} start".

Calling "service samba start" exits 0 and successfully starts smbd and nmbd.

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: samba 2:4.1.6+dfsg-1ubuntu2.14.04.1
ProcVersionSignature: Ubuntu 3.13.0-24.46-generic 3.13.9
Uname: Linux 3.13.0-24-generic x86_64
ApportVersion: 2.14.1-0ubuntu3
Architecture: amd64
Date: Tue May 20 12:20:34 2014
InstallationDate: Installed on 2014-05-16 (3 days ago)
InstallationMedia: Ubuntu-Server 14.04 LTS "Trusty Tahr" - Release amd64 (20140416.2)
OtherFailedConnect: Yes
ProcEnviron:
 TERM=xterm
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SambaServerRegression: No
SmbConfIncluded: No
SourcePackage: samba
UpgradeStatus: No upgrade log present (probably fresh install)
modified.conffile..etc.init.d.nmbd: [modified]
modified.conffile..etc.init.d.samba: [modified]
mtime.conffile..etc.init.d.nmbd: 2014-05-20T12:11:20.828235
mtime.conffile..etc.init.d.samba: 2014-05-20T12:11:08.484234

Paul Kilgo (paulkilgo) wrote :
description: updated
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in samba (Ubuntu):
status: New → Confirmed
Robie Basak (racb) on 2014-05-26
Changed in samba (Ubuntu):
importance: Undecided → Medium
Robie Basak (racb) wrote :

I've seen multiple reports involving the "samba", "smbd" and "nmbd" services, confusion in their behavior for starting, stopping, restarting, reloading etc, and in interaction between upstart jobs, init.d scripts and the "service" command.

I think these all have the same root cause, which stems from the "samba" init.d script having started two daemons in the past, that are now managed by separate upstart jobs, and users expectations that a single "samba" restart will suffice. This may be entirely reasonable, but currently this expectation seems to be broken in certain cases, leading to these reports.

So I'm marking the other bugs as duplicates as this one.

summary: - /etc/init.d/samba starts smbd/nmbd improperly
+ Unexpected interactions between init.d, upstart, "service" and "samba",
+ "smbd" and "nmbd"

I already fixed this. Make the following changes on the /etc/init.d/samba

--> Change "/etc/init.d/" on every line on the file with "sudo service"

--> Move the line 24 to line 26, above ";;"

Your file must look like the attachment (more or less).

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers