1*2d543d20SAndroid Build Coastguard Worker#!/bin/sh 2*2d543d20SAndroid Build Coastguard Worker# 3*2d543d20SAndroid Build Coastguard Worker# restorecond: Daemon used to maintain path file context 4*2d543d20SAndroid Build Coastguard Worker# 5*2d543d20SAndroid Build Coastguard Worker# chkconfig: - 12 87 6*2d543d20SAndroid Build Coastguard Worker# description: restorecond uses inotify to look for creation of new files \ 7*2d543d20SAndroid Build Coastguard Worker# listed in the /etc/selinux/restorecond.conf file, and restores the \ 8*2d543d20SAndroid Build Coastguard Worker# correct security context. 9*2d543d20SAndroid Build Coastguard Worker# 10*2d543d20SAndroid Build Coastguard Worker# processname: /usr/sbin/restorecond 11*2d543d20SAndroid Build Coastguard Worker# config: /etc/selinux/restorecond.conf 12*2d543d20SAndroid Build Coastguard Worker# pidfile: /run/restorecond.pid 13*2d543d20SAndroid Build Coastguard Worker# 14*2d543d20SAndroid Build Coastguard Worker# Return values according to LSB for all commands but status: 15*2d543d20SAndroid Build Coastguard Worker# 0 - success 16*2d543d20SAndroid Build Coastguard Worker# 1 - generic or unspecified error 17*2d543d20SAndroid Build Coastguard Worker# 2 - invalid or excess argument(s) 18*2d543d20SAndroid Build Coastguard Worker# 3 - unimplemented feature (e.g. "reload") 19*2d543d20SAndroid Build Coastguard Worker# 4 - insufficient privilege 20*2d543d20SAndroid Build Coastguard Worker# 5 - program is not installed 21*2d543d20SAndroid Build Coastguard Worker# 6 - program is not configured 22*2d543d20SAndroid Build Coastguard Worker# 7 - program is not running 23*2d543d20SAndroid Build Coastguard Worker 24*2d543d20SAndroid Build Coastguard WorkerPATH=/sbin:/bin:/usr/bin:/usr/sbin 25*2d543d20SAndroid Build Coastguard Worker 26*2d543d20SAndroid Build Coastguard Worker# Source function library. 27*2d543d20SAndroid Build Coastguard Worker. /etc/rc.d/init.d/functions 28*2d543d20SAndroid Build Coastguard Worker 29*2d543d20SAndroid Build Coastguard Worker[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled || exit 7 30*2d543d20SAndroid Build Coastguard Worker 31*2d543d20SAndroid Build Coastguard Worker# Check that we are root ... so non-root users stop here 32*2d543d20SAndroid Build Coastguard Workerif [ $EUID ]; then 33*2d543d20SAndroid Build Coastguard Worker test $EUID = 0 || exit 4 34*2d543d20SAndroid Build Coastguard Workerelse 35*2d543d20SAndroid Build Coastguard Worker test `id -u` = 0 || exit 4 36*2d543d20SAndroid Build Coastguard Workerfi 37*2d543d20SAndroid Build Coastguard Worker 38*2d543d20SAndroid Build Coastguard Workertest -x /usr/sbin/restorecond || exit 5 39*2d543d20SAndroid Build Coastguard Workertest -f /etc/selinux/restorecond.conf || exit 6 40*2d543d20SAndroid Build Coastguard Worker 41*2d543d20SAndroid Build Coastguard WorkerRETVAL=0 42*2d543d20SAndroid Build Coastguard Worker 43*2d543d20SAndroid Build Coastguard Workerstart() 44*2d543d20SAndroid Build Coastguard Worker{ 45*2d543d20SAndroid Build Coastguard Worker echo -n $"Starting restorecond: " 46*2d543d20SAndroid Build Coastguard Worker unset HOME MAIL USER USERNAME 47*2d543d20SAndroid Build Coastguard Worker daemon /usr/sbin/restorecond 48*2d543d20SAndroid Build Coastguard Worker RETVAL=$? 49*2d543d20SAndroid Build Coastguard Worker touch /var/lock/subsys/restorecond 50*2d543d20SAndroid Build Coastguard Worker echo 51*2d543d20SAndroid Build Coastguard Worker return $RETVAL 52*2d543d20SAndroid Build Coastguard Worker} 53*2d543d20SAndroid Build Coastguard Worker 54*2d543d20SAndroid Build Coastguard Workerstop() 55*2d543d20SAndroid Build Coastguard Worker{ 56*2d543d20SAndroid Build Coastguard Worker echo -n $"Shutting down restorecond: " 57*2d543d20SAndroid Build Coastguard Worker killproc restorecond 58*2d543d20SAndroid Build Coastguard Worker RETVAL=$? 59*2d543d20SAndroid Build Coastguard Worker rm -f /var/lock/subsys/restorecond 60*2d543d20SAndroid Build Coastguard Worker echo 61*2d543d20SAndroid Build Coastguard Worker return $RETVAL 62*2d543d20SAndroid Build Coastguard Worker} 63*2d543d20SAndroid Build Coastguard Worker 64*2d543d20SAndroid Build Coastguard Workerrestart() 65*2d543d20SAndroid Build Coastguard Worker{ 66*2d543d20SAndroid Build Coastguard Worker stop 67*2d543d20SAndroid Build Coastguard Worker start 68*2d543d20SAndroid Build Coastguard Worker} 69*2d543d20SAndroid Build Coastguard Worker 70*2d543d20SAndroid Build Coastguard Worker# See how we were called. 71*2d543d20SAndroid Build Coastguard Workercase "$1" in 72*2d543d20SAndroid Build Coastguard Worker start) 73*2d543d20SAndroid Build Coastguard Worker start 74*2d543d20SAndroid Build Coastguard Worker ;; 75*2d543d20SAndroid Build Coastguard Worker stop) 76*2d543d20SAndroid Build Coastguard Worker stop 77*2d543d20SAndroid Build Coastguard Worker ;; 78*2d543d20SAndroid Build Coastguard Worker status) 79*2d543d20SAndroid Build Coastguard Worker status restorecond 80*2d543d20SAndroid Build Coastguard Worker RETVAL=$? 81*2d543d20SAndroid Build Coastguard Worker ;; 82*2d543d20SAndroid Build Coastguard Worker force-reload|restart|reload) 83*2d543d20SAndroid Build Coastguard Worker restart 84*2d543d20SAndroid Build Coastguard Worker ;; 85*2d543d20SAndroid Build Coastguard Worker condrestart) 86*2d543d20SAndroid Build Coastguard Worker [ -e /var/lock/subsys/restorecond ] && restart || : 87*2d543d20SAndroid Build Coastguard Worker ;; 88*2d543d20SAndroid Build Coastguard Worker *) 89*2d543d20SAndroid Build Coastguard Worker echo $"Usage: $0 {start|stop|restart|force-reload|status|condrestart}" 90*2d543d20SAndroid Build Coastguard Worker RETVAL=3 91*2d543d20SAndroid Build Coastguard Workeresac 92*2d543d20SAndroid Build Coastguard Worker 93*2d543d20SAndroid Build Coastguard Workerexit $RETVAL 94