大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在你掌握Kali Linux之前,你必须能很容易地操作通用的Linux系统。熟练掌握Linux将会对你很有帮助,因为大部分Web,Email和其他的因特网服务都运行在Linux服务器上。
目前成都创新互联已为上1000+的企业提供了网站建设、域名、虚拟空间、网站运营、企业网站设计、呼伦贝尔网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在本节,我们将尽可能覆盖Linux的基础,但我们假设你已经了解计算机的一般知识,包括CPU、RAM、主板和硬盘,还包括设备控制器和与其相关的连接器等。
3.1 Linux是什么?能做什么?
术语“Linux”通常用来指整个操作系统,但实际上,Linux指的是操作系统内核,由引导装载器启动,而引导装载器由BIOS/UEFI自启动。内核扮演的角色类似于管弦乐队中的指挥——他确保硬件和软件之间的协调。该角色包括管理硬件、进程、用户、权限和文件系统。内核为系统上的所有其它程序提供了一个通用基础,通常运行在Ring 0,也称为内核空间。
用户空间:我们用术语“用户空间”来指发生在内核之外的所有组合在一起的事情。
在用户空间中运行的程序 有许多来自GNU项目的核心实用程序,其中大多数都是从命令行运行的。你可以在脚本中使用它们来自动化执行许多任务。详细信息请参见3.4节。
让我们来快速看一下由Linux内核处理的各种任务。
3.1.1 驱动硬件
内核的任务中首当其冲的就是控制计算机的硬件。当计算机开机时,或者当设备插入或移除(例如,USB设备)时,内核检测并配置它们。内核还要通过简单的编程接口,让其对上层软件有效,从而应用程序才能在不用关心设备细节(比如插入了哪一个扩展插槽等)的情况下使用这些设备。编程接口相当于提供了一个抽象层,举个例子,这就允许视频会议软件可以在不用关心摄像头的制造商和型号的情况下就能使用它。软件能使用针对Linux的视频(V4L)接口,内核会把对于接口的调用转换成所使用摄像头所需的实际硬件命令。
内核把所检测到硬件的数据通过/proc/和/sys/虚拟文件系统导出。应用程序通常通过创建/dev/文件来访问这些设备。具体的文件表示硬盘驱动器(例如,/dev/sda),分区(/dev/sda1),鼠标(/dev/input/mouse0),键盘(/dev/input/event0),声卡(dev/snd/*),串口(/dev/ttyS*)和其它的组件。
有两种类型的设备文件:块和字符。前者具有一大块数据的特征:其具有有限的大小,你能访问这块数据中任何位置上的字节数据。后者的行为像一个一串字符,你能读写这些字符,但你不能定位到给定的位置并任意改写它。要找出给定设备文件的类型,检查命令ls –l输出结查的第一个字符。对于块设备,第一个字符是b,而对于字符设备,第一个字符是c:
如你所料,磁盘驱动器和分区使用块设备,而鼠标、键盘和串口使用字符设备。在这两种情况下,编程接口都包括可以通过ioctl系统调用进行调用的设备特定命令。
3.1.2 统一文件系统
文件系统是内核突出的一方面。类UNIX系统把所用的文件存储都合并到单一的分层中,这就能让用户和应用程序通过已知的所在层次的位置来访问数据。
这个分层树的起点叫做根,用字符”/”表示。这个目录可以包含命名的子目录。例如,/的home子目录叫做/home/。相应地,这个子目录也可以包含其它的子目录,以此类推。每个目录还能包含用于数据存储的文件。因此,/home/buxy/Desktop/hello.txt表示一个文件名为hello.txt,存储在根目录下home子目录下的buxy目录下的Desktop子目录中文件。内核会在命名系统和磁盘上存储位置之间进行转换。
不像其它系统,Linux只处理这么一个层次结构,而且它还能把多个磁盘的数据集成到一起。这些磁盘中的一块会成为根,其它的磁盘会挂载在这引层次结构中的目录中(挂载的命令叫mount)。这样,在挂载点下,这些磁盘就可以使用了。这就允许把用户的主目录(通常存储在/home/中)存储在一个独立的硬盘中,这个硬盘包含了buxy目录(还有其它用户的目录)。一旦你把这个硬盘挂载在/home/中,这些目录就可以通过常规的方式进行访问了,比如前面的例子/home/buxy/Desktop/hello.txt。
对于存储在硬盘上的数据,有多种文件系统格式与之相对应。最为广泛使用的是ext2,ext3,ext4文件系统格式,当然还有其它的。例如,VFAT是历史上由DOS和Windows操作系统使用的文件系统。Linux对VFAT文件系统的支持允许硬盘在Kali下与在Windows中一样可以访问。无论如何,在你可以挂载一个硬盘之前,你必须准备一个文件系统,这个操作就是格式化。比如命令mkfs.ext3(mkfs代表Make FileSystem)就把硬盘格式化成ext3文件系统格式。这些命令要求一个表示将要进行格式化的分区的设备文件参数(比如,/dev/sda1,第一块硬盘的第一个分区)。这个操作对于数据来讲是毁灭性的,因此一般只运行一次,除非你想擦除文件系统重新开始。
还用诸如NFS之类的网络文件系统,它们不把数据存储在本地硬盘,作为替换,数据通过网络传输到服务器,并按需存储和取回这些数据。得益于文件系统抽象,你不用担心这些磁盘是如何连接的,因此这些文件仍然按常规的层次结构进行访问。
3.1.3 进程管理
进程是程序运行的实例,它需要内存在存储程序本身及其操作的数据。内核负责创建和跟踪进程。当程序运行时,内核首先留出一些内存,将可执行代码从文件系统加载到内存中,然后开始运行代码。内核保存关于此进程的相关信息,其中最明显的是一个名为进程标识符(PID)的标识号。
和大多数现代操作系统一样,那些拥有类Unix内核的操作系统,包括Linux,能够处理多个任务。换句话说,它们允许系统同时运行多个进程。实际上,在任何时候都只有一个正在运行的进程,但是内核将CPU时间划分成小块,然后依次运行每个进程。由于这些时间片非常短(毫秒范围内),制造了多个进程并行运行的假像,这些进程只在属于它们自己的时间片内处于活动状态,其它时间都处于空闲状态。内核的工作是调整其调度机制以保持这些并行运行的状态,同时最大化全局系统性能。如果时间片太长,则应用程序可能不会出现所需的响应。太短,系统会因为频繁切换任务而浪费时间。这些决策可以通过进程优先级来细化,高优先级的进程将运行更长的周期,并且比低优先级的进程更频繁地进行时间片的划分。
多处理器系统:如上所述的限制,一次只运行一具进程,并不总是适用的:实际的限制是每个处理器核心只能有一个正在运行的进程。多处理器、多核或超线程系统允许多个进程并行运行。然而,同样的时间切片系统被用来处理活动进程数量比有效处理器核多的情况。这并不常风:一个基本的系统,即使是一个大部分空闲的系统,通常也总有数十个正在运行的进程。
内核允许运行同一程序的多个独立实例,但每个实例只允许访问自己的时间片和内存。它们的数据也是独立的。
3.1.4 权限管理
类Unix的系统支持多用户和组,并允许权限控制。大多数情况下,进程由启动它的用户来标识。这一进程只允许干启动它的用户所拥有权限能干的事。例如,打开一个文件需要内核根据访问权限检查进程标识(更多细节,请参见3.4.4节)。