xref: /aosp_15_r20/external/selinux/restorecond/restorecond.init (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
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