blob: d1d76065cea2507e5d061153daf4d718b6a41713 [file] [log] [blame]
allow chromeos_domain selinuxfs:dir search;
allow chromeos_domain selinuxfs:file getattr;
allow chromeos_domain selinuxfs:filesystem getattr;
allow chromeos_domain self:process {
fork
sigchld
sigkill
sigstop
signull
signal
getsched
setsched
getsession
getpgid
setpgid
getcap
setcap
getattr
setrlimit
};
allow chromeos_domain self:fd use;
r_dir_file(chromeos_domain, self);
r_dir_file(chromeos_domain, proc)
allow chromeos_domain proc_cpuinfo:file r_file_perms;
allow chromeos_domain self:{ fifo_file file } rw_file_perms;
allow chromeos_domain self:unix_dgram_socket { create_socket_perms sendto };
allow chromeos_domain self:unix_stream_socket { create_stream_socket_perms connectto };
allow chromeos_domain self:{ fifo_file file } rw_file_perms;
allow chromeos_domain rootfs:dir { read search };
allow chromeos_domain cros_var:dir search;
allow chromeos_domain rootfs:lnk_file r_file_perms;
allow chromeos_domain sysfs:dir search;
allow chromeos_domain sysfs:lnk_file { read getattr };
r_dir_file(chromeos_domain, sysfs_devices_system_cpu);
allow chromeos_domain device:dir search;
allow chromeos_domain cros_labeled_dev_type:lnk_file r_file_perms;
allow chromeos_domain devpts:dir search;
allow chromeos_domain fs_type:dir getattr;
allow chromeos_domain fs_type:filesystem getattr;
allow chromeos_domain cros_system_file:file execute;
r_dir_file(chromeos_domain, cros_system_file)
allow chromeos_domain cros_run:dir r_dir_perms;
allow chromeos_domain cros_var:dir r_dir_perms;
allow chromeos_domain cros_var_cache:dir r_dir_perms;
allow chromeos_domain cros_var_lib:dir r_dir_perms;
allow chromeos_domain cros_var_log:dir r_dir_perms;
allow chromeos_domain cros_run_lock:dir r_dir_perms;
r_dir_file(chromeos_domain, cros_conf_file);
# Files in /var/{spool,lib,log,cache,...} and /run with scontext unidentified yet.
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_bluetooth, dir, "bluetooth");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_imageloader, dir, "imageloader");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_oemcrypto, dir, "oemcrypto");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_oobe_config_restore, dir, "oobe_config_restore");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_trim, dir, "trim");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_ureadahead, dir, "ureadahead");
filetrans_pattern(chromeos_domain, cros_var_lib, cros_var_lib_ui, dir, "ui");
filetrans_pattern(chromeos_domain, cros_var_cache, cros_var_cache_camera, dir, "camera");
dev_only(`
auditallow {chromeos_domain -cros_init -cros_init_scripts} {cros_var_lib_bluetooth cros_var_lib_oemcrypto cros_var_lib_oobe_config_restore cros_var_lib_trim cros_var_lib_ureadahead}:dir create;
auditallow {chromeos_domain -cros_init_ui_respawn} cros_var_lib_ui:dir create;
auditallow chromeos_domain cros_var_lib_imageloader:dir create;
')
# Files in home with creation scontext unidentified yet.
filetrans_pattern(chromeos_domain, cros_home_shadow_uid_root, cros_home_shadow_uid_root_shill, dir, "shill");
filetrans_pattern(chromeos_domain, cros_home_shadow_uid_root, cros_home_shadow_uid_root_shill_logs, dir, "shill_logs");
dev_only(`
auditallow chromeos_domain cros_home_shadow_uid_root_shill:dir create;
auditallow chromeos_domain cros_home_shadow_uid_root_shill_logs:dir create;
');
# Do the same xperm restriction as Android for ioctl.
# Restrict all domains to an allowlist for common socket types. Additional
# ioctl commands may be added to individual domains, but this sets safe
# defaults for all processes. Note that granting this allowlist to domain does
# not grant the ioctl permission on these socket types. That must be granted
# separately.
allowxperm domain domain:{ rawip_socket tcp_socket udp_socket }
ioctl { unpriv_sock_ioctls unpriv_tty_ioctls };
# default allowlist for unix sockets.
allowxperm domain domain:{ unix_dgram_socket unix_stream_socket }
ioctl unpriv_unix_sock_ioctls;
# Restrict PTYs to only allowlisted ioctls.
# Note that granting this allowlist to domain does
# not grant the wider ioctl permission. That must be granted
# separately.
allowxperm chromeos_domain devpts:chr_file ioctl unpriv_tty_ioctls;