在GenyMotion虚拟设备上与SELinux进行交互

时间:2018-12-15 19:03:40

标签: android selinux

我读了很多关于SELinux的文章,并且我想尝试着为大学做一个案例研究。 我已经在GenyMotion上安装了各种虚拟设备,从Android 6到Android 9,但是没有人拥有SElinux:当我执行“ sestatus”时,它会回答“ disabled”。 我认为启用它还不够,似乎必须将模块安装在内核中,有人可以告诉我该怎么做吗?我尝试过,但是没有找到任何东西,我遇到很多困难,这是我第一次做这些事情。 预先感谢大家。

2 个答案:

答案 0 :(得分:1)

最后,我设法使一切正常:我能够通过GenyMotion虚拟设备中的终端访问Selinux信息。 Selinux在版本4.3之后的设备上已经处于活动状态,无需安装它,因为它表示为@Martin Zeitler。我解释了该问题的解决方案(在Linux上有效)。

  1. 要做的第一件事是在虚拟设备中安装终端:我已经安装了Termux。为此,只需从站点下载apk并将其拖动到虚拟设备,即可开始安装。随后,有必要向Termux终端提供SuperUser权限:通常,通过打开终端,提供SU命令,然后设备会询问您是否要向Termux应用程序提供SuperUser权限。输入SU命令时,它将允许您浏览设备上的文件夹。使用“ ls”命令(提供“ -Z”选项),您可以看到文件的SElinux上下文。在终端上,使用“ getenforce”命令,可以查看Selinux的运行方式。在这里,您将看到其他有用的命令:https://www.all-things-android.com/content/se-android-commands
  2. 现在,您需要下载允许我们与Selinux交互的工具:setools。 https://github.com/pasis/setools-android这些工具是用C(Android的本地语言)编写的,因此您需要下载NDK库进行编译:https://developer.android.com/ndk/downloads/
  3. 要编译的第一件事是指定项目路径: 导出NDK_PROJECT_PATH = / my / project / path。第二步是指定makefile: ndk-build NDK_APPLICATION_MK = / my / project / Makefile.am(有关完整指南:https://software.intel.com/en-us/articles/building-an-android-command-line-application-using-the-ndk-build-tools
  4. 编译完成后,可以使用adb程序将Setools文件夹发送到虚拟设备。 ./adb push / setool / local / folder / remote / device / folder (示例:./adb / setool / tmp)现在,您的设备上已经安装了Setool,您可以在“ / setool / obj / local / x86”文件夹中运行这些工具。借助“ sepolicy-inject”,您还可以将规则添加到策略中。

enter image description here

最后,由于有了本指南,我才意识到Selinux策略是以二进制格式存储的,因此没有工具就无法与它们进行交互。 https://ge0n0sis.github.io/posts/2015/12/exploring-androids-selinux-kernel-policy/

答案 1 :(得分:0)

一个人不能在Android上“安装SE Linux”;因为自API级别21开始已经默认安装和启用它,所以您需要成为用户root才能访问这些管理命令。仅在有根的硬件设备或有根的仿真器映像上才有可能。

...只需安装CentOS或任何其他启用安全性的Linux发行版,即可进行测试。