1*e4a36f41SAndroid Build Coastguard Workertypeattribute init coredomain; 2*e4a36f41SAndroid Build Coastguard Worker 3*e4a36f41SAndroid Build Coastguard Workertmpfs_domain(init) 4*e4a36f41SAndroid Build Coastguard Worker 5*e4a36f41SAndroid Build Coastguard Worker# Transitions to seclabel processes in init.rc 6*e4a36f41SAndroid Build Coastguard Workerdomain_trans(init, rootfs, slideshow) 7*e4a36f41SAndroid Build Coastguard Workerdomain_auto_trans(init, charger_exec, charger) 8*e4a36f41SAndroid Build Coastguard Workerdomain_auto_trans(init, e2fs_exec, e2fs) 9*e4a36f41SAndroid Build Coastguard Workerdomain_auto_trans(init, bpfloader_exec, bpfloader) 10*e4a36f41SAndroid Build Coastguard Worker 11*e4a36f41SAndroid Build Coastguard Workerrecovery_only(` 12*e4a36f41SAndroid Build Coastguard Worker # Files in recovery image are labeled as rootfs. 13*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, adbd) 14*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, hal_bootctl_server) 15*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, charger) 16*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, fastbootd) 17*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, hal_fastboot_server) 18*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, hal_health_server) 19*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, recovery) 20*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, linkerconfig) 21*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, servicemanager) 22*e4a36f41SAndroid Build Coastguard Worker domain_trans(init, rootfs, snapuserd) 23*e4a36f41SAndroid Build Coastguard Worker') 24*e4a36f41SAndroid Build Coastguard Workerdomain_trans(init, shell_exec, shell) 25*e4a36f41SAndroid Build Coastguard Workerdomain_trans(init, init_exec, ueventd) 26*e4a36f41SAndroid Build Coastguard Workerdomain_trans(init, init_exec, vendor_init) 27*e4a36f41SAndroid Build Coastguard Workerdomain_trans(init, { rootfs toolbox_exec }, modprobe) 28*e4a36f41SAndroid Build Coastguard Workeruserdebug_or_eng(` 29*e4a36f41SAndroid Build Coastguard Worker # case where logpersistd is actually logcat -f in logd context (nee: logcatd) 30*e4a36f41SAndroid Build Coastguard Worker domain_auto_trans(init, logcat_exec, logpersist) 31*e4a36f41SAndroid Build Coastguard Worker 32*e4a36f41SAndroid Build Coastguard Worker # allow init to execute services marked with seclabel u:r:su:s0 in userdebug/eng 33*e4a36f41SAndroid Build Coastguard Worker allow init su:process transition; 34*e4a36f41SAndroid Build Coastguard Worker dontaudit init su:process noatsecure; 35*e4a36f41SAndroid Build Coastguard Worker allow init su:process { siginh rlimitinh }; 36*e4a36f41SAndroid Build Coastguard Worker') 37*e4a36f41SAndroid Build Coastguard Worker 38*e4a36f41SAndroid Build Coastguard Worker# Allow init to figure out name of dm-device from it's /dev/block/dm-XX path. 39*e4a36f41SAndroid Build Coastguard Worker# This is useful in case of remounting ext4 userdata into checkpointing mode, 40*e4a36f41SAndroid Build Coastguard Worker# since it potentially requires tearing down dm-devices (e.g. dm-bow, dm-crypto) 41*e4a36f41SAndroid Build Coastguard Worker# that userdata is mounted onto. 42*e4a36f41SAndroid Build Coastguard Workerallow init sysfs_dm:file read; 43*e4a36f41SAndroid Build Coastguard Worker 44*e4a36f41SAndroid Build Coastguard Worker# Allow init to modify the properties of loop devices. 45*e4a36f41SAndroid Build Coastguard Workerallow init sysfs_loop:dir r_dir_perms; 46*e4a36f41SAndroid Build Coastguard Workerallow init sysfs_loop:file rw_file_perms; 47*e4a36f41SAndroid Build Coastguard Worker 48*e4a36f41SAndroid Build Coastguard Worker# Allow init to examine the properties of block devices. 49*e4a36f41SAndroid Build Coastguard Workerallow init sysfs_type:file { getattr read }; 50*e4a36f41SAndroid Build Coastguard Worker# Allow init get the attributes of block devices in /dev/block. 51*e4a36f41SAndroid Build Coastguard Workerallow init dev_type:dir r_dir_perms; 52*e4a36f41SAndroid Build Coastguard Workerallow init dev_type:blk_file getattr; 53*e4a36f41SAndroid Build Coastguard Worker 54*e4a36f41SAndroid Build Coastguard Worker# Allow init to write to the drop_caches file. 55*e4a36f41SAndroid Build Coastguard Workerallow init proc_drop_caches:file rw_file_perms; 56*e4a36f41SAndroid Build Coastguard Worker 57*e4a36f41SAndroid Build Coastguard Worker# Allow the BoringSSL self test to request a reboot upon failure 58*e4a36f41SAndroid Build Coastguard Workerset_prop(init, powerctl_prop) 59*e4a36f41SAndroid Build Coastguard Worker 60*e4a36f41SAndroid Build Coastguard Worker# Only init is allowed to set userspace reboot related properties. 61*e4a36f41SAndroid Build Coastguard Workerset_prop(init, userspace_reboot_exported_prop) 62*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } userspace_reboot_exported_prop:property_service set; 63*e4a36f41SAndroid Build Coastguard Worker 64*e4a36f41SAndroid Build Coastguard Worker# Second-stage init performs a test for whether the kernel has SELinux hooks 65*e4a36f41SAndroid Build Coastguard Worker# for the perf_event_open() syscall. This is done by testing for the syscall 66*e4a36f41SAndroid Build Coastguard Worker# outcomes corresponding to this policy. 67*e4a36f41SAndroid Build Coastguard Worker# TODO(b/137092007): this can be removed once the platform stops supporting 68*e4a36f41SAndroid Build Coastguard Worker# kernels that precede the perf_event_open hooks (Android common kernels 4.4 69*e4a36f41SAndroid Build Coastguard Worker# and 4.9). 70*e4a36f41SAndroid Build Coastguard Workerallow init self:perf_event { open cpu }; 71*e4a36f41SAndroid Build Coastguard Workerallow init self:global_capability2_class_set perfmon; 72*e4a36f41SAndroid Build Coastguard Workerneverallow init self:perf_event { kernel tracepoint read write }; 73*e4a36f41SAndroid Build Coastguard Workerdontaudit init self:perf_event { kernel tracepoint read write }; 74*e4a36f41SAndroid Build Coastguard Worker 75*e4a36f41SAndroid Build Coastguard Worker# Allow init to communicate with snapuserd to transition Virtual A/B devices 76*e4a36f41SAndroid Build Coastguard Worker# from the first-stage daemon to the second-stage. 77*e4a36f41SAndroid Build Coastguard Workerallow init snapuserd_socket:sock_file write; 78*e4a36f41SAndroid Build Coastguard Workerallow init snapuserd:unix_stream_socket connectto; 79*e4a36f41SAndroid Build Coastguard Worker# Allow for libsnapshot's use of flock() on /metadata/ota. 80*e4a36f41SAndroid Build Coastguard Workerallow init ota_metadata_file:dir lock; 81*e4a36f41SAndroid Build Coastguard Worker 82*e4a36f41SAndroid Build Coastguard Worker# Allow init to restore contexts of vd_device(/dev/block/vd[..]) when labeling 83*e4a36f41SAndroid Build Coastguard Worker# /dev/block. 84*e4a36f41SAndroid Build Coastguard Workerallow init vd_device:blk_file relabelto; 85*e4a36f41SAndroid Build Coastguard Worker 86*e4a36f41SAndroid Build Coastguard Worker# Only init is allowed to set the sysprop indicating whether perf_event_open() 87*e4a36f41SAndroid Build Coastguard Worker# SELinux hooks were detected. 88*e4a36f41SAndroid Build Coastguard Workerset_prop(init, init_perf_lsm_hooks_prop) 89*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } init_perf_lsm_hooks_prop:property_service set; 90*e4a36f41SAndroid Build Coastguard Worker 91*e4a36f41SAndroid Build Coastguard Worker# Only init can write vts.native_server.on 92*e4a36f41SAndroid Build Coastguard Workerset_prop(init, vts_status_prop) 93*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } vts_status_prop:property_service set; 94*e4a36f41SAndroid Build Coastguard Worker 95*e4a36f41SAndroid Build Coastguard Worker# Only init can write normal ro.boot. properties 96*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } bootloader_prop:property_service set; 97*e4a36f41SAndroid Build Coastguard Worker 98*e4a36f41SAndroid Build Coastguard Worker# Only init can write hal.instrumentation.enable 99*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } hal_instrumentation_prop:property_service set; 100*e4a36f41SAndroid Build Coastguard Worker 101*e4a36f41SAndroid Build Coastguard Worker# Only init can write ro.property_service.version 102*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } property_service_version_prop:property_service set; 103*e4a36f41SAndroid Build Coastguard Worker 104*e4a36f41SAndroid Build Coastguard Worker# Only init can set keystore.boot_level 105*e4a36f41SAndroid Build Coastguard Workerneverallow { domain -init } keystore_listen_prop:property_service set; 106*e4a36f41SAndroid Build Coastguard Worker 107*e4a36f41SAndroid Build Coastguard Worker# Allow accessing /sys/kernel/tracing/instances/bootreceiver to set up tracing. 108*e4a36f41SAndroid Build Coastguard Workerallow init debugfs_bootreceiver_tracing:file w_file_perms; 109*e4a36f41SAndroid Build Coastguard Worker 110*e4a36f41SAndroid Build Coastguard Worker# PRNG seeder daemon socket is created and listened on by init before forking. 111*e4a36f41SAndroid Build Coastguard Workerallow init prng_seeder:unix_stream_socket { create bind listen }; 112*e4a36f41SAndroid Build Coastguard Worker 113*e4a36f41SAndroid Build Coastguard Worker# Devices with kernels where CONFIG_HIST_TRIGGERS isn't enabled will 114*e4a36f41SAndroid Build Coastguard Worker# attempt to write a non exisiting 'synthetic_events' file, when setting 115*e4a36f41SAndroid Build Coastguard Worker# up synthetic events. This is a no-op in tracefs. 116*e4a36f41SAndroid Build Coastguard Workerdontaudit init debugfs_tracing_debug:dir { write add_name }; 117*e4a36f41SAndroid Build Coastguard Worker 118*e4a36f41SAndroid Build Coastguard Worker# chown/chmod on devices. 119*e4a36f41SAndroid Build Coastguard Workerallow init { 120*e4a36f41SAndroid Build Coastguard Worker dev_type 121*e4a36f41SAndroid Build Coastguard Worker -hw_random_device 122*e4a36f41SAndroid Build Coastguard Worker -keychord_device 123*e4a36f41SAndroid Build Coastguard Worker -vm_manager_device_type 124*e4a36f41SAndroid Build Coastguard Worker -port_device 125*e4a36f41SAndroid Build Coastguard Worker}:chr_file setattr; 126