我是 Android 世界的新手
我想知道如何 为本机 binder 客户端程序设置 SEPolicy (以及设置什么......)
我正在使用来自Using Binde-IPC 的供应商绑定器(vndservicemanager)参考
我为所需的 SEPolicy 添加了一些文件
现在我有两个内置的可执行文件——my_binder_service和my_client
它们都在 /vendor/bin/ 下
my_binder_service在启动时启动,它会将服务添加到 vendor servicemanager
my_client是一个使用 binder IPC 从my_binder_service执行某些功能的程序
这是我在init.rc中的设置
service my_binder_service /vendor/bin/my_binder_service
class main
class oneshot
class console
seclabel u:r:my_binder_service:s0
到目前为止我有什么:
- my_binder_service在引导时成功启动
- 它可以向供应商服务管理器添加服务
- my_client在permissive 模式下表现良好
以上内容在强制模式下通过ps -AZ和vndservice list命令进行验证
但是,my_client在强制模式下遇到分段错误
我通过以下方式检查被拒绝的消息
dmesg | grep avc | grep my_
logcat | grep avc: | grep my_
但是我在许可和强制模式下都没有找到任何消息
我还通过ps -AZ检查了这两个正在运行的进程的上下文:
u:r:my_binder_service:s0 <- for my_binder_service
u:r:su:s0 <- for my_client
我发现没有为my_client正确设置进程上下文
我认为这可能是my_client在强制模式下的问题
我认为my_binder_service设置正确是因为 init.rc 文件中的seclabel命令
但我不知道在哪里为 my_client 设置进程上下文
这里是my_client.te的内容(my_binder_service.te和这个类似)
type my_client, domain;
type my_client_exec, exec_type, file_type, vendor_file_type;
init_daemon_domain(my_client)
allow my_client my_client_exec:file entrypoint;
allow my_client serial_device:chr_file { read write };
vndbinder_use(my_client);
binder_call(my_client, my_binder_service);
并且文件上下文在file_context文件中指定
/vendor/bin/my_binder_service u:object_r:my_binder_service_exec:s0
/vendor/bin/my_client u:object_r:my_client_exec:s0
SEPolicy 部分是否缺少任何内容?
或者这不是关于 SEPolicy 的问题?