htb学院 htb学院linux基础

Linux结构

历史

从 1970 年 Ken Thompson 和 Dennis Ritchie(他们当时都在 AT&T 工作)发布 Unix 操作系统开始,许多事件导致创建了第一个 Linux 内核,并最终创建了 Linux 操作系统 (OS)。伯克利Software Distribution (BSD) 于 1977 年发布,但由于其中包含 AT&T 拥有的 Unix 代码,由此引发的诉讼限制了 BSD 的发展。Richard Stallman 于 1983 年启动了 GNU 项目。他的目标是创建一个免费的类 Unix 操作系统,他的部分工作促成了 GNU 通用公共许可证 (GPL) 的创建。多年来其他人的项目未能产生一个有效的、免费的内核,该内核在 Linux 内核创建之前被广泛采用。

起初,Linux 是一个个人项目,由一位名叫 Linus Torvalds 的芬兰学生于 1991 年开始。他的目标是创建一个新的、免费的操作系统内核。多年来,Linux 内核已经从少量使用 C 语言编写的文件,根据禁止商业分发的许可,发展到拥有超过 2300 万行源代码(不包括注释)的最新版本,并根据 GNU 通用公共许可证 v2 获得许可。

Linux 可用于 600 多个发行版(或基于 Linux 内核和支持软件和库的操作系统)。一些最流行和最著名的是 Ubuntu、Debian、Fedora、OpenSUSE、elementary、Manjaro、Gentoo Linux、RedHat 和 Linux Mint。

Linux 通常被认为比其他操作系统更安全,虽然它过去有很多内核漏洞,但现在越来越少。与 Windows 操作系统相比,它不易受到恶意软件的影响,并且更新非常频繁。Linux 也非常稳定,通常可以为最终用户提供非常高的性能。但是,对于初学者来说可能更难,并且没有像 Windows 那样多的硬件驱动程序。

由于 Linux 是免费和开源的,因此任何人都可以修改源代码并以商业或非商业方式分发。基于 Linux 的操作系统运行在服务器、大型机、台式机、嵌入式系统(如路由器、电视、视频游戏机等)上。在智能手机和平板电脑上运行的整体 Android 操作系统基于 Linux 内核,因此,Linux 是安装最广泛的操作系统。

Linux 是类似于 Windows、iOS、Android 或 macOS 的操作系统。操作系统是管理与我们计算机相关的所有硬件资源的软件。这意味着操作系统管理软件和硬件之间的整个通信。此外,存在许多不同的发行版(distro)。它就像是 Windows 操作系统的一个版本。

通过交互式实例,我们可以访问 Parrot OS 的定制版本 Pwnbox。这将是我们将通过模块使用的主要操作系统。Parrot OS 是一个基于 Debian 的 Linux 发行版,专注于安全、隐私和开发。

哲学

Linux 遵循五个核心原则:

原则 描述
Everything is a file Linux操作系统上运行的各种服务的所有配置文件都存储在一个或多个文本文件中。
Small, single-purpose programs Linux 提供了许多不同的工具供我们使用,它们可以组合在一起工作。
Ability to chain programs together to perform complex tasks 不同工具的集成和组合使我们能够执行许多大型和复杂的任务,例如处理或过滤特定数据结果。
Avoid captive user interfaces Linux 设计为主要与 shell(或终端)一起工作,这使用户可以更好地控制操作系统。
Configuration data stored in a text file 此类文件的一个示例是文件/etc/passwd,该文件存储在系统上注册的所有用户。

成分

成分 描述
Bootloader 运行的一段代码,用于引导引导过程启动操作系统。Parrot Linux 使用 GRUB 引导程序。
OS Kernel 内核是操作系统的主要组成部分。它在硬件级别管理系统 I/O 设备的资源。
Daemons 后台服务在 Linux 中称为“守护进程”。他们的目的是确保计划、打印和多媒体等关键功能正常运行。这些小程序在我们启动或登录计算机后加载。
OS Shell 操作系统外壳或命令语言解释器(也称为命令行)是操作系统与用户之间的接口。该接口允许用户告诉操作系统要做什么。最常用的 shell 是 Bash、Tcsh/Csh、Ksh、Zsh 和 Fish。
Graphics server 这提供了一个称为“X”或“X-server”的图形子系统(服务器),它允许图形程序在本地或远程在 X-windowing 系统上运行。
Window Manager 也称为图形用户界面 (GUI)。有很多选项,包括 GNOME、KDE、MATE、Unity 和 Cinnamon。桌面环境通常有多个应用程序,包括文件和网络浏览器。这些允许用户访问和管理操作系统的基本和经常访问的功能和服务。
Utilities 应用程序或实用程序是为用户或其他程序执行特定功能的程序。

