type copy_efs_files_to_data, domain; type copy_efs_files_to_data_exec, exec_type, vendor_file_type, file_type; init_daemon_domain(copy_efs_files_to_data); # Allow creating files on /data/vendor/copied allow copy_efs_files_to_data modem_efs_image_file:dir { create_dir_perms }; allow copy_efs_files_to_data modem_efs_image_file:file { create_file_perms }; allow copy_efs_files_to_data modem_efs_image_file:lnk_file { create_file_perms }; # Allow execute binaries from /vendor/bin allow copy_efs_files_to_data vendor_toolbox_exec:file rx_file_perms; allow copy_efs_files_to_data vendor_shell_exec:file rx_file_perms; # Allow execute /vendor/bin/dump.f2fs allow copy_efs_files_to_data vendor_file:file { getattr execute_no_trans }; # Allow execute dump.f2fs to dump files from /dev/block/by-name/efs allow copy_efs_files_to_data block_device:dir search; allow copy_efs_files_to_data efs_block_device:blk_file r_file_perms; allow copy_efs_files_to_data modem_userdata_block_device:blk_file r_file_perms; allow copy_efs_files_to_data persist_block_device:blk_file r_file_perms; # Allow checking if /data/vendor/copied/[efs/efs_backup/persist] exist allow copy_efs_files_to_data modem_efs_file:dir getattr; allow copy_efs_files_to_data modem_userdata_file:dir getattr; allow copy_efs_files_to_data persist_file:dir getattr; allow copy_efs_files_to_data sysfs_scsi_devices_0000:dir r_dir_perms; allow copy_efs_files_to_data sysfs_scsi_devices_0000:file r_file_perms; # dump.f2fs need to restore file permissions after dumping # files from an f2fs image allow copy_efs_files_to_data self:capability chown; allow copy_efs_files_to_data self:capability fowner; allow copy_efs_files_to_data kmsg_debug_device:chr_file { w_file_perms ioctl getattr }; # Should not write to any block devices. Only read from block device # and dump files to /data/vendor/copied dontaudit copy_efs_files_to_data dev_type:blk_file write; # Setting xattr requires sys_admin dontaudit copy_efs_files_to_data self:capability sys_admin; # dump.f2fs would attempt to restore selinux on dumped files, but we # will use restorecon to do the job. dontaudit copy_efs_files_to_data modem_efs_image_file:dir relabelfrom; dontaudit copy_efs_files_to_data modem_efs_image_file:file relabelfrom; dontaudit copy_efs_files_to_data modem_efs_file:dir relabelto; dontaudit copy_efs_files_to_data modem_efs_file:file relabelto; dontaudit copy_efs_files_to_data modem_userdata_file:dir relabelto; dontaudit copy_efs_files_to_data modem_userdata_file:file relabelto; dontaudit copy_efs_files_to_data vendor_persist_type:dir relabelto; dontaudit copy_efs_files_to_data vendor_persist_type:file relabelto;