[MTK] 如何确认一个process 所拥有的root 权限(capabilities)

文摘 Android MediaTek 2020-08-7 阅读:1274

[Description]
linux 将root 权限分割成一个一个的capabilities,如何查看每个process 所拥有的root capabilities?

[Keyword]
root process capabilities

[Solution]
从adb shell 命令操作中,我们可以:
adb shell cat proc/PID/status其中会打印.

比如对于system server:
CapInh: 0000000000000000
CapPrm: 0000000007c13c20
CapEff: 0000000007c13c20
CapBnd: ffffffffffffffff

比如对于zygote & init 等root process:
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff

即包含原始的任何的capabilities.

而对于普通的app process:
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff

即任何的root 的capabilities 都被剥夺了。

从native 层操作,即可使用capget 函数获取相关的资讯,具体函数的使用可以man capget 获取函数使用方法。

从kernel 层即可直接读取task 中的struct cred 结构体,然后读取其资讯,如:
const struct cred * cred = __task_cred(task);
然后就可直接读取相关的数据了 , 具体可以参考kernel/fs/proc/array.c 中的task_cap 函数



0条评论

© 2020 芯缘异码. Powered by Typecho