| # Policy for /vendor/bin/netmgrd |
| type netmgrd, domain; |
| type netmgrd_exec, exec_type, vendor_file_type, file_type; |
| |
| init_daemon_domain(netmgrd) |
| net_domain(netmgrd) |
| |
| # Grant access to Qualcomm MSM Interface (QMI) radio sockets |
| qmux_socket(netmgrd) |
| |
| wakelock_use(netmgrd) |
| |
| # create socket in /dev/socket/netmgrd/ |
| allow netmgrd netmgrd_socket:dir rw_dir_perms; |
| allow netmgrd netmgrd_socket:sock_file create_file_perms; |
| |
| allow netmgrd proc_net_type:file rw_file_perms; |
| |
| allow netmgrd self:capability { net_admin net_raw setgid setpcap setuid }; |
| |
| |
| # TODO(b/36682246): Remove data_between_core_and_vendor_violators once |
| # netmgrd no longer directly accesses /data owned by the frameworks. |
| typeattribute netmgrd data_between_core_and_vendor_violators; |
| # read /data/misc/net |
| allow netmgrd net_data_file:dir r_dir_perms; |
| allow netmgrd net_data_file:file r_file_perms; |
| # read and write /data/misc/netmgr |
| userdebug_or_eng(` |
| allow netmgrd netmgr_data_file:dir rw_dir_perms; |
| allow netmgrd netmgr_data_file:file create_file_perms; |
| ') |
| |
| # execute shell, ip, and toolbox |
| allow netmgrd vendor_shell_exec:file rx_file_perms; |
| allow netmgrd vendor_toolbox_exec:file rx_file_perms; |
| |
| # netmgrd sockets |
| allow netmgrd self:netlink_route_socket { create_socket_perms_no_ioctl nlmsg_read nlmsg_write }; |
| allow netmgrd self:netlink_socket create_socket_perms_no_ioctl; |
| allow netmgrd self:netlink_xfrm_socket { create_socket_perms_no_ioctl nlmsg_read nlmsg_write }; |
| allow netmgrd self:rawip_socket create_socket_perms_no_ioctl; |
| allow netmgrd self:socket create_socket_perms; |
| # in addition to ioctl commands granted to domain allow netmgrd to use: |
| allowxperm netmgrd self:udp_socket ioctl priv_sock_ioctls; |
| allowxperm netmgrd self:socket ioctl msm_sock_ipc_ioctls; |
| |
| set_prop(netmgrd, net_radio_prop) |
| |
| # read files in /sys |
| r_dir_file(netmgrd, sysfs_type) |
| allow netmgrd sysfs_net:file write; |
| |
| userdebug_or_eng(` |
| allow netmgrd diag_device:chr_file rw_file_perms; |
| ') |
| |
| # For netmgrd to be able to execute netutils wrappers |
| domain_trans(netmgrd, netutils_wrapper_exec, netutils_wrapper) |
| allow netmgrd netutils_wrapper_exec:file { open read getattr execute }; |
| allow netmgrd netutils_wrapper:process sigkill; |