selinux进程的c512,c768是什么

ake*_*hsu 5 android selinux linux-kernel

我遇到了一个问题,我有一个应用程序需要访问我由内核驱动程序创建的 /proc 条目,并且遇到了 selinux 被拒绝的问题:

avc: denied { write } for pid=30200 comm="omg.flashlight" name="omg_flash_brightness" dev="proc" ino=4026534208 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0
Run Code Online (Sandbox Code Playgroud)

我尝试解决这个拒绝问题,发现我不能允许 untrusted_app 写入 proc:file,因为会出现 CTS 问题。我尝试为 omg.flashlight APP 添加域。我使用 ps -Z 并发现该应用程序如下

u:r:untrusted_app:s0:c512,c768 u0_a89    6669  382   com.omg.flashlight
Run Code Online (Sandbox Code Playgroud)

我尝试添加以下设置以使其成为seapp_contexts 中的selinux 域:

user=app domain=omg_flashlight seinfo=platform name=com.omg.flashlight type=app_data_file
Run Code Online (Sandbox Code Playgroud)

我新建了一个 omg_flashlight.te:

type omg_flashlight,domain;
app_domain(omg_flashlight)
Run Code Online (Sandbox Code Playgroud)

但结果是一样的,APP仍然是untrusted_app。

有人知道这件事吗?我发现有c512,c768。有谁知道这是什么?

谢谢!

Mr.*_*ish 2

首先,您需要修复 seapp_context 文件中的行:

user=_app seinfo=omg_flashlight domain=platform_app name=com.omg.flashlight type=app_data_file
Run Code Online (Sandbox Code Playgroud)

user=_app始终以下划线开头。

运行的进程u:r:untrusted_app:s0:c512,c768具有访问类别 c512、c768 内的文件的特殊权限。但是您需要访问没有多级类别的文件类型u:object_r:proc:s0,所以我认为这不是您的问题。

尝试让您的应用程序运行为platform_appsystem_app,具体取决于您的设备,您应该可以获得访问权限。

更新

您已经在您的seapp_context 中混淆了,请参见上文seinfodomain如果platform_app不起作用,请尝试system_app。转到/system/etc/security/mac_permissions.xml并查找seinfo您的应用程序的,它应该与 seapp_contexts 中定义的相同。

<signer signature="your_app_signature"><allow-all/><seinfo value="omg_flashlight"/></signer>
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序密钥也正确,它现在将在 seapp_contexts 定义的域中运行。