From c195ec31485766d065d3e3101268d5ce727ff4c0 Mon Sep 17 00:00:00 2001 From: William Roberts <w.roberts@sta.samsung.com> Date: Wed, 6 Mar 2013 16:26:36 -0800 Subject: [PATCH] Split internal and external sdcards Two new types are introduced: sdcard_internal sdcard_external The existing type of sdcard, is dropped and a new attribute sdcard_type is introduced. The boolean app_sdcard_rw has also been changed to allow for controlling untrusted_app domain to use the internal and external sdcards. Change-Id: Ic7252a8e1703a43cb496413809d01cc6cacba8f5 --- app.te | 20 +++++++++++++------- attributes | 3 +++ drmserver.te | 2 +- file.te | 3 ++- genfs_contexts | 4 ++-- mediaserver.te | 4 ++-- rild.te | 2 +- sdcardd.te | 2 +- shell.te | 4 ++-- system.te | 2 +- vold.te | 6 +++--- zygote.te | 2 +- 12 files changed, 32 insertions(+), 22 deletions(-) diff --git a/app.te b/app.te index de7b7d05d..cb8091b64 100644 --- a/app.te +++ b/app.te @@ -89,8 +89,8 @@ net_domain(browser_app) allow platformappdomain platform_app_data_file:dir create_dir_perms; allow platformappdomain platform_app_data_file:notdevfile_class_set create_file_perms; # App sdcard file accesses -allow platformappdomain sdcard:dir create_dir_perms; -allow platformappdomain sdcard:file create_file_perms; +allow platformappdomain sdcard_type:dir create_dir_perms; +allow platformappdomain sdcard_type:file create_file_perms; # System data file accesses (e.g, shared objects from the lib directory) allow platformappdomain system_data_file:file { execute open }; @@ -119,11 +119,17 @@ if (app_bluetooth or android_cts) { # No specific SELinux class for bluetooth sockets presently. allow untrusted_app self:socket *; } -# SDCard rw access. -bool app_sdcard_rw true; -if (app_sdcard_rw) { -allow untrusted_app sdcard:dir create_dir_perms; -allow untrusted_app sdcard:file create_file_perms; +# Internal SDCard rw access. +bool app_internal_sdcard_rw true; +if (app_internal_sdcard_rw) { +allow untrusted_app sdcard_internal:dir create_dir_perms; +allow untrusted_app sdcard_internal:file create_file_perms; +} +# External SDCard rw access. +bool app_external_sdcard_rw true; +if (app_external_sdcard_rw) { +allow untrusted_app sdcard_external:dir create_dir_perms; +allow untrusted_app sdcard_external:file create_file_perms; } # Native app support. bool app_ndk false; diff --git a/attributes b/attributes index ef4a1708e..7d491e2d4 100644 --- a/attributes +++ b/attributes @@ -24,6 +24,9 @@ attribute data_file_type; # All types use for sysfs files. attribute sysfs_type; +# Attribute used for all sdcards +attribute sdcard_type; + # All types used for nodes/hosts. attribute node_type; diff --git a/drmserver.te b/drmserver.te index 63286d558..dcf3cc952 100644 --- a/drmserver.te +++ b/drmserver.te @@ -14,7 +14,7 @@ binder_service(drmserver) # Perform Binder IPC to mediaserver binder_call(drmserver, mediaserver) -allow drmserver sdcard:dir search; +allow drmserver sdcard_type:dir search; allow drmserver drm_data_file:dir create_dir_perms; allow drmserver drm_data_file:file create_file_perms; allow drmserver self:{ tcp_socket udp_socket } *; diff --git a/file.te b/file.te index 484b8fe74..65788df5b 100644 --- a/file.te +++ b/file.te @@ -16,7 +16,8 @@ type devpts, fs_type, mlstrustedobject; type tmpfs, fs_type; type shm, fs_type; type mqueue, fs_type; -type sdcard, fs_type, mlstrustedobject; +type sdcard_internal, sdcard_type, fs_type, mlstrustedobject; +type sdcard_external, sdcard_type, fs_type, mlstrustedobject; type debugfs, fs_type, mlstrustedobject; # File types diff --git a/genfs_contexts b/genfs_contexts index ff633a76b..2607b9dab 100644 --- a/genfs_contexts +++ b/genfs_contexts @@ -9,6 +9,6 @@ genfscon cgroup / u:object_r:cgroup:s0 # sysfs labels can be set by userspace. genfscon sysfs / u:object_r:sysfs:s0 genfscon inotifyfs / u:object_r:inotify:s0 -genfscon vfat / u:object_r:sdcard:s0 +genfscon vfat / u:object_r:sdcard_external:s0 genfscon debugfs / u:object_r:debugfs:s0 -genfscon fuse / u:object_r:sdcard:s0 +genfscon fuse / u:object_r:sdcard_internal:s0 diff --git a/mediaserver.te b/mediaserver.te index f941c6a63..0696331cd 100644 --- a/mediaserver.te +++ b/mediaserver.te @@ -8,7 +8,7 @@ net_domain(mediaserver) init_daemon_domain(mediaserver) unix_socket_connect(mediaserver, property, init) -r_dir_file(mediaserver, sdcard) +r_dir_file(mediaserver, sdcard_type) binder_use(mediaserver) binder_call(mediaserver, binderservicedomain) @@ -18,7 +18,7 @@ binder_service(mediaserver) allow mediaserver kernel:system module_request; allow mediaserver app_data_file:dir search; allow mediaserver app_data_file:file r_file_perms; -allow mediaserver sdcard:file write; +allow mediaserver sdcard_type:file write; allow mediaserver camera_device:chr_file rw_file_perms; allow mediaserver graphics_device:chr_file rw_file_perms; allow mediaserver video_device:chr_file rw_file_perms; diff --git a/rild.te b/rild.te index 917634807..c331bb327 100644 --- a/rild.te +++ b/rild.te @@ -23,7 +23,7 @@ allow rild bluetooth_efs_file:dir r_dir_perms; allow rild radio_data_file:dir r_dir_perms; allow rild radio_data_file:file rw_file_perms; allow rild radio_device:lnk_file r_file_perms; -allow rild sdcard:dir r_dir_perms; +allow rild sdcard_type:dir r_dir_perms; allow rild system_data_file:dir create_dir_perms; allow rild system_data_file:file create_file_perms; allow rild system_file:file x_file_perms; diff --git a/sdcardd.te b/sdcardd.te index 1281ae4fe..4445183a0 100644 --- a/sdcardd.te +++ b/sdcardd.te @@ -6,7 +6,7 @@ init_daemon_domain(sdcardd) allow sdcardd cgroup:dir create_dir_perms; allow sdcardd fuse_device:chr_file rw_file_perms; allow sdcardd rootfs:dir mounton; -allow sdcardd sdcard:filesystem mount; +allow sdcardd sdcard_type:filesystem mount; allow sdcardd self:capability { setuid setgid dac_override sys_admin }; allow sdcardd system_data_file:dir create_dir_perms; allow sdcardd system_data_file:file create_file_perms; diff --git a/shell.te b/shell.te index 5b4d843e2..bf9ee44a5 100644 --- a/shell.te +++ b/shell.te @@ -13,8 +13,8 @@ allow shell shell_data_file:file create_file_perms; allow shell shell_data_file:file rx_file_perms; # Access sdcard. -allow shell sdcard:dir rw_dir_perms; -allow shell sdcard:file create_file_perms; +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; diff --git a/system.te b/system.te index a87251659..62240feb9 100644 --- a/system.te +++ b/system.te @@ -28,7 +28,7 @@ selinux_getenforce(system) selinux_getenforce(system_app) # Settings app reads sdcard for storage stats -allow system_app sdcard:dir r_dir_perms; +allow system_app sdcard_type:dir r_dir_perms; bool manage_selinux true; if (manage_selinux) { diff --git a/vold.te b/vold.te index 60d6a3729..c1b905503 100644 --- a/vold.te +++ b/vold.te @@ -10,9 +10,9 @@ allow vold block_device:blk_file create_file_perms; allow vold block_device:lnk_file read; allow vold devpts:chr_file rw_file_perms; allow vold rootfs:dir mounton; -allow vold sdcard:dir mounton; -allow vold sdcard:filesystem { mount remount unmount }; -allow vold sdcard:dir create_dir_perms; +allow vold sdcard_type:dir mounton; +allow vold sdcard_type:filesystem { mount remount unmount }; +allow vold sdcard_type:dir create_dir_perms; allow vold tmpfs:filesystem { mount unmount }; allow vold tmpfs:dir create_dir_perms; allow vold tmpfs:dir mounton; diff --git a/zygote.te b/zygote.te index 743af36d4..24e4189e0 100644 --- a/zygote.te +++ b/zygote.te @@ -33,7 +33,7 @@ allow zygote rootfs:file r_file_perms; # Setting up /storage/emulated. allow zygote rootfs:dir mounton; -allow zygote sdcard:dir { write search setattr create add_name mounton }; +allow zygote sdcard_type:dir { write search setattr create add_name mounton }; dontaudit zygote self:capability fsetid; allow zygote tmpfs:dir { write create add_name setattr mounton }; allow zygote tmpfs:filesystem mount; -- GitLab