1. Termux
	1.1 安装地址
	1.2 查看手册
	1.3 开放源码
2. proot
	2.1 Termux为您的设备提供以下版本的Linux操作系统软件:
	2.2 使用
	2.3 设置为Arch环境
3. gentoo下的终端仿真器
4. proot维基百科
5. chroot
	5.1 chroot的用途
	5.2 chroot的要求
	5.3 使用
	5.4 在chroot中使用图形界面
6. termux-FAQ
	6.1 如何访问Termux中的设备存储?
	6.2 内部和外部存储
	6.3 共享资料
	6.4 termux下的部分检测工具

1. Termux

https://termux.com/
Termux是一个Android终端模拟器和Linux环境应用程序,可直接运行而无需root或安装。自动安装了最小的基本系统-使用APT软件包管理器可以安装其他软件包。

  • Secure 安全: 使用OpenSSH的ssh客户端访问远程服务器。Termux在漂亮的开源解决方案中将标准软件包与精确的终端仿真相结合。
  • Feature packed 功能打包: 在Bash,fish或Zsh和nano,Emacs或Vim之间选择。使用curl访问API端点,并使用rsync将联系人列表的备份存储在远程服务器上。
  • Customizable 可定制: 通过Debian和Ubuntu GNU/Linux已知的APT软件包管理系统安装所需的软件包。为什么不开始安装Git并同步您的点文件?
  • Explorable 可探索的: Termux中提供的软件包与Mac和Linux上的软件包相同-在手机上安装手册页,并在一个会话中阅读手册,而在另一个会话中进行实验。
  • With batteries included: Perl,Python,Ruby和Node.js的最新版本均可用。
  • Ready to scale up: 连接蓝牙键盘,并在需要时将设备连接至外部显示器-Termux支持键盘快捷键并具有完整的鼠标支持。
  • Tinkerable 可修补的: 通过使用Clang编译C文件进行开发,并使用CMake和pkg-config构建自己的项目。如果您遇到困难并需要调试,则GDB和strace均可用。

1.1 安装地址

可通过Google Play, F-Droid或者Nethunter Store上下载安装

带有软件包的终端模拟器,Termux将强大的终端仿真与广泛的Linux软件包集合结合在一起。

  • Enjoy the bash and zsh shells.
  • Edit files with nano and vim.
  • Access servers over ssh.
  • Compile code with gcc and clang.
  • Use the python console as a pocket calculator.
  • Check out projects with git and subversion.
  • Run text-based games with frotz.

首先,下载一个小型基本系统-然后可以使用Debian和Ubuntu Linux发行版中已知的apt软件包管理器安装所需的软件包。
长按终端上的任意位置并选择“帮助”菜单选项以了解更多信息,以访问内置帮助。
join the Termux IRC chat: #termux on freenode

1.2 查看手册

https://wiki.termux.com/wiki/Main_Page
Addons,Termux具有一些额外的功能(需要购买)。您可以通过安装插件来添加它们:

  • Termux:API (free):从Termux访问Android功能 (读取SMS,GPS,通知等)
  • Termux:Boot 启动:Termux的附加组件,使程序可以在引导时运行
  • Termux:Float 浮动:在浮动终端窗口中使用Termux
  • Termux:Styling 样式:自定义您的Termux终端, 调整终端的颜色和字体
  • Termux:Tasker 任务:Tasker插件可从Tasker运行Termux脚本
  • Termux:Widget 小部件:从主屏幕启动Termux命令, 使用桌面图标在Termux中运行程序

1.3 开放源码

https://github.com/termux
https://github.com/termux/termux-packages
https://github.com/termux/termux-app
除其他外,Termux还提供了带有许多扩展库的C clang编译器。这使您可以在Termux和Termux中编译自己的应用程序。
Termux配备了许多其他语言的翻译器和口译器,例如Python,Java,Go,Rust和其他语言。
Midnight Comander文件管理器,Vim文本编辑器,SSH应用程序等可用,使Termux成为Andriod设备上舒适的工作区,尤其是在配备键盘的情况下。

在许多情况下,在终端环境中的Linux PC和Android及Termux设备上工作没有区别。但是,由于Android的限制(不允许直接访问硬件),该环境无法完全正常运行。
例如 Termux中无法访问USB端口和连接到该端口的设备。在更高版本的Android中,由于对/proc文件系统的访问限制,“ top” info命令不起作用。

2. proot

https://wiki.termux.com/wiki/PRoot
说明:为非root用户模拟chroot,绑定mount和binfmt_misc
https://proot-me.github.io
https://github.com/proot-me/PRoot
PRoot概述
PRoot使用`ptrace`系统调用来伪造root特权。这意味着它将跟踪其每个子进程,以解释和转换由子进程进行的系统调用。
PRoot命令可用于从伪造的chroot执行一个命令或启动Shell会话。后者对于虚拟化其他操作系统的来宾根文件系统很有用。
如果您知道某些命令行,请运行proot --help以获取完整的帮助屏幕。建议您在使用任何来宾OA rootfs之前始终学习Linux命令行基础知识。
同样,PRoot仅虚拟化根文件系统树,而不是整个操作系统。不要期望诸如插入内核模块之类的事情起作用。
当使用proot虚拟化rootfs时,会观察到性能下降,这当然不如使用模拟器慢。但是,当Termux生态系统中提供了所需的软件包时,请使用它们,因为它更容易,更快捷。
不要指望一切正常。

PROOT是一个用户空间实现的chroot,mount --bind和binfmt_misc。
这意味着用户不需要任何特权或设置即可执行诸如使用任意目录作为新的根文件系统的操作。
启用PRoot的好处包括在Android智能手机和平板电脑以及Chromebook 的Termux chroot中运行Linux操作系统。

2.1 Termux为您的设备提供以下版本的Linux操作系统软件:

  Arch  	https://wiki.termux.com/wiki/Arch
Archstrike	https://wiki.termux.com/wiki/Archstrike
Blackarch	https://wiki.termux.com/wiki/Blackarch
 Ubuntu 	https://wiki.termux.com/wiki/Ubuntu
 Debian 	https://wiki.termux.com/wiki/Debian
 Fedora 	https://wiki.termux.com/wiki/Fedora
Slackware	https://wiki.termux.com/wiki/Slackware
Alpine Linux	https://github.com/Hax4us/TermuxAlpine

2.2 使用

设定值
要在安装了termux-exec和时使用proot:
  unset LD_PRELOAD
  export LD_PRELOAD=$PREFIX/lib/libtermux-exec.so
如何取消 unset?

如果要启动或执行包含proot命令的启动脚本,则在此之前必须先取消设置LD_PRELOAD(如果同时安装了termux-exec),否则将收到错误消息。通过执行,很容易取消设置LD_PRELOAD
  unset LD_PRELOAD

如何退缩 set back?
现在,如果您完成了代理工作,并且想要使用termux,那么现在您有两个选择可以再次设置/导出LD_PRELOAD:
1)只需打开一个新会话并从上一个会话退出,那么现在您的LD_PRELOAD将随新会话自动设置。
2)如果由于任何原因不想打开新会话,也可以通过执行以下命令在同一会话中导出或设置LD_PRELOAD路径
  export LD_PRELOAD=$PREFIX/lib/libtermux-exec.so

2.3 设置为Arch环境

https://wiki.termux.com/wiki/Arch
该Termux设置外壳脚本将尝试在Termux环境中设置Arch Linux。分别执行以下每个命令行以运行setupTermuxArch.bash。一次运行它们可能会产生错误;提示,复制并粘贴以下内容:
pkg install curl
curl -OL https://raw.githubusercontent.com/TermuxArch/TermuxArch/master/setupTermuxArch.bash
bash setupTermuxArch.bash
建议此安装的可用空间分配约为用户空间中的1G可用空间,而不是外部SD卡上的可用空间。Android智能手机2018上Termux PRoot中的Arch Linux:

3. gentoo下的终端仿真器

https://wiki.gentoo.org/wiki/Android/Terminal_Emulators_(Tips-and-tricks)
此目录在所有Android设备之间通用。
$ cd /data/data/<package name>

https://wiki.gentoo.org/wiki/Project:Android/tarball
本指南介绍了如何使用预编译的stage3 tarball在Android设备上安装Gentoo Prefix。
需要root用户的设备才能安装Gentoo。由于大多数Android系统都noexec为用户可写分区设置了选项,因此无法执行应用程序。同时,正在探索在无根设备上运行Gentoo的可能性。
需要比1.17更新的Busybox。如果您还没有,建议使用Stericson版本
下载最新的64位tarball(2018.02.25)或32位tarball(2018.02.26),然后将其解压缩到/ data目录中。

4. proot维基百科

https://wiki.archlinux.org/index.php/PRoot
PRoot是一种程序,它在用户空间中实现类似于GNU/Linux的chroot,mount --bind和binfmt_misc的功能,从而允许无特权的用户执行具有备用根目录的程序,就像chroot“ jail”一样。在由于缺乏root特权而无法使用chroot的情况下,这很有用。
安装后,PRoot不需要root特权。与chroot一样,必须给PRoot一个目录,以充当要运行的程序的新根目录。如果未指定程序,则/bin/sh默认情况下将启动PRoot 。无需手动安装虚拟文件系统,因为PRoot会自动进行处理。
$ proot -r ~/mychroot/
此时,将启动一个外壳,其外壳与主机系统上的目录/相对应~/chroot/。
可以使用以下-b选项显式绑定路径:
$ proot -b /bin/bash:/bin/sh
这使得主机的/ bin / bash在来宾的/ bin / sh中可用
PRoot在内部利用qemu用户模式仿真器允许程序在PRoot内部运行,即使它们是针对除主机系统之外的体系结构进行编译的。
与chroot一样,PRoot仅提供文件系统级别的隔离。PRoot“监狱”内部的程序共享相同的内核,硬件,进程空间和网络子系统。chroot和PRoot不能替代真正的虚拟化应用程序,例如虚拟机管理程序和半虚拟化程序。

5. chroot

https://wiki.archlinux.org/index.php/Chroot
chroot是改变表观根目录为当前运行的进程和他们的孩子的操作。在这种修改后的环境中运行的程序无法访问该环境目录树之外的文件和命令。修改后的环境称为chroot监狱。
更改根目录通常是为了在不再可能进行引导和/或登录的系统上执行系统维护。

5.1 chroot的用途

重新安装引导程序。 	https://wiki.archlinux.org/index.php/Bootloader
重建initramfs映像。	https://wiki.archlinux.org/index.php/Mkinitcpio
升级或降级软件包。 	https://wiki.archlinux.org/index.php/Downgrading_packages
重设忘记的密码。   	https://wiki.archlinux.org/index.php/Password_recovery
在干净的chroot中构建包.	https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_clean_chroot

5.2 chroot的要求

  • root根特权。
  • 另一个Linux环境,例如LiveCD或USB闪存介质,或来自另一个现有Linux发行版的环境。
  • 匹配的架构环境;即chroot从和chroot到。当前环境的体系结构可以通过以下方式发现:(uname -m例如i686或x86_64)。
  • 加载了chroot环境中所需的内核模块。
  • 如果需要,启用交换: # swapon /dev/sdxY
  • 如果需要,建立Internet连接。

5.3 使用

例如,在安装指南中,该目录为/mnt:
# arch-chroot /mnt
要退出chroot,只需使用:
# exit

https://en.wikipedia.org/wiki/Chroot
https://zh.wikipedia.org/wiki/Chroot
chroot是在unix系统的一个操作,针对正在运作的软件行程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由chroot设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容。chroot这一特殊表达可能指chroot系统调用或chroot前端程序。
由chroot创造出的那个根目录,叫做“chroot监狱”(chroot jail,或chroot prison)。

5.4 在chroot中使用图形界面

在chroot环境中使用图形界面是可能的,参见以下几个方案:

  • xhost (or copy the secret from .Xauthority) https://wiki.archlinux.org/index.php/Xhost
  • 使用内置像Xnest这样嵌套的X服务,或更现代的Xephyr(或者在监牢中启动真正的X服务)
  • 通过开启X11转发(X11 forwarding)的 SSH连接到chroot中(ssh -X)
  • 当一个X服务启动是设置为不监听tcp端口或没有可用的SSH服务器时,使用openroot
  • 通过一个X11 VNC服务,链接到在外环境的VNC客户端
  • xchroot 是chroot环境的扩展版本,为用户和Xorg/X11转发(socat/mount)

https://wiki.archlinux.org/index.php/Category:Virtualization
https://wiki.archlinux.org/index.php/Arch_Linux_VPS

6. termux-FAQ

https://wiki.termux.com/wiki/FAQ
什么是Termux?
Termux是Android的终端模拟器。由于存在大量可用的软件包,例如clang,ffmpeg,openssh,python,vim,它可以被认为更像是Linux发行版,而不仅仅是终端应用程序。
Termux不是操作系统或硬件仿真器。它与Android OS的其他部分共享相同的环境。为了更好地了解发生了什么,建议阅读以下文章:
维基百科:什么是终端模拟器 https://en.wikipedia.org/wiki/Terminal_emulator
Termux与Linux发行版有何不同 https://wiki.termux.com/wiki/Differences_from_Linux

6.1 如何访问Termux中的设备存储?

您需要向Termux应用程序授予存储权限。
打开Android设置,然后转到Apps>Termux>Permissions(权限),然后在菜单中切换存储权限。
也可以直接从Termux命令行请求此权限,只需执行: termux-setup-storage  并授予所请求的权限。

6.2 内部和外部存储

https://wiki.termux.com/wiki/Internal_and_external_storage
Termux有三种主要的存储类型:

  • App-private storage: 应用程序专用存储:放在 $HOME 中的文件,可从Termux内部使用(或明确选择时,例如,将文件附加到邮件时)。
  • Shared internal storage: 共享内部存储空间:设备中可供所有应用程序使用的存储空间。在Android 6.0上,这要求用户显式授予Termux的访问权限,以便Termux可以访问它。
  • External storage: 外部存储设备:存储在外部SD卡上。每个应用程序在外部SD卡上都有一个专用文件夹,它们之间的互换需要使用Termux中尚不可用的特殊API。

访问共享和外部存储
要访问共享和外部存储,您需要运行termux-setup-storage。然后,系统将提示您“允许Termux访问设备上的照片,媒体和文件”,这应该允许。

执行termux-setup-storage可以确保:

在Android 6.0或更高版本上运行时,对共享存储的权限将授予Termux。
在外部存储上创建了一个应用程序专用文件夹(如果存在外部存储)。
创建一个文件夹 $HOME/storage

~/storage
创建的 $HOME/storage 指向不同存储文件夹的符号链接:

 ~/storage/shared	所有应用之间共享存储的根。
 ~/storage/downloads	从例如系统浏览器下载的标准目录。
 ~/storage/dcim 	将设备安装为相机时,图片和视频的传统位置。
 ~/storage/pictures	放置用户可用图片的标准目录。
 ~/storage/music	在标准目录中,应将任何音频文件放置在用户的常规音乐列表中。
 ~/storage/movies	放置用户可用电影的标准目录。
 ~/storage/external	符号链接到外部存储上的Termux专用文件夹(仅当外部存储可用时)。

6.3 共享资料

https://wiki.termux.com/wiki/Sharing_Data
默认情况下,其他应用程序无法访问Termux主目录中存储的文件。这是Android本身的局限性。
解决方法是,您可以使用[termux-open] termux-tools软件包中的可用资源共享具有读取访问权限的文件。

$ termux-open -h
Usage: termux-open [options] path-or-url
Open a file or URL in an external app. 在外部应用程序中打开文件或URL。
  --send               if the file should be shared for sending  是否共享文件以进行发送
  --view               if the file should be shared for viewing (default)  是否共享文件以进行查看(默认)
  --chooser            if an app chooser should always be shown  是否始终显示应用选择器
  --content-type type  specify the content type to use  指定要使用的内容类型
$ termux-open hello.c

为了与标准Linux程序兼容,[xdg-open]符号链接到[termux-open]。

有时,读取访问权限还不够,您需要能够修改文件。这可以通过将所需文件存储在sdcard上来实现。
Android Lollipop应该可以立即使用, 但是,棉花糖及更高版本要求Termux应用程序请求读取/写入外部数据的权限。

termux-setup-storage 对话框弹出时运行并授予权限。
这将创建一个$HOME/storage目录,该目录带有指向sdcard各自路径的符号链接。

6.4 termux下的部分检测工具

https://cs.wikipedia.org/wiki/Termux#Dostupnost
Nmap, 它是一种收集信息并检测漏洞的工具。
SQLmap, 工具SQLMAP是一个来寻找弱点非常有用的工具,在该网站是由大量使用的黑客黑客,安全研究员。这取决于在大多数站点中发现的SQL漏洞。
Lazymux, sudo, Black Hydra, Hydra, Fl00d & Fl00d2, FB Brute Force, Infoga, Webdav, LANs.py,
RED HAWK, Metasploit, Ufonet, IPLoc, D-Tect, ReconDog, A-Rat, Meisha, Torshammer,
Kali NetHunter, Ngrok, DSSS, Weeman, Hash-Buster, Wifite 2, Ubuntu, Fedora,