3 # Get a Kerbos authentication ticket for AFS for Bacula, then run
4 # the Bacula client. See AFS-README for documentation.
7 # AUTHOR Lucas Mingarro <lucas@easytech.com.ar>
8 # PURPOSE Run an AFS authenticated program.
9 # Get a PAG, get the user's token,
10 # then exec user's command
12 TEXTDOMAIN=initscripts
13 TEXTDOMAINDIR=/etc/locale
15 # Make sure umask is sane
18 # First set up a default search path.
19 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
21 # Get a sane screen width
22 [ -z "$COLUMNS" ] && COLUMNS=80
24 if [ -f /etc/sysconfig/i18n -a -z "$NOLOCALE" ] ; then
26 if [ "$LANG" = "ja_JP.eucJP" -a "`/sbin/consoletype`" != "pty" ]; then
33 # Read in our configuration
34 if [ -z "$BOOTUP" ]; then
35 if [ -f /etc/sysconfig/init ]; then
38 # This all seem confusing? Look in /etc/sysconfig/init,
39 # or in /usr/doc/initscripts-*/sysconfig.txt
42 MOVE_TO_COL="echo -en \\033[${RES_COL}G"
43 SETCOLOR_SUCCESS="echo -en \\033[1;32m"
44 SETCOLOR_FAILURE="echo -en \\033[1;31m"
45 SETCOLOR_WARNING="echo -en \\033[1;33m"
46 SETCOLOR_NORMAL="echo -en \\033[0;39m"
49 if [ -x /sbin/consoletype ]; then
50 if [ "`consoletype`" = "serial" ]; then
61 if [ "$BOOTUP" != "verbose" ]; then
67 # Check if $pid (could be plural) are running
70 [ -d /proc/$1 ] && return 0
77 # A function to start a program.
81 local base= user= nice= bg= pid
83 while [ "$1" != "${1##[-+]}" ]; do
85 '') echo $"$0: Usage: daemon [+/-nicelevel] {program}"
108 *) echo $"$0: Usage: daemon [+/-nicelevel] {program}"
114 [ -z $gotbase ] && base=${1##*/}
116 # See if it's already running. Look *only* at the pid file.
117 pidlist=`pidfileofproc $base`
119 [ -n "$pid" ] && return
121 # make sure it doesn't core dump anywhere; while this could mask
122 # problems with the daemon, it also closes some security problems
123 ulimit -S -c 0 >/dev/null 2>&1
126 [ "$BOOTUP" = "verbose" ] && echo -n " $base"
129 if [ -z "$user" ]; then
130 $nice initlog $INITLOG_ARGS -c "$*"
132 $nice initlog $INITLOG_ARGS -c "su - $user -c \"$*\"" &&
133 success $"$base startup" || failure $"$base startup"
135 [ $? = 0 ] && success $"$base startup" || failure $"$base startup"
139 # A function to find the pid of a program. Looks *only* at the pidfile
146 echo $"Usage: pidfileofproc {program}"
150 # First try "/var/run/*.pid" files
151 if [ -f /var/run/${base}.pid ] ; then
152 read pid < /var/run/${base}.pid
154 [ -z "${p//[0-9]/}" -a -d /proc/$p ] &&
157 if [ -n "$pid" ] ; then
165 [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
167 [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
169 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
176 [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
178 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
180 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
187 [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
189 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
191 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
197 # Log that something succeeded
199 if [ -z "$IN_INITLOG" ]; then
200 initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
202 # silly hack to avoid EPIPE killing rc.sysinit
204 echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
207 [ "$BOOTUP" != "verbose" ] && echo_success
211 # Log that something failed
214 if [ -z "$IN_INITLOG" ]; then
215 initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
218 echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 2" >&21
221 [ "$BOOTUP" != "verbose" ] && echo_failure
225 # Log that something passed, but may have had errors. Useful for fsck
228 if [ -z "$IN_INITLOG" ]; then
229 initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
232 echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
235 [ "$BOOTUP" != "verbose" ] && echo_passed
239 # Run some action. Log its output.
244 initlog $INITLOG_ARGS -c "$*" && success $"$STRING" || failure $"$STRING"
250 # returns OK if $1 contains $2
252 [ "$1" = "$2" ] && return 0
254 [ "$slice" = "$1" ] && return 1
258 # Confirm whether we really want to run this service
265 echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
267 if strstr "$YES" "$answer" || [ "$answer" = "" ] ; then
269 elif strstr "$CONT" "$answer" ; then
271 elif strstr "$NO" "$answer" ; then
277 # Here is the authentication with the kas server
281 passwordfile='/etc/security/afs_bacula.pw'
282 klog $PRINCIPAL -pipe < ${passwordfile}
284 command=`echo ${command_line} | awk '{print $1}'`
285 # Check if we can run the command.
286 # If we got this far, it is likely that the command name is correct
287 # but there may be a problem in accessing the command file.
288 # If there is an error, log it via syslog (logger) rather than ">&2"
290 #if [ ! -x "${command}" ]; then
291 #M="error: unable to execute command ${command}"
292 #logger -i -t "${CMD}" "${M}"