type shell, domain, mlstrustedsubject; type shell_exec, file_type; domain_auto_trans(init, shell_exec, shell) allow shell rootfs:dir r_dir_perms; allow shell devpts:chr_file rw_file_perms; allow shell tty_device:chr_file rw_file_perms; allow shell console_device:chr_file rw_file_perms; allow shell input_device:chr_file rw_file_perms; allow shell system_file:file x_file_perms; allow shell shell_exec:file rx_file_perms; allow shell zygote_exec:file rx_file_perms; allow shell shell_data_file:dir create_dir_perms; allow shell shell_data_file:file create_file_perms; allow shell shell_data_file:file rx_file_perms; # Access sdcard. allow shell sdcard_type:dir rw_dir_perms; allow shell sdcard_type:file create_file_perms; r_dir_file(shell, apk_data_file) allow shell dalvikcache_data_file:file { write setattr }; # Run logcat. allow shell log_device:chr_file r_file_perms; # Run app_process. # XXX Split into its own domain? app_domain(shell) # Property Service allow shell shell_prop:property_service set; # setprop toolbox command unix_socket_connect(shell, property, init) # ctl interface allow shell ctl_dumpstate_prop:property_service set;