blob: 4c73627eeca67e3de6209c4a15e59a610d072757 [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
Stephen Smalley527316a2013-12-23 14:48:02 -050011# For art.
12allow system_server dalvikcache_data_file:file execute;
13
Stephen Smalley1ff64412013-10-29 14:42:40 -040014# Child of the zygote.
15allow system_server zygote:fd use;
16allow system_server zygote:process sigchld;
17allow system_server zygote_tmpfs:file read;
18
Nick Kralevichc4d7c0d2013-12-17 12:21:17 -080019# Needed to close the zygote socket, which involves getopt / getattr
20# This should be deleted after b/12061011 is fixed
21allow system_server zygote:unix_stream_socket { getopt getattr };
22
Stephen Smalley1ff64412013-10-29 14:42:40 -040023# system server gets network and bluetooth permissions.
24net_domain(system_server)
25bluetooth_domain(system_server)
Alex Klyubin1fdee112013-09-13 15:59:04 -070026
Alex Klyubin1fdee112013-09-13 15:59:04 -070027# These are the capabilities assigned by the zygote to the
28# system server.
29allow system_server self:capability {
30 kill
31 net_admin
32 net_bind_service
33 net_broadcast
34 net_raw
35 sys_boot
36 sys_module
37 sys_nice
38 sys_resource
39 sys_time
40 sys_tty_config
41};
42
Nick Kralevich13e44ec2013-12-19 10:53:36 -080043allow system_server self:capability2 block_suspend;
44
Stephen Smalley1ff64412013-10-29 14:42:40 -040045# Triggered by /proc/pid accesses, not allowed.
46dontaudit system_server self:capability sys_ptrace;
47
48# Trigger module auto-load.
49allow system_server kernel:system module_request;
50
51# Use netlink uevent sockets.
52allow system_server self:netlink_kobject_uevent_socket *;
53
54# Kill apps.
55allow system_server appdomain:process { sigkill signal };
56
57# Set scheduling info for apps.
58allow system_server appdomain:process { getsched setsched };
59allow system_server mediaserver:process { getsched setsched };
60
61# Read /proc data for apps.
62allow system_server appdomain:dir r_dir_perms;
63allow system_server appdomain:{ file lnk_file } rw_file_perms;
64
65# Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
66allow system_server qtaguid_proc:file rw_file_perms;
67allow system_server qtaguid_device:chr_file rw_file_perms;
68
69# Read /sys/kernel/debug/wakeup_sources.
70allow system_server debugfs:file r_file_perms;
71
72# WifiWatchdog uses a packet_socket
73allow system_server self:packet_socket *;
74
75# 3rd party VPN clients require a tun_socket to be created
76allow system_server self:tun_socket create;
77
78# Notify init of death.
79allow system_server init:process sigchld;
80
81# Talk to init and various daemons via sockets.
82unix_socket_connect(system_server, property, init)
83unix_socket_connect(system_server, qemud, qemud)
84unix_socket_connect(system_server, installd, installd)
Nick Kralevich2b392fc2013-12-05 16:55:34 -080085unix_socket_connect(system_server, lmkd, lmkd)
Stephen Smalley1ff64412013-10-29 14:42:40 -040086unix_socket_connect(system_server, netd, netd)
87unix_socket_connect(system_server, vold, vold)
88unix_socket_connect(system_server, zygote, zygote)
89unix_socket_connect(system_server, keystore, keystore)
90unix_socket_connect(system_server, gps, gpsd)
91unix_socket_connect(system_server, racoon, racoon)
92unix_socket_send(system_server, wpa, wpa)
93
94# Communicate over a socket created by surfaceflinger.
95allow system_server surfaceflinger:unix_stream_socket { read write setopt };
96
97# Perform Binder IPC.
98tmpfs_domain(system_server)
99binder_use(system_server)
100binder_call(system_server, binderservicedomain)
101binder_call(system_server, appdomain)
Stephen Smalley2a604ad2013-11-04 09:53:46 -0500102binder_call(system_server, healthd)
Stephen Smalley1ff64412013-10-29 14:42:40 -0400103binder_service(system_server)
104
105# Read /proc/pid files for Binder clients.
106r_dir_file(system_server, appdomain)
107r_dir_file(system_server, mediaserver)
108allow system_server appdomain:process getattr;
109allow system_server mediaserver:process getattr;
110
111# Check SELinux permissions.
112selinux_check_access(system_server)
113
114# XXX Label sysfs files with a specific type?
115allow system_server sysfs:file rw_file_perms;
116allow system_server sysfs_nfc_power_writable:file rw_file_perms;
117
118# Access devices.
119allow system_server device:dir r_dir_perms;
120allow system_server mdns_socket:sock_file rw_file_perms;
121allow system_server alarm_device:chr_file rw_file_perms;
Stephen Smalley3ba90122013-12-12 09:09:53 -0500122allow system_server gpu_device:chr_file rw_file_perms;
Stephen Smalley1ff64412013-10-29 14:42:40 -0400123allow system_server graphics_device:dir search;
124allow system_server graphics_device:chr_file rw_file_perms;
125allow system_server iio_device:chr_file rw_file_perms;
126allow system_server input_device:dir r_dir_perms;
127allow system_server input_device:chr_file rw_file_perms;
128allow system_server tty_device:chr_file rw_file_perms;
129allow system_server urandom_device:chr_file rw_file_perms;
130allow system_server usbaccessory_device:chr_file rw_file_perms;
131allow system_server video_device:chr_file rw_file_perms;
132allow system_server qemu_device:chr_file rw_file_perms;
133allow system_server adbd_socket:sock_file rw_file_perms;
134
135# tun device used for 3rd party vpn apps
136allow system_server tun_device:chr_file rw_file_perms;
137
138# Manage data files.
139allow system_server data_file_type:dir create_dir_perms;
140allow system_server data_file_type:notdevfile_class_set create_file_perms;
141
142# Read /file_contexts and /data/security/file_contexts
143security_access_policy(system_server)
144
145# Relabel apk files.
146relabelto_domain(system_server)
147allow system_server { apk_tmp_file apk_private_tmp_file }:file { relabelfrom relabelto };
148allow system_server { apk_data_file apk_private_data_file }:file { relabelfrom relabelto };
149
150# Relabel wallpaper.
151allow system_server system_data_file:file relabelfrom;
152allow system_server wallpaper_file:file relabelto;
153allow system_server wallpaper_file:file rw_file_perms;
154
155# Relabel /data/anr.
156allow system_server system_data_file:dir relabelfrom;
157allow system_server anr_data_file:dir relabelto;
158
159# Property Service write
160allow system_server system_prop:property_service set;
161allow system_server radio_prop:property_service set;
Nick Kralevichdd1ec6d2013-11-01 10:45:03 -0700162allow system_server debug_prop:property_service set;
Nick Kralevichcd95e0a2013-11-01 12:16:36 -0700163allow system_server powerctl_prop:property_service set;
Stephen Smalley1ff64412013-10-29 14:42:40 -0400164
165# ctl interface
166allow system_server ctl_default_prop:property_service set;
167
Alex Klyubin1fdee112013-09-13 15:59:04 -0700168# Create a socket for receiving info from wpa.
169type_transition system_server wifi_data_file:sock_file system_wpa_socket;
Stephen Smalley45ba6652013-09-27 10:24:49 -0400170allow system_server system_wpa_socket:sock_file create_file_perms;
171
172# Create a socket for connections from debuggerd.
173type_transition system_server system_data_file:sock_file system_ndebug_socket "ndebugsocket";
174allow system_server system_ndebug_socket:sock_file create_file_perms;
175
Stephen Smalley1ff64412013-10-29 14:42:40 -0400176# Specify any arguments to zygote.
Alex Klyubin1fdee112013-09-13 15:59:04 -0700177allow system_server self:zygote { specifyids specifyrlimits specifyseinfo };
178
Stephen Smalley1ff64412013-10-29 14:42:40 -0400179# Manage cache files.
180allow system_server cache_file:dir { relabelfrom create_dir_perms };
181allow system_server cache_file:file { relabelfrom create_file_perms };
182
183# Run system programs, e.g. dexopt.
184allow system_server system_file:file x_file_perms;
185
186# Allow reading of /proc/pid data for other domains.
187# XXX dontaudit candidate
188allow system_server domain:dir r_dir_perms;
189allow system_server domain:file r_file_perms;
190
191# LocationManager(e.g, GPS) needs to read and write
192# to uart driver and ctrl proc entry
193allow system_server gps_device:chr_file rw_file_perms;
194allow system_server gps_control:file rw_file_perms;
195
196# Allow system_server to use app-created sockets.
197allow system_server appdomain:{ tcp_socket udp_socket } { setopt read write };
198
199# Allow abstract socket connection
200allow system_server rild:unix_stream_socket connectto;
201
202# connect to vpn tunnel
203allow system_server mtp:unix_stream_socket { connectto };
204
205# BackupManagerService lets PMS create a data backup file
206allow system_server cache_backup_file:file create_file_perms;
207# Relabel /data/backup
208allow system_server backup_data_file:dir { relabelto relabelfrom };
209# Relabel /cache/.*\.{data|restore}
210allow system_server cache_backup_file:file { relabelto relabelfrom };
211# LocalTransport creates and relabels /cache/backup
212allow system_server cache_backup_file:dir { relabelto relabelfrom create_dir_perms };
213
214# Allow system to talk to usb device
215allow system_server usb_device:chr_file rw_file_perms;
216allow system_server usb_device:dir r_dir_perms;
217
218# Allow system to talk to sensors
219allow system_server sensors_device:chr_file rw_file_perms;
220
Alex Klyubin8d688312013-10-03 13:35:56 -0700221# Read from HW RNG (needed by EntropyMixer).
222allow system_server hw_random_device:chr_file r_file_perms;
223
William Robertsec7d39b2013-09-28 18:46:21 -0400224# Access to wake locks
225allow system_server sysfs_wake_lock:file rw_file_perms;
Stephen Smalleyaf47ebb2013-11-04 09:47:29 -0500226
227# Read and delete files under /dev/fscklogs.
228r_dir_file(system_server, fscklogs)
229allow system_server fscklogs:dir { write remove_name };
230allow system_server fscklogs:file unlink;
Stephen Smalleya49ba922013-12-02 14:22:17 -0500231
232# For SELinuxPolicyInstallReceiver
233selinux_manage_policy(system_server)