打开 /proc/<PID>/stat 文件时出现权限被拒绝错误

Posted

技术标签:

【中文标题】打开 /proc/<PID>/stat 文件时出现权限被拒绝错误【英文标题】:Permission denied error when opening /proc/<PID>/stat file 【发布时间】:2017-04-11 22:28:08 【问题描述】:

我写了一个守护进程,作为系统运行。 当它尝试打开一些使用其库的进程 PID 的 /proc//stat 条目时,我收到 SELinux 的以下错误:

type=1400 audit(1464247244.561:530):avc: denied search for pid=22968 comm="Binder_3" name="22899" dev="proc" ino=71342 scontext=u:r:system_app:s0 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=dir permissive=0

我是否错过了我的守护进程的一些“允许”规则? 该错误似乎与它无关(好像“system_app”域缺少权限,而不是我的守护进程)。

我该如何解决?

【问题讨论】:

为什么要在系统应用上下文中运行你的守护进程?它不应该在更高的 selinux 上下文中运行吗? 【参考方案1】:

你应该执行

adb shell ps -eZ | grep  22968

命令在您的应用同时运行时从命令行查找有问题的服务或应用。找到受害者(应用程序)后,您必须在 /external/sepolicy/service_contexts 文件中添加一个 SELinux 规则来处理访问冲突。

【讨论】:

以上是关于打开 /proc/<PID>/stat 文件时出现权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

linux下用程序读取某进程的状态信息(/proc/[pid]/stat)时,该进程结束了。怎么办

使用libproc获取子进程

使用 /proc/*/stat 进行分析

处理/ proc / pid / fd /#链接的创建和删除的Linux内核代码在哪里?

linux进程隐藏 hook readdir函数 挂载覆盖/proc/pid 目

如何查看正在运行线程的CPU核心?