blob: 615e17b21fca4285e6c0dcd5d1062e0c8c2b4a4f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#!/bin/bash
#
#
### BEGIN INIT INFO
# Provides: $samba
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: samba
# Starts and stops the Samba smbd and nmbd daemons
# used to provide SMB network services.
### END INIT INFO
#
# Written by Miquel van Smoorenburg <miquels@drinkel.ow.org>.
# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# Modified for OpenLinux by Raymund Will <ray@caldera.de>
# Adapted for samba by Klaus Singvogel <klaus@caldera.de>
NAME_S=smbd
DAEMON_S=/usr/sbin/$NAME_S
NAME_N=nmbd
DAEMON_N=/usr/sbin/$NAME_N
NAME_W=winbindd
DAEMON_W=/usr/sbin/$NAME_W
config_file=/etc/samba.d/smb.conf
# Source function library (and set vital variables).
. @SVIdir@/functions
status() {
[ -e $1 ] || return 3; # lock / pid file doesn't exist, seems to be stopped
i=`cat "$1"`
state=`egrep '^State' /proc/$i/status 2>/dev/null| sed 's#.* \(.\).*#\1#'`
if [ x$state = x -o x$state = xZ ]; then
return 2 # no such process (or zombie) --> dead
fi
return 0 # seems to be up and running
}
# this function is dedicated to Jan Terpstra. -- Klaus Singvogel, Sep. 2001.
WinbdConfig() {
# returns 0 if winbindd is not configured,
# and 1 if winbindd is configured.
local config_file=$1; shift # file to check
# check if "winbind uid" is set in samba config file
egrep -q '[^#]*winbind uid' $config_file || return 0
found=0;
# We also need to check if least one PAM module control file does
# NOT have pam_winbind.so commented out
for i in /etc/pam.d/*; do
if [ ! -f $i ]; then next; fi
egrep -q '[^#]*pam_winbind.so' $i && found=1 && break;
done
if [ $found != 0 ]; then
# if so, ensure that in /etc/nsswitch.conf we have for
# "passwd", "shadow", "group" an entry for "winbind"
egrep -q '^passwd:.*winbind' /etc/nsswitch.conf && return 1
egrep -q '^shadow:.*winbind' /etc/nsswitch.conf && return 1
egrep -q '^group:.*winbind' /etc/nsswitch.conf && return 1
fi
return 0
}
case "$1" in
start)
[ ! -e $SVIlock ] || exit 0
[ -x $DAEMON_S -a -x $DAEMON_N ] || exit 5
SVIemptyConfig $config_file && exit 6
echo -n "Starting $SVIsubsys services: "
ssd -S -n $NAME_S -x $DAEMON_S -- $OPTIONS_SMB
WinbdConfig $config_file || ssd -S -n $NAME_W -x $DAEMON_W -- $OPTIONS_WINBD
ssd -S -n $NAME_N -x $DAEMON_N -- $OPTIONS_NMB
ret=$?
echo "."
touch $SVIlock
;;
stop)
[ -e $SVIlock ] || exit 0
echo -n "Stopping $SVIsubsys services: "
ssd -K -p /var/lock/samba.d/$NAME_S.pid -n $NAME_S #-x $DAEMON_S
ssd -K -p /var/lock/samba.d/$NAME_W.pid -n $NAME_W #-x $DAEMON_W
ssd -K -p /var/lock/samba.d/$NAME_N.pid -n $NAME_N #-x $DAEMON_N
ret=$?
echo "."
rm -f $SVIlock
;;
force-reload)
[ -e $SVIlock ] || exit 0
$0 restart
ret=$?
;;
reload)
echo -n "Reloading $SVIsubsys service configuration: "
# nmbd has no config file to reload
ssd -K --signal 1 -p /var/lock/samba.d/$NAME_N.pid -n $NAME_N #-x $DAEMON_N
ssd -K --signal 1 -p /var/lock/samba.d/$NAME_W.pid -n $NAME_W #-x $DAEMON_W
ssd -K --signal 1 -p /var/lock/samba.d/$NAME_S.pid -n $NAME_S #-x $DAEMON_S
ret=$?
echo "."
;;
restart)
$0 stop
$0 start
ret=$?
;;
status)
echo -n "Checking status of $SVIsubsys service: "
status /var/lock/samba.d/$NAME_N.pid
ret=$?
if [ $ret -eq 0 ]; then
echo -n "$NAME_N "
status /var/lock/samba.d/$NAME_S.pid
ret=$?
[ $ret -eq 0 ] && echo -n "$NAME_S"
fi
echo "."
;;
*)
echo "Usage: $SVIscript {start|stop|restart|force-reload|reload|status}"
ret=2
;;
esac
exit $ret
|