summaryrefslogtreecommitdiffstats
path: root/packaging/Caldera/OpenLinux/winbind.init
blob: 96a3026d83640312ca671552d2a2ddb944598000 (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
#!/bin/bash
#
#
### BEGIN INIT INFO
# Provides: $winbind
# Required-Start: $network $samba
# 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_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_W ] || exit 5
  SVIemptyConfig $config_file && exit 6

  echo -n "Starting $SVIsubsys services: "
  WinbdConfig $config_file || ssd -S -n $NAME_W -x $DAEMON_W -- $OPTIONS_WINBD
  ret=$?

  echo  "."
  touch $SVIlock
  ;;

 stop)
  [ -e $SVIlock ] || exit 0

  echo -n "Stopping $SVIsubsys services: "
  ssd -K -p /var/lock/samba.d/$NAME_W.pid -n $NAME_W #-x $DAEMON_W

  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_W.pid -n $NAME_W #-x $DAEMON_W
  ret=$?
  echo  "."
  ;;

 restart)
  $0 stop
  $0 start
  ret=$?
  ;;

 status)
  echo -n "Checking status of $SVIsubsys service: "
  status /var/lock/samba.d/$NAME_W.pid
  ret=$?
  if [ $ret -eq 0 ]; then
    echo -n "$NAME_W "
  fi
  echo "."
  ;;

 *)
  echo "Usage: $SVIscript {start|stop|restart|force-reload|reload|status}"
  ret=2
  ;;

esac

exit $ret