【发布时间】:2019-03-14 13:35:33
【问题描述】:
如何将 SELinux 标签应用于 rootfs 上的文件,即直接位于 / 中但不属于 system、data ... 分区的文件 (Android 7.1)?在 adb 上调用 ls -lZ / 会产生(摘录):
-rwxr-x--- 1 root root u:object_r:init_exec:s0 806748 1970-01-01 01:00 init
drwxr-xr-x 14 root root u:object_r:cgroup:s0 0 2019-03-14 14:01 acct
-rw-r--r-- 1 root root u:object_r:rootfs:s0 99904 1970-01-01 01:00 file_contexts.bin
根据我的研究,rootfs (GPIO+GZ) 不支持 SElinux 上下文标签(没有 xattr),所以所有文件都应该有相同的上下文,显然不是这样。我已将自定义文件 /foo 添加到继承默认上下文 u:object_r:rootfs:s0 的 ramdisk 中。
作为测试,我给system/sepolicy/file_contexts添加了一条规则:
/foo u:object_r:init_exec:s0
为我的文件提供与/init 相同的上下文。这确实有任何影响(但grep /foo /file_contexts.bin 显示/file_contexts.bin 已更新)。如何标记/foo?
【问题讨论】:
-
我认为您正在寻找可用于永久更改文件标签的
semanage fcontext。然后restorecon reset _filename_将设置文件标签。这就是它在 rhel 上的工作方式。我不确定android。 -
这些修改扩展文件属性,但rootfs没有这些。我认为 init 在每次启动时都会标记它们。
-
它在 rhel 上运行,
semanage fcontext --list | grep "^/[a-zA-Z0-9]* "这显示了根 fs 及其文件夹的默认上下文。没有 grep 你会得到整个列表,但那是一个很长的列表。 -
那么 rhel 使用不同的根文件系统。用于 ramdisk 的 CPIO 存档不支持扩展属性。
-
我明白了,那么对不起。