Linux架构

Linux 操作系统可以分为几层:

描述
Hardware 外围设备,例如系统的 RAM、硬盘驱动器、CPU 等。
Kernel Linux 操作系统的核心,其功能是虚拟化和控制常见的计算机硬件资源,如 CPU、分配的内存、访问的数据等。内核为每个进程提供自己的虚拟资源,并防止/减轻不同进程之间的冲突。
Shell 命令行界面 ( CLI ),也称为 shell,用户可以在其中输入命令以执行内核的功能。
System Utility 使用户可以使用操作系统的所有功能。

文件系统层次结构

Linux 操作系统采用树状层次结构,并记录在文件系统层次结构标准 (FHS) 中。Linux 由以下标准顶级目录构成:

小路 描述
/ 顶级目录是根文件系统,包含在挂载其他文件系统之前启动操作系统所需的所有文件,以及启动其他文件系统所需的文件。启动后,所有其他文件系统都作为根目录的子目录安装在标准安装点。
/bin 包含必要的命令二进制文件。
/boot 由静态引导加载程序、内核可执行文件和引导 Linux 操作系统所需的文件组成。
/dev 包含设备文件以方便访问连接到系统的每个硬件设备。
/etc 本地系统配置文件。已安装应用程序的配置文件也可以保存在这里。
/home 系统上的每个用户在这里都有一个子目录存放。
/lib 系统启动所需的共享库文件。
/media 外部可移动媒体设备(例如 USB 驱动器)安装在此处。
/mnt 常规文件系统的临时挂载点。
/opt 第三方工具等可选文件可以保存在这里。
/root 根用户的主目录。
/sbin 该目录包含用于系统管理的可执行文件(二进制系统文件)。
/tmp 操作系统和许多程序使用此目录来存储临时文件。该目录通常在系统启动时被清除,并且可能会在其他时间被删除而不会发出任何警告。
/usr 包含可执行文件、库、man 文件等。
/var 此目录包含可变数据文件,例如日志文件、电子邮件收件箱、Web 应用程序相关文件、cron 文件等。

Linux发行版

Linux发行版是基于Linux内核的操作系统。它们被用于各种用途,从服务器和嵌入式设备到台式电脑和移动电话。每个Linux发行版都是不同的,有自己的一组特性、包和工具。一些流行的例子包括:

许多用户选择Linux作为他们的桌面计算机,因为它是免费的、开源的和高度可定制的。Ubuntu和Fedora是桌面Linux和初学者的两个流行选择。

它也被广泛用作服务器操作系统,因为它安全、稳定、可靠,并提供频繁和定期的更新。

最后,作为网络安全专家,我们通常更喜欢Linux,因为它是开源的,这意味着它的源代码可供审查和定制。由于有了这样的定制,我们可以按照我们想要的方式优化和定制我们的Linux发行版,并仅在必要时为特定的用例配置它。

我们可以在任何地方使用这些发行版,包括(web)服务器、移动设备、嵌入式系统、云计算和桌面计算。对于网络安全专家来说,一些最流行的Linux发行版包括但不限于:

ParrotOS Ubuntu Debian
Raspberry Pi OS CentOS BackBox
BlackArch Pentoo

不同Linux发行版之间的主要区别是包含的包、用户界面和可用的工具。Kali Linux是最受网络安全专家欢迎的发行版,包括各种以安全为重点的工具和包。Ubuntu广泛应用于桌面用户,而Debian则流行于服务器和嵌入式系统。最后,红帽企业Linux和CentOS在企业级计算中很流行。

Debian

Debian是一个广泛使用和备受尊敬的Linux发行版,以其稳定性和可靠性而闻名。它被用于各种用途,包括桌面计算、服务器和嵌入式系统。它使用高级包工具(apt)包管理系统来处理软件更新和安全补丁。软件包管理系统通过在安全更新可用时自动下载和安装安全更新来帮助保持系统最新和安全。这可以手动执行,也可以自动设置。

Debian的学习曲线可能比其他发行版更陡峭,但它被广泛认为是最灵活和可定制的Linux发行版之一。配置和设置可能很复杂,但它也提供了对系统的出色控制,这对高级用户很有好处。我们对Linux系统的控制越多,它就会变得越复杂。然而,与我们获得的选择和可能性相比,这只是一种感觉。如果不深入地学习它,我们可能会花更多的时间配置“简单”的任务和流程,而不是更深入地学习使用一些命令和工具。我们将在筛选内容和查找文件和目录部分看到它。

