我在基于AOSP的Android 7.1.2(更准确地说是基于sony开放设备树)上正确运行自定义selinux策略时遇到一些麻烦.
我的问题是审计日志不断告诉我我实际添加的文件访问规则丢失.我还将audit2allow创建的规则复制到我的策略文件中,但即使那些规则也没有正常工作.
那么,让我们深入了解细节:
我创建了一个名为vendor_app的自定义域.此域根据其签名分配给应用程序.我在mac_permissions.xml中添加了一个条目来分配seinfo字段供应商.在seapp_contexts中,我像这样分配vendor_app域:
user=_app seinfo=vendor domain=vendor_app type=app_data_file levelFrom=user
Run Code Online (Sandbox Code Playgroud)
我的应用程序在vendor_app上下文中正确启动:
# ps -Z | grep permissiontest
u:r:vendor_app:s0:c512,c768 u0_a109 4110 508 1620732 79584 SyS_epoll_ 0000000000 S com.vendor.android.permissiontest
Run Code Online (Sandbox Code Playgroud)
所以,现在对于根本不起作用的部分.在vendor_app上下文中运行的应用程序将获得/ persist/vendor中文件的读/写访问权限.为了创建nessesary规则,我将一个名为vendor.te的文件添加到设备目录中的sepolicy文件夹中,其中包含以下内容:
type vendor_app, domain;
type vendor_file, file_type, data_file_type;
# permissive vendor_app;
app_domain(vendor_app)
net_domain(vendor_app)
bluetooth_domain(vendor_app)
allow vendor_app persist_file:dir r_dir_perms;
allow vendor_app vendor_file:dir create_dir_perms;
allow vendor_app vendor_file:file create_file_perms;
allow vendor_app audioserver_service:service_manager find;
allow vendor_app cameraserver_service:service_manager find; …Run Code Online (Sandbox Code Playgroud)