组成部分
| 组成成分 | 描述 |
|---|---|
Bootloader 引导加载程序 | 一段用于引导启动过程以启动操作系统的代码。Parrot Linux 使用 GRUB 引导加载程序。 |
OS Kernel 操作系统内核 | 内核是操作系统的主要组件。它在硬件层面管理系统 I/O 设备的资源。 |
Daemons 守护进程 | 后台服务在 Linux 中被称为“守护进程”。其目的是确保调度、打印和多媒体等关键功能正常工作。这些小程序在我们启动或登录电脑后才加载。 |
OS Shell 操作系统壳 | 操作系统壳层或命令语言解释器(也称为命令行)是操作系统与用户之间的接口。该界面允许用户告诉操作系统该做什么。最常用的贝壳有 Bash、Tcsh/Csh、Ksh、Zsh 和 Fish。 |
Graphics server 图形服务器 | 这提供了一个称为“X”或“X-server”的图形子系统(服务器),允许图形程序在 X 窗口系统上本地或远程运行。 |
Window Manager 窗口管理器 | 也称为图形用户界面(GUI)。有很多选择,包括 GNOME、KDE、MATE、Unity 和 Cinnamon。桌面环境通常包含多个应用程序,包括文件浏览器和网页浏览器。这些功能允许用户访问和管理操作系统中重要且频繁访问的功能和服务。 |
Utilities 实用程序 | 应用程序或实用工具是为用户或另一个程序执行特定功能的程序。 |
文件系统
| Path 路径 | Description 描述 |
|---|---|
/ | 顶层目录是根文件系统,包含在挂载其他文件系统之前启动操作系统所需的全部文件,以及启动其他文件系统所需的文件。启动后,所有其他文件系统都作为根的子目录挂载到标准挂载点。 |
/bin | 包含必要的命令二进制文件。 |
/boot | 由静态引导加载程序、内核可执行文件以及启动 Linux 操作系统所需的文件组成。 |
/dev | 包含设备文件,以方便访问系统上连接的每个硬件设备。 |
/etc | 本地系统配置文件。已安装应用程序的配置文件也可能保存在这里。 |
/home | 系统中的每个用户都有一个用于存储的子目录。 |
/lib | 系统启动所需的共享库文件。 |
/media | USB 驱动器等外部可移动媒体设备挂载在这里。 |
/mnt | 常规文件系统的临时挂载点。 |
/opt | 可选文件,如第三方工具,可以保存在这里。 |
/root | root 用户的家目录。 |
/sbin | 此目录包含用于系统管理(二进制系统文件)的可执行文件。 |
/tmp | 操作系统和许多程序使用此目录来存储临时文件。此目录通常在系统启动时被清除,并在其他时间可能未经警告就被删除。 |
/usr | 包含可执行文件、库文件、man 文件等。 |
/var | 此目录包含各种数据文件,如日志文件、电子邮件收件箱、Web 应用程序相关文件、cron 文件等。 |
SHELL简介
Linux 终端,也称为 shell 或命令行,为用户提供了一个基于文本的输入/输出(I/O)界面,用于与计算机系统的内核进行交互。该术语通常也指代“控制台”,但这里指的是文本模式下的屏幕,而不是窗口。在终端窗口中,可以执行命令来控制系统。
我们可以将 shell 视为一个基于文本的 GUI,在其中我们输入命令来执行导航到其他目录、处理文件以及从系统中获取信息等操作,但功能远不止这些。
终端模拟器
终端仿真软件是模拟终端功能的软件。它允许在图形用户界面( GUI )中使用基于文本的程序。还存在所谓的命令行界面( CLI ),它们作为附加终端在一个终端中运行。简而言之,终端是 shell 解释器的一个接口。
现在,假设你正在远程工作。终端仿真软件就像你电脑屏幕上的虚拟接待台(GUI),让你能够在不实际在办公室的情况下与服务器室进行交互。它仿真了实际接待台的功能,使你能够在图形环境中使用基于文本的程序和命令。
此外,在单个终端内运行的 command-line interfaces ( CLI )作为额外的终端,就像在屏幕上同时打开了多个虚拟接待台。每一个都允许你独立地向服务器室发送不同的指令,但通过同一个主界面。本质上,终端充当了你的网关,让你能够与由 shell 管理的核心操作进行通信和控制。
Linux 中最常用的 shell 是 Bourne-Again Shell ( BASH ),它是 GNU 项目的组成部分。通过图形用户界面(GUI)完成的一切操作,我们都可以通过 shell 来完成。shell 给我们提供了更多与程序和进程交互的可能性,从而更快地获取信息。此外,许多进程可以通过小型或大型脚本轻松实现自动化,从而大大简化了手动工作。
提示符
Bash 提示符很简单,默认情况下,它会显示用户名(你是谁)、计算机名称(主机名)以及当前正在工作的文件夹/目录等信息。它是一条显示在屏幕上的文本行,告诉你系统已准备好接收你的指令。提示符会出现在新的一行上,光标(闪烁的线或框)会紧随其后,等待你输入命令。
它可以被自定义以向用户提供有用的信息。格式可能看起来像这样:
<username>@<hostname><current working directory>$
家目录
用户的家目录用波浪号 ~ 标记,并且是登录时的默认文件夹。
<username>@<hostname>[~]$
管理员身份
在这种情况下,美元符号代表用户。一旦我们以 root 登录,字符会变为 hash # ,看起来像这样:
root@htb[/htb]#
Unprivileged - User Shell Prompt
无特权 - 用户 Shell 提示
$
Privileged - Root Shell Prompt
特权 - 根 Shell 提示
#
外观控制
Linux 系统中的 PS1 变量控制终端中命令提示的外观。它就像一个模板,定义了每次系统准备好让您输入命令时您看到的文本。通过自定义 PS1 变量,您可以更改提示以显示用户名、计算机名称、当前文件夹等信息,甚至可以添加颜色和特殊字符。这使您能够个性化命令行界面,使其更具信息量或视觉吸引力。
除了显示用户名和当前文件夹等基本信息外,您还可以自定义命令提示符以显示其他有用信息,例如 IP 地址、日期、时间和最后一个命令的成功或失败状态。这种自定义在渗透测试期间特别有帮助,因为它允许您更有效地跟踪您的操作。例如,您可以设置提示符显示当前工作目录的完整路径,而不仅仅是其名称,如果需要,还可以包含目标的 IP 地址。使用 script 等工具或查看 .bash_history 文件(位于用户的主目录中),您可以记录所有已使用的命令,并按日期和时间进行组织,这有助于文档记录和分析。
| 特殊符号 | 描述 |
|---|---|
\d | 日期(Mon Feb 6) |
\D{%Y-%m-%d} | 日期 (YYYY-MM-DD) |
\H | 完整主机名 |
\j | shell 管理的作业数量 |
\n | 换行符 |
\r | 回车符 |
\s | shell 的名称 |
\t | 当前时间 24 小时制(HH:MM:SS) |
\T | 当前时间 12 小时制(HH:MM:SS) |
\@ | 当前时间 |
\u | 当前用户名 |
\w | 当前工作目录的完整路径 |
自定义提示符是一个让您的终端体验更加个性化和高效的有用方法。它还可以是一个有助于故障排除和解决问题的工具,因为它可以在任何时候提供有关系统状态的重要信息。
除了自定义提示符外,我们还可以通过不同的配色方案、字体和其他设置来自定义他们的终端环境,使他们的工作环境更具视觉吸引力且更易于使用。
然而,我们在处理 Windows GUI 时看到了相同的情况。我们以用户身份登录到一台具有特定名称的计算机上,并且在浏览系统时我们知道自己所在的目录。Bash 提示符也可以根据我们的需要进行自定义和更改。调整 bash 提示符的范围不在此模块内。然而,我们可以查看 bash-prompt-generator 和 powerline,它们为我们提供了根据需求调整提示符的可能性。
系统信息
uname
获取所有信息
运行 uname -a 将会按照特定顺序打印机器的所有信息:内核名称、主机名、内核版本、内核发布版本、机器硬件名称以及操作系统。如果 -p (处理器类型)和 -i (硬件平台)未知, -a 标志将省略它们。
Linux box 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
获取内核版本
运行uname -r会