我有一个自定义的 A10 存储库,我试图在其中创建一个能够读取 /proc/[pid]/some-file
的应用程序文件,例如stat
和 status
,有点像 ps
做。
看完这篇 answer很明显,AID_READPROC
应该添加我使用自定义权限完成的操作。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.poke.mon"
android:sharedUserId="android.uid.system">
<!-- More stuff -->
<uses-permission android:name="com.poke.READPROC_PERM" />
<!-- More stuff -->
</application>
</manifest>
我已添加 com.poke.READPROC_PERM
通过编辑适当的 platform.xml
, AndroidManifest.xml
和 sytem-current.txt
文件并在 privapp-permissions
中允许该权限文件我已通过
cat
验证-ing status
我的应用程序进程的文件并验证 gid 3009 确实存在。但是我仍然被 sepolicy 阻止(强制执行被禁用,代码可以访问文件)。
添加
r_dir_file(priv_app, proc)
到 priv_app.te
导致错误。编译器给出的原因是这个line在
coredomain.te
:# Core domains are not permitted to use kernel interfaces which are not
# explicitly labeled.
# TODO(b/65643247): Apply these neverallow rules to all coredomain.
full_treble_only(`
# /proc
neverallow {
coredomain
-init
-vold
} proc:file no_rw_file_perms;
创建自定义域导致了我可能想要的类似错误typeattribute my_apps_domain coredomain;
避免大量的复杂性和重复(我需要与其他服务等进行通信)。有没有办法解决这个限制? (例如,查看
genfscon
似乎不支持通配符映射,例如 /proc/\d+/some-file
)shell
似乎也很奇怪能做ps
很好,但它也是coredomain
由 first line 定义的 shell.te
:typeattribute shell coredomain;
那么也许我缺少其他一些神奇的 sepolicy 门?
最佳答案
user=_app isPrivApp=true seinfo=平台名称=com.myapp.packagename domain=my_custom_domain type=app_data_file levelFrom=all
引用:https://cs.android.com/android/platform/superproject/+/master:device/google/coral-sepolicy/private/seapp_contexts;drc=01b96a3a966f075abcba27cb415cece348a3278e;l=5
typeattribute my_custom_domain coredomain;
然后您将使用 neverallow 限制。
关于security - 访问 `proc` 文件系统以从系统应用程序读取 `/proc/[pid]/some-file`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66348160/