blob: 53b98ee3495293c900a0732e9004e1df3ce25810 [file] [log] [blame]
Alex Klyubin1fdee112013-09-13 15:59:04 -07001#
2# System Server aka system_server spawned by zygote.
3# Most of the framework services run in this process.
4#
Stephen Smalley1ff64412013-10-29 14:42:40 -04005type system_server, domain, mlstrustedsubject;
6permissive system_server;
7
8# Dalvik Compiler JIT Mapping.
9allow system_server self:process execmem;
10
11# Child of the zygote.
12allow system_server zygote:fd use;
13allow system_server zygote:process sigchld;
14allow system_server zygote_tmpfs:file read;
15
16# system server gets network and bluetooth permissions.
17net_domain(system_server)
18bluetooth_domain(system_server)
Alex Klyubin1fdee112013-09-13 15:59:04 -070019
Alex Klyubin1fdee112013-09-13 15:59:04 -070020# These are the capabilities assigned by the zygote to the
21# system server.
22allow system_server self:capability {
23 kill
24 net_admin
25 net_bind_service
26 net_broadcast
27 net_raw
28 sys_boot
29 sys_module
30 sys_nice
31 sys_resource
32 sys_time
33 sys_tty_config
34};
35
Stephen Smalley1ff64412013-10-29 14:42:40 -040036# Triggered by /proc/pid accesses, not allowed.
37dontaudit system_server self:capability sys_ptrace;
38
39# Trigger module auto-load.
40allow system_server kernel:system module_request;
41
42# Use netlink uevent sockets.
43allow system_server self:netlink_kobject_uevent_socket *;
44
45# Kill apps.
46allow system_server appdomain:process { sigkill signal };
47
48# Set scheduling info for apps.
49allow system_server appdomain:process { getsched setsched };
50allow system_server mediaserver:process { getsched setsched };
51
52# Read /proc data for apps.
53allow system_server appdomain:dir r_dir_perms;
54allow system_server appdomain:{ file lnk_file } rw_file_perms;
55
56# Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
57allow system_server qtaguid_proc:file rw_file_perms;
58allow system_server qtaguid_device:chr_file rw_file_perms;
59
60# Read /sys/kernel/debug/wakeup_sources.
61allow system_server debugfs:file r_file_perms;
62
63# WifiWatchdog uses a packet_socket
64allow system_server self:packet_socket *;
65
66# 3rd party VPN clients require a tun_socket to be created
67allow system_server self:tun_socket create;
68
69# Notify init of death.
70allow system_server init:process sigchld;
71
72# Talk to init and various daemons via sockets.
73unix_socket_connect(system_server, property, init)
74unix_socket_connect(system_server, qemud, qemud)
75unix_socket_connect(system_server, installd, installd)
76unix_socket_connect(system_server, netd, netd)
77unix_socket_connect(system_server, vold, vold)
78unix_socket_connect(system_server, zygote, zygote)
79unix_socket_connect(system_server, keystore, keystore)
80unix_socket_connect(system_server, gps, gpsd)
81unix_socket_connect(system_server, racoon, racoon)
82unix_socket_send(system_server, wpa, wpa)
83
84# Communicate over a socket created by surfaceflinger.
85allow system_server surfaceflinger:unix_stream_socket { read write setopt };
86
87# Perform Binder IPC.
88tmpfs_domain(system_server)
89binder_use(system_server)
90binder_call(system_server, binderservicedomain)
91binder_call(system_server, appdomain)
92binder_service(system_server)
93
94# Read /proc/pid files for Binder clients.
95r_dir_file(system_server, appdomain)
96r_dir_file(system_server, mediaserver)
97allow system_server appdomain:process getattr;
98allow system_server mediaserver:process getattr;
99
100# Check SELinux permissions.
101selinux_check_access(system_server)
102
103# XXX Label sysfs files with a specific type?
104allow system_server sysfs:file rw_file_perms;
105allow system_server sysfs_nfc_power_writable:file rw_file_perms;
106
107# Access devices.
108allow system_server device:dir r_dir_perms;
109allow system_server mdns_socket:sock_file rw_file_perms;
110allow system_server alarm_device:chr_file rw_file_perms;
111allow system_server graphics_device:dir search;
112allow system_server graphics_device:chr_file rw_file_perms;
113allow system_server iio_device:chr_file rw_file_perms;
114allow system_server input_device:dir r_dir_perms;
115allow system_server input_device:chr_file rw_file_perms;
116allow system_server tty_device:chr_file rw_file_perms;
117allow system_server urandom_device:chr_file rw_file_perms;
118allow system_server usbaccessory_device:chr_file rw_file_perms;
119allow system_server video_device:chr_file rw_file_perms;
120allow system_server qemu_device:chr_file rw_file_perms;
121allow system_server adbd_socket:sock_file rw_file_perms;
122
123# tun device used for 3rd party vpn apps
124allow system_server tun_device:chr_file rw_file_perms;
125
126# Manage data files.
127allow system_server data_file_type:dir create_dir_perms;
128allow system_server data_file_type:notdevfile_class_set create_file_perms;
129
130# Read /file_contexts and /data/security/file_contexts
131security_access_policy(system_server)
132
133# Relabel apk files.
134relabelto_domain(system_server)
135allow system_server { apk_tmp_file apk_private_tmp_file }:file { relabelfrom relabelto };
136allow system_server { apk_data_file apk_private_data_file }:file { relabelfrom relabelto };
137
138# Relabel wallpaper.
139allow system_server system_data_file:file relabelfrom;
140allow system_server wallpaper_file:file relabelto;
141allow system_server wallpaper_file:file rw_file_perms;
142
143# Relabel /data/anr.
144allow system_server system_data_file:dir relabelfrom;
145allow system_server anr_data_file:dir relabelto;
146
147# Property Service write
148allow system_server system_prop:property_service set;
149allow system_server radio_prop:property_service set;
Nick Kralevichdd1ec6d2013-11-01 10:45:03 -0700150allow system_server debug_prop:property_service set;
Nick Kralevichcd95e0a2013-11-01 12:16:36 -0700151allow system_server powerctl_prop:property_service set;
Stephen Smalley1ff64412013-10-29 14:42:40 -0400152
153# ctl interface
154allow system_server ctl_default_prop:property_service set;
155
Alex Klyubin1fdee112013-09-13 15:59:04 -0700156# Create a socket for receiving info from wpa.
157type_transition system_server wifi_data_file:sock_file system_wpa_socket;
Stephen Smalley45ba6652013-09-27 10:24:49 -0400158allow system_server system_wpa_socket:sock_file create_file_perms;
159
160# Create a socket for connections from debuggerd.
161type_transition system_server system_data_file:sock_file system_ndebug_socket "ndebugsocket";
162allow system_server system_ndebug_socket:sock_file create_file_perms;
163
Stephen Smalley1ff64412013-10-29 14:42:40 -0400164# Specify any arguments to zygote.
Alex Klyubin1fdee112013-09-13 15:59:04 -0700165allow system_server self:zygote { specifyids specifyrlimits specifyseinfo };
166
Stephen Smalley1ff64412013-10-29 14:42:40 -0400167# Manage cache files.
168allow system_server cache_file:dir { relabelfrom create_dir_perms };
169allow system_server cache_file:file { relabelfrom create_file_perms };
170
171# Run system programs, e.g. dexopt.
172allow system_server system_file:file x_file_perms;
173
174# Allow reading of /proc/pid data for other domains.
175# XXX dontaudit candidate
176allow system_server domain:dir r_dir_perms;
177allow system_server domain:file r_file_perms;
178
179# LocationManager(e.g, GPS) needs to read and write
180# to uart driver and ctrl proc entry
181allow system_server gps_device:chr_file rw_file_perms;
182allow system_server gps_control:file rw_file_perms;
183
184# Allow system_server to use app-created sockets.
185allow system_server appdomain:{ tcp_socket udp_socket } { setopt read write };
186
187# Allow abstract socket connection
188allow system_server rild:unix_stream_socket connectto;
189
190# connect to vpn tunnel
191allow system_server mtp:unix_stream_socket { connectto };
192
193# BackupManagerService lets PMS create a data backup file
194allow system_server cache_backup_file:file create_file_perms;
195# Relabel /data/backup
196allow system_server backup_data_file:dir { relabelto relabelfrom };
197# Relabel /cache/.*\.{data|restore}
198allow system_server cache_backup_file:file { relabelto relabelfrom };
199# LocalTransport creates and relabels /cache/backup
200allow system_server cache_backup_file:dir { relabelto relabelfrom create_dir_perms };
201
202# Allow system to talk to usb device
203allow system_server usb_device:chr_file rw_file_perms;
204allow system_server usb_device:dir r_dir_perms;
205
206# Allow system to talk to sensors
207allow system_server sensors_device:chr_file rw_file_perms;
208
Alex Klyubin8d688312013-10-03 13:35:56 -0700209# Read from HW RNG (needed by EntropyMixer).
210allow system_server hw_random_device:chr_file r_file_perms;
211
William Robertsec7d39b2013-09-28 18:46:21 -0400212# Access to wake locks
213allow system_server sysfs_wake_lock:file rw_file_perms;