在 GenyMotion 虚拟设备上与 SELinux 交互
Interact with SELinux on GenyMotion Virtual Device
我阅读了很多关于 SELinux 的文章,我很想尝试为大学做一个案例研究。
我在 GenyMotion 上安装了各种虚拟设备,从 Android 6 到 Android 9,但没有人拥有 SElinux:当我安装 "sestatus" 时,它会回答 "disabled"。
我认为启用它还不够,似乎模块必须安装在内核中,有人可以告诉我该怎么做吗?我试过了但没有找到任何东西,我遇到了很多困难,这是我第一次做这些事情。
在此先感谢大家。
Android 不能 "install SE Linux";因为它自 API 级别 21 以来已经默认安装和启用。您需要成为用户 root
,才能访问这些管理命令。这只有在有根的硬件设备或有根的模拟器图像上才有可能。
...只需安装 CentOS 或任何其他启用安全性的 Linux 发行版,用于测试。
最后我设法使一切正常:我能够通过 GenyMotion 虚拟设备中的终端访问 Selinux 信息。 Selinux 已经在 4.3 版之后的设备上激活,不需要像 @Martin Zeitler 所说的那样安装它。我解释了问题的解决方案(在 Linux 上有效)。
- 首先要做的是在虚拟设备中安装一个终端:我已经安装了Termux。为此,只需从站点下载 apk 并将其拖到虚拟设备上,安装就会开始。随后,需要为 Termux 终端提供 SuperUser 权限:通常,通过打开终端,提供 SU 命令,设备会询问您是否要为 Termux 应用程序提供 SuperUser 权限。当您输入 SU 命令时,它将允许您浏览设备上的文件夹。使用 "ls" 命令,提供“-Z”选项,您可以看到文件的 SElinux 上下文。在终端中,使用 "getenforce" 命令,您可以看到 Selinux 是如何 运行ning 的。在这里您将看到其他有用的命令:https://www.all-things-android.com/content/se-android-commands
- 现在,您需要下载允许我们与 Selinux 交互的工具:setools。 https://github.com/pasis/setools-android These tools are written in C, the native language of Android, so you need to download the NDK library to compile them: https://developer.android.com/ndk/downloads/
- 编译首先要做的,就是指定工程路径:
导出 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)
- 编译完成后,您可以使用adb程序将Setools文件夹发送到虚拟设备。 ./adb push /setool/local/folder /remote/device/folder
(例如:./adb /setool /tmp)现在您的设备上已经安装了 Setool,您可以 运行“/setool/obj/local/x86”文件夹中的工具。感谢 "sepolicy-inject",您还可以向策略添加规则。
最后,感谢本指南,我意识到 Selinux 策略以二进制格式存储,因此没有工具无法与它们交互。
https://ge0n0sis.github.io/posts/2015/12/exploring-androids-selinux-kernel-policy/
我阅读了很多关于 SELinux 的文章,我很想尝试为大学做一个案例研究。 我在 GenyMotion 上安装了各种虚拟设备,从 Android 6 到 Android 9,但没有人拥有 SElinux:当我安装 "sestatus" 时,它会回答 "disabled"。 我认为启用它还不够,似乎模块必须安装在内核中,有人可以告诉我该怎么做吗?我试过了但没有找到任何东西,我遇到了很多困难,这是我第一次做这些事情。 在此先感谢大家。
Android 不能 "install SE Linux";因为它自 API 级别 21 以来已经默认安装和启用。您需要成为用户 root
,才能访问这些管理命令。这只有在有根的硬件设备或有根的模拟器图像上才有可能。
...只需安装 CentOS 或任何其他启用安全性的 Linux 发行版,用于测试。
最后我设法使一切正常:我能够通过 GenyMotion 虚拟设备中的终端访问 Selinux 信息。 Selinux 已经在 4.3 版之后的设备上激活,不需要像 @Martin Zeitler 所说的那样安装它。我解释了问题的解决方案(在 Linux 上有效)。
- 首先要做的是在虚拟设备中安装一个终端:我已经安装了Termux。为此,只需从站点下载 apk 并将其拖到虚拟设备上,安装就会开始。随后,需要为 Termux 终端提供 SuperUser 权限:通常,通过打开终端,提供 SU 命令,设备会询问您是否要为 Termux 应用程序提供 SuperUser 权限。当您输入 SU 命令时,它将允许您浏览设备上的文件夹。使用 "ls" 命令,提供“-Z”选项,您可以看到文件的 SElinux 上下文。在终端中,使用 "getenforce" 命令,您可以看到 Selinux 是如何 运行ning 的。在这里您将看到其他有用的命令:https://www.all-things-android.com/content/se-android-commands
- 现在,您需要下载允许我们与 Selinux 交互的工具:setools。 https://github.com/pasis/setools-android These tools are written in C, the native language of Android, so you need to download the NDK library to compile them: https://developer.android.com/ndk/downloads/
- 编译首先要做的,就是指定工程路径: 导出 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)
- 编译完成后,您可以使用adb程序将Setools文件夹发送到虚拟设备。 ./adb push /setool/local/folder /remote/device/folder (例如:./adb /setool /tmp)现在您的设备上已经安装了 Setool,您可以 运行“/setool/obj/local/x86”文件夹中的工具。感谢 "sepolicy-inject",您还可以向策略添加规则。
最后,感谢本指南,我意识到 Selinux 策略以二进制格式存储,因此没有工具无法与它们交互。 https://ge0n0sis.github.io/posts/2015/12/exploring-androids-selinux-kernel-policy/