稳定性和可靠性是Debian的关键优势。该发行版以其长期支持版本而闻名,它可以提供长达五年的更新和安全补丁。这对于必须全天候运行的服务器和其他系统尤其重要。它有一些漏洞,但开发社区已经迅速发布了补丁和安全更新。此外,Debian在安全和隐私方面有很强的承诺,并且该发行版有良好的安全记录。Debian是一种多功能、可靠的Linux发行版,广泛用于各种目的。其稳定性、可靠性和对安全性的承诺使其成为各种用例(包括网络安全)的有吸引力的选择。

Shell简介

学习如何使用Linux shell是至关重要的,因为有许多基于Linux的服务器。它们经常被使用,因为与Windows服务器相比,Linux更不容易出错。

例如,web服务器通常基于Linux。要知道如何使用操作系统来有效地控制它,就需要理解和掌握Linux的基本部分——Shell。当我们第一次从Windows切换到Linux时,它看起来像这样吗:

Linux终端,也称为shell或命令行,为计算机系统的用户和内核之间提供基于文本的输入/输出(I/O)接口。术语控制台也是典型的,但不是指窗口,而是指文本模式下的屏幕。在终端窗口中可以执行命令对系统进行控制。

我们可以把shell看作是一个基于文本的GUI,我们在其中输入命令来执行诸如导航到其他目录、处理文件以及从系统获取信息等操作,但是它具有更多的功能。

Terminal Emulators

​ 终端仿真是模拟终端功能的软件。它允许在图形用户界面(GUI)中使用基于文本的程序。还有所谓的命令行接口(CLI),它们作为一个终端中的附加终端运行。简而言之,终端充当shell解释器的接口。

​ 终端仿真器和多路复用器是对终端有益的扩展。它们为我们提供了不同的方法和函数来使用终端,例如将终端拆分为一个窗口、在多个目录中工作、创建不同的工作空间等等。使用这种名为Tmux的多路复用器的示例如下所示:

Shell

Linux中最常用的shell是’ Bourne-Again shell ‘ (‘ BASH ‘),它是GNU项目的一部分。我们通过GUI所做的一切都可以用shell来完成。shell为我们提供了更多与程序和进程交互的可能性,从而更快地获取信息。此外,许多流程可以通过更小或更大的脚本轻松地实现自动化,从而使手工工作更加容易。

除了Bash,还存在其他shell,如Tcsh/CshKshZshFish shell等。

Prompt Description

bash 提示符易于理解,默认情况下包括用户、主机名和当前工作目录等信息。它是终端屏幕上显示的一串字符,表明系统已准备好接受我们的输入。它通常包括当前用户、计算机的主机名和当前工作目录等信息。提示符通常换行显示,光标位于提示符之后,准备好让用户开始输入命令。

它可以被定制以向用户提供有用的信息。格式看起来像这样:

1
<username>@<hostname><current working directory>$

用户的主目录用波浪号 < ~> 标记,是我们登录时的默认文件夹。

1
<username>@<hostname>[~]$

在这种情况下,美元符号代表用户。一旦我们以 身份登录root,字符就会变为hash< #>,如下所示:

1
root@htb[/htb]#

例如,当我们在目标系统上上传并运行 shell 时,我们可能看不到用户名、主机名和当前工作目录。这可能是由于环境中的 PS1 变量设置不正确所致。在这种情况下,我们会看到以下提示:

非特权 - 用户 Shell 提示符

1
$

特权 - Root Shell 提示符

1
#

​ 除了提供当前用户和工作目录等基本信息外,我们还可以自定义在提示符中显示其他信息,例如日期和时间、IP 地址、日期、时间、上一条命令的退出状态等。

​ 这在我们的渗透测试期间对我们特别有用,因为我们可以使用各种工具和可能性,如script或 来.bash_history过滤和打印我们使用的所有命令,并按日期和时间对它们进行排序。

例如,可以将提示设置为显示当前工作目录的完整路径,而不仅仅是当前目录名称,如果我们有条理地工作,它还可以包括目标的 IP 地址。

可以使用 shell 配置文件(.bashrc对于 Bash shell)中的特殊字符和变量来自定义提示。例如,我们可以使用:\u字符来表示当前用户名,\h对于主机名,\w对于当前工作目录。

特殊字符 描述
\d 日期(2 月 6 日星期一)
`\D

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