光速入门linux,把玩linux的常用命令行
光速入门linux,把玩linux的常用命令行
linux操作系统的简单概述
Linux 是一种开源的类 Unix 操作系统,最初由芬兰程序员林纳斯·托瓦兹(Linus Torvalds)于 1991 年开发。Linux 是一个功能强大、灵活且安全的操作系统,从个人电脑到大型服务器和嵌入式设备。拥有开源、多用户和多任务、稳定性和安全性、丰富的发行版、强大的命令行和社区支持的特点。由于其开源特性,Linux 也促进了技术的创新和共享。目前主要用于服务器、嵌入式系统、桌面开发、开发环境。
学习准备工作
虚拟机的下载
由于我们电脑一般都是windows操作系统,所以要在windows使用linux的操作系统需要配合使用虚拟机
镜像的安装
虚拟机需要操作系统的镜像才能使用,所以需要到对应的官网里下载linux操作系统的镜像。这里我提一嘴,如果你在官网里下载的是zip文件,那个是已经配置好的系统存档(配置无法更改),而iso文件才是镜像文件。
如果你想要下载linux镜像,推荐文章
Linux镜像最全版本下载网站_linux系统下载-CSDN博客
我自己更加推荐使用kali,因为kali附带了许多工具与环境,比其他的更加方便,如果想要用kali,推荐文章
【基础教学】保姆级手把手教学使用VMware安装kali虚拟机-CSDN博客
安装系统的时候也可以选择已经预设好的系统存档压缩包,这样可以不用自己进行许多麻烦的操作
远程登录linux
windows
使用基于windows工具xshell实现远程登录,点击跳转xshell官网
Linux
如果你想在 Linux 中使用类似的功能,可以考虑使用以下工具:
SSH 客户端:大多数 Linux 发行版都自带 SSH 客户端,可以通过终端直接使用
ssh
命令连接到其他服务器。终端模拟器:Linux 中有很多终端模拟器,如 GNOME Terminal、Konsole、xterm 等,可以用来执行命令和管理系统。
- 其他 SSH 客户端:如果需要图形界面的 SSH 客户端,可以考虑使用 Remmina 或 Terminator 等工具。
用户和用户组配置文件
用户账号文件/etc/passwd
概述:用户账号信息(密码除外)都保存在/etc/passwd文件中,所有用户都可以查看此文件的东西
1 | cat /etc/passwd |
每一行代表一个用户的账号资料
1 | 用户名:密码:UID:GID:用户描述信息:用户主目录:登录shell |
用户影子文件/etc/shadow
概述:/etc/shadow文件是根据/etc/passwd产生,用户密码经过加密存放在此文件夹中,此文件夹只能由root用户查看
1 | cat /etc/shadow |
每一行代表一个用户的信息
1 | 用户名:密码:最后修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 |
用户默认配置文件/ect/login.defs
概述:比前面几个显示更加详细的用户信息
1 | cat /etc/login.defs |
用户组账号文件 /etc/group
概述:用于保存用户组信息,所有用户都可以查看
1 | cat /etc/group |
每一行代表一个用户组信息
1 | 用户组名称:用户组密码:GID:用户成员列表 |
用户管理命令
注意:任何命令都可以后面接
--help
,这个可以告诉你这个命令可以接那些选项
添加用户命令useradd
概述:在系统中创建一个新的账号,并通过选项为账号设置用户名称、用户组、主目录、登录shell等基本信息(可不添加)
1 | useradd 选项 用户名 |
设置用户密码命令passwd
概述:为新账户添加密码或者修改密码,过程密码不显现,并且需要输入两次
1 | passwd 选项 用户名 |
修改用户名命令usermod
概述:修改用户信息,如用户ID、主目录、用户组、登录shell。
1 | usermod 选项 参数 |
删除用户命令userdel
概述:若一个账户不在使用,可以用该命令进行删除
1 | userdel 选项 用户名 |
用户临时禁用与恢复
概述:临时禁用一个用户而不删除
禁用操作如下,操作后重启生效
1 | passwd -l 用户名 |
恢复操作如下
1 | passwd -u 用户名 |
用户切换命令
su命令
概述:su命令切换用户是最简单的方式
1 | su 选项 用户名 |
普通用户切换root用户直接使用su命令就行(需要输入root密码),此外都需要在后面添加用户名
sudo命令
概述:相较与su而言,免去了切换root用户的输入密码的流程,需要在/etc/sudoers文件里添类似root ALL=(ALL) ALL
的内容
实例:
1 | itheima ALL=(root) /bin/more |
注意:ALL是个特殊的关键字,表示任何主机、身份与命令
用户组管理命令
查看用户所属的组命令gronps
概述:命令后面直接接个用户名即可查看用户的所有组,查询root用户的所属组可以省略用户名
1 | groups 用户名 |
创建用户组命令groupadd
概述:用于添加用户组
1 | groupadd 选项 参数 |
修改用户组命令groupmod
概述:修改用户组的属性,如GID、用户组名称等
1 | groupmod 选项 用户组 |
删除用户组命令groupdel
概述:命令接用户组名称,删除一个用户组
1 | groupdel 用户组名称 |
管理用户组中的用户命令gpasswd
概述:将某个用户添加到某个用户组里,或者将某个用户从某个用户组里删除
1 | groupwd 选项 用户名 用户组 |
liunx文件系统
概述:文件系统规定了数据在磁盘上的组织储存方式
,也规定了系统的访问数据的方式
,linux操作系统常用的文件操作系统包括ext3、ext4和xfs
linux目录结构
概述:目录结构是磁盘等储存设备上文件的组织形式。windows操作系统以磁盘为树状组织结构的根节点;liunx操作系统则只有一个树状结构
RHEL常用目录
/:根目录,只含目录,不放文件
/etc:主要用于存储系统或软件的管理文件和配置文件
/bin:用于存储可执行文件
/home:普通用户的工作目录
/usr:用于存储用户程序(/usr/bin)、库文件(/usr/lib)、文档(/usr/share/doc)
/root:超级用户工作目录
/lib:用于存储动态链接共享库文件
/boot:用于存储操作系统启动时所需要的文件
/mnt:用于存储挂载存储设备的挂载目录
/proc:用于存储系统内存的映射,可以直接通过访问/proc目录下的文件获取系统信息
/opt:用于存储附加的应用程序软件包
/tmp:用于存储临时文件,重启系统,该目录下的文件就会被清除
/swap:用于存储虚拟内存交换时所用文件
访问路径
绝对路径:以根目录“/”为起点,表示系统中某个/目录的位置。例如/home/itheima/file/a.txt
相对路径:以当前目录为起点,表示系统中某个文件/目录的位置。用户在/home/itheima目录下,相对路径即为file/a.txt
liunx文件类型
文件类型
普通文件:文件属性用-开头
目录文件:文件属性用d开头
设备文件:linux把每个设备都看成一个文件,设备文件一般存储在/dev目录下。字符设备文件属性用c开头,块设备文件属性用b开头
链接文件:文件属性用l开头
管道文件文:文件属性用p开头
套接字文件:文件属性用s开头
查看当前目录下文件类型
1 | ls -l |
目录操作命令
pwd命令
概述:查看当前工作目录
1 | pwd |
cd命令
概述:用于切换用户的工作目录
1 | cd 目录 |
ls命令
概述:用于列出参数的属性信息
1 | ls 选项 参数 |
常用选项:
不带选项可以查看当前目录
-a:显示当前目录下的全部文件(包括隐藏文件)
mkdir命令
概述:用创建目录
1 | mkdir 选项 参数 |
示例:
1 | ┌──(kali㉿kali)-[~] |
注意:创建多层目录的时候,需要带选项-p
rmdir命令
概述:用于删除目录
1 | rmdir [-p] 参数 |
示例:
1 | ┌──(kali㉿kali)-[~] |
注意:-p用于删除非空目录
文件内容显示命令
cat命令
概述:用于把文件内容打印到输出设备
1 | cat 选项 文件名 |
more命令
概述:分页查询文件内容
1 | more 选项 文件名 |
more命令常用快捷键
快捷键 | 说明 |
---|---|
f/Space | 显示下一页 |
Enter | 显示下一行 |
q/Q | 退出 |
less命令
概述:分页查询文件内容,并支持向上翻文件
1 | less 选项 文件名 |
less命令快捷键
快捷键 | 说明 |
---|---|
/字符串 | 向下搜索字符串 |
?字符串 | 向上搜索字符串 |
b或PageUp或⬆ | 向上翻页 |
d或pageDown或⬇ | 向下翻页 |
空格键 | 向下翻页 |
q | 退出 |
head命令
概述:用于查看文件的前n行内容(默认显示10行)
1 | head 选项 文件名 |
tail命令
概述:用于查看文件的后n行的内容
1 | tail 选项 文件名 |
文件查询命令
find命令
概述:可以通过关键字,从指定的目录开始递归搜索各各子目录查找符合条件的文件
1 | find 路径 选项 查询关键字 |
which命令
概述:用于搜寻可执行文件的位置
1 | which 命令 |
whereis命令
概述:与which命令相似,但它还可以查找帮助文档
1 | whereis 选项 命令 |
文件内容统计
概述:用于统计文件的字节数、字数和行数。
1 | wc 选项 文件名 |
wc常用选项
选项 | 说明 |
---|---|
-c | 统计指定文件中文件的字节数 |
-l | 统计指定文件中文件的行数 |
-w | 统计指定文件中文件的字数 |
文件的复制、移动、删除
文件复制命令cp
概述:用于将一个或多个文件复制到指定目录
1 | cp 选项 原文件或目录 目标文件或着目录 |
文件移动命令mv
概述:此命令有两个作用,一个用于重命名文件,第二个用于移动文件/目录到指定目录。
1 | mv 选项 文件/目录 目标文件/目录 |
mv命令常用选项
选项 | 说明 |
---|---|
-f | 强制移动文件或重命名文件 |
-i | 与-f相反,在移动文件或重命名文件之前给出提示 |
文件删除命令rm
概述:用于删除文件/目录
1 | rm 选项 文件/目录 |
示例:
1 | ┌──(kali㉿kali)-[~] |
文件更新(可新建文件)
概述:用于修改文件/目录文件的时间为系统时间,包括文件的存取时间和修改时间。如果不存在,则会创建一个新的文件
1 | touch 选项 文件名 |
示例:
1 | ┌──(kali㉿kali)-[~] |
文件压缩和解压
gzip命令与gunzip命令
概述:如下命令用于压缩文件,得到.gz文件。改命令对压缩文件不会保留原文件,且压缩多文件时,gzip命令只会对它们单独压缩
1 | gzip 选项 文件名 |
概述:如下命令用于解压.gz压缩包
1 | gunzip 选项 压缩包 |
示例:压缩并解压文件
1 | ┌──(kali㉿kali)-[~] |
查看压缩包内容
1 | zcat 压缩包 |
bzip2命令与bunzip命令
概述:如下命令用于压缩文件获得.bz2格式的压缩包,与gzip命令相比,此命令更加高效,且使用-k可以保留原文件
1 | bzip2 选项 文件名 |
概述:用于解压文件
1 | bunzip2 选项 压缩包 |
zip命令与unzip命令
概述:zip命令可以压缩文件获得.zip压缩包。使用该命令会保留原文件。多个文件需要压缩可以将它们压缩成一个压缩包
1 | zip 选项 压缩包名 文件名 |
概述:用于解压文件
1 | unzip 选项 压缩包名 |
文件打包命令tar
概述:用于把一个许多文件/目录打包成.tar格式文件包,但它不是一个压缩命令,打包之后的文件与原文件的大小相同。在压缩文件的时候,通常先用tar命令将文件打包,再使用gzip或者bzip2压缩命令
1 | tar 选项 包名 文件/目录 |
管理权限
概述:用户对文件/目录的访问权限可分为三种,分别是读、写、执行
字符表示法:
权限 | 对应字符 | 文件 | 目录 |
---|---|---|---|
读权限 | r | 可查看文件内容 | 可以列出目录的中内容 |
写权限 | w | 可修改文件内容 | 可以在目录中创建、删除文件 |
执行权限 | x | 可执行该文件 | 可以进入目录 |
数字表示法:
概述:在数字表示法中,用户对文件/目录的权限可以用个3位二进制数表示。如果用户具有某一个权限,则对应位置为1.否则为0。这样用户的访问权限就可以表示为一个3位的二进制数,其值最大为7,因此此可以看作为一个八进制数。(例如:文件的访问权限为rw-rw-r—,对应的数值表示法为110110100,则每三个一组,分别表示文件的所有者
、同组用户
和其他用户
的访问权限,转换为八进制本别为6、6、4,因此a.txt的访问权限为664。
chmod命令
采用字符方式更改文件/目录权限
1 | chmod 选项 a|U|g|o +|-|= modo 文件/目录 |
a|U|g|o表示用户:
- a:所有用户
- u:文件所有者
- g:同组用户
- o:其他用户
+|-|=表示权限的设置:
+:添加权限
-:取消权限
=:设置权限
modo表示所设置的权限,即读(r)、写(w)、执行(x)权限
采用数字方式更改文件/目录权限
1 | chmod 数值表示的权限 文件/目录 |
chown命令
概述:chown命令用于更改文件/目录的所有者。默认情况下,文件/目录的所有者为创建该文件/目录的用户,或者文件/目录被创建时指定的用户,但是,通过chown命令修改文件/目录的所有者
1 | chown 选项 用户 文件/目录 |
文件链接
概述:在linux操作系统中,每个文件都有一个i-node编号,文件内容由i-node节点中记录来指向。在访问文件内容时,通过文件名找到文件对应的i-node节点,根据i-node节点中的信息指示找到的存储文件数据的block数据块,从而完成文件数据的访问
硬链接
概述:硬链接就是给文件的i-node节点分配创建多个文件名,通过任何一个文件名都可以找到文件对应的i-node节点,进而找到存储文件数据的block数据块完成文件访问。
软链接
概述:软链接实际是个特殊的文件,其中定义了文件的信息,如文件位置、文件大小等。实质上软链接就是创建了一个新的i-node节点
文件链接管理命令In
1 | In 选项 原文件 链接文件 |
注意:使用-s表示添加软链接,不使用就是硬链接
使用vim编译器
vim编译器的启动、保存和退出
启动vim:vim启动是非常简单的,直接在命令行输入vim和文件名即可,如果文件存在,则是打开文件,否则系统就会创建一个新的文件,语句如下
1
Vim 文件名
保存和退出vim:当编辑文件之后需要保存的时候,在保存的时候使用
:wq
命令,再按一次Enter键即可保存文件并退出
vim编辑器工作模式
命令模式
概述:每次用vim打开文件,默认进入命令模式。在命令模式下,用户可以控制光标移动,对文本进行复制、粘贴、删除和查找等操作,但无法对文件执行手动的输入、修改等编辑操作。
注意:当处于编辑模式或者末行模式中,可以通过Esc键切换到命令模式
移动光标:
级别 | 命令快捷键 | 含义 |
---|---|---|
字符级 | ←或者h | 使光标向字符的左边移动 |
→或着l | 使光标向字符的右边移动 | |
单词级 | w | 使光标移动到下个单词的首字母 |
e | 使光标移动到本单词的尾字母 | |
b | 使光标移动本单词的首字母 | |
行级 | ↑或k | 使光标移动到上一行 |
↓或j | 使光标移动到下一行 | |
$ | 使光标移动到当前行尾 | |
0 | 使光标移动至当前行首 | |
段落级 | { | 使光标移至段落结尾 |
} | 使光标移至段落首部 | |
屏幕级 | H | 使光标移至屏幕首部 |
L | 使光标移至屏幕尾部 | |
文档级 | G | 使光标移至文档尾行 |
n+G | 使光标移至文档的第n行 |
复制和粘贴文本:
命令快捷键 | 含义 |
---|---|
yy | 复制光标当前所在行 |
n+yy | 复制n行内容(包括光标所在行) |
y+e | 从光标所在位置开始复制直到当前单词结尾 |
y+$ | 从光标所在位置开始复制直到当前行结尾 |
y+{ | 从当前段落开始的位置复制到光标所在位置 |
p | 将复制的内容粘贴到光标所在的位置 |
删除文本:
命令快捷键 | 含义 |
---|---|
x | 删除光标所在的字符 |
dd | 删除光标所在的当前行 |
n+dd | 删除包括光标所在行的后边n行内容 |
d+$ | 删除光标位置到行尾的所有内容 |
其他操作:
命令快捷键 | 含义 | 命令快捷键 | 含义 |
---|---|---|---|
u | 撤销命令 | J | 合并两行的内容 |
. | 重复执行上一个命令 | r+字符 | 快速替换光标所在字符 |
编辑模式
概述:编辑模式也称为输入模式,在该模式下,用户可以正常地输入、修改文件内容。编辑模式可由命令模式进入,在命令模式下按i、a、o或s等快捷键可以进入编辑模式,这些快捷键大小写均可以切换到编辑模式,只是切换作用不同。
命令快捷键 | 含义 | 命令快捷键 | 含义 |
---|---|---|---|
i | 光标定位到字符之前 | o | 在本行下面新插入一行 |
I | 光标定位到本行行首 | O | 在本行上面新插入一行 |
a | 光标定位到字符之后 | s | 删除光标所在处的字符 |
A | 光标定位到本行行尾 | S | 删除光标所在的整行文本 |
末行模式
概述:所谓末行模式,就是在文件最后一行输入命令完成一定的操作。末行模式主要用于保存或不保存并退出,以及设置vim编辑器的工作环境。在命令模式下输入:
符号可以切换到末行模式。
命令快捷键 | 含义 |
---|---|
:q | 退出vim编辑器 |
:wq | 保存并退出vim编辑器 |
:q! | 强制退出vim编辑器,不保存对文件的修改 |
:wq! | 强制保存文件退出vim编辑器 |
:set nu | 设置行号,仅对本次操作有效,当重新打开文件时,若需要行号,要重新设置 |
:set nonu | 取消行号,仅对本次操作有效 |
:n | 使光标移动到第n行 |
:/字符串 | 在文件中从上至下搜索字符串 |
:?字符串 | 在文件中从下至上搜索字符串 |
:s/字符串1/字符串2 | 将当前光标所在行的第一个字符串1替换成字符串2 |
:s/字符串1/字符串2/g | 将当前光标所在的行的所有字符串1替换为字符串2 |
:%s/字符串1/字符串2/g | 将全文的字符串1都替换为字符串2 |
:%s/字符串1/字符串2/gc | 将全文中的字符串1都替换成字符串2,且每替换一个内容都有相应的提示 |
管理软件包
rpm命令管理软件包
安装软件
1 | rpm 选项 RPM软件包 |
注意:选项一般使用-ivh
查询软件
1 | rpm 选项 RPM软件包 |
注意:一般使用-q
来查询软件包的信息
升级软件
1 | rpm 选项 RPM软件包 |
注意:一般使用-Uvh
来安装该高版本的软件包,会将旧版本的软件包删除再安装新版本
卸载软件
概述:一般使用-e
选项卸载软件包,卸载成功,rpm命令没有输出结果;如果失败就会有rpm的提示信息
dnf命令管理软件包
安装软件
1 | dnf install 软件包 |
查询软件
1 | dnf list 软件包 |
检测升级软件
1 | dnf upgrade 软件名称 |
注意:如果不指定软件名称就会升级所有的课升级软件
清理过期所有无用数据
1 | dnf clean all |
注意:将all可以改为指定软件包名称,只清理指定软件包软件过期数据
卸载软件
1 | dnf -y remove 软件包 |
进程
概述:当运行程序时,Linux系统会为程序创建一个特殊的环境,用于分配管理程序执行时所需的资源(如CPU或内存),以保证程序可以独立运行,不受其他程序干扰,这个特殊的环境就称为进程。
进程的状态
概述:在执行过程中,主要有就绪态、运行态和睡眠态3种状态
- 就绪态:处于就绪态的进程,所需的其他资源都已经分配到位,只等待系统分配CPU。
- 运行态:处于运行态的进程是指已经到分配CPU,正在运行的进程。如果时间片用完,处于运行态的进程会进入就绪态。如果因为其他原因而失去CPU,进程就会从运行态进入睡眠态
- 睡眠态:进程因为某种原因暂时不能拥有CPU,就会进入睡眠态
进程的标识符
- 进程标识符:每个进程都有个唯一的标识符,即进程标识符(Process ID,PID)。
- 用户标识符:用户标识符(User ID,UID)标识创建这个进程的用户
- 组标识符:组标识符(Group ID,GID)标识创建进程用户的所属组
进程管理常用命令
进程查看命令
1.ps命令
概述:ps命令用于查看系统中正在运行的进程信息,包括进程状态、占用资源,它是最基本也是最强大的进程查看命令。
1 | ps 选项 参数 |
常用选项:-aux
选项可以显示所有终端所有用户有关进程的详细信息;-ef
选项用于显示系统中所有进程的主要信息。
2.top命令
概述:可以动态的地显示进程状态信息,默认每隔3秒刷新一下系统的整体的运行状态情况
1 | top 选项 参数 |
常用选项:-i
可以忽略闲置和僵死的进程
快捷键:Ctrl+z可以暂停任务
2.pstree命令
概述:可以树状形式显示系统中进程,即显示一个进程树,从中观察出进程的中的进程派生关系
1 | pstree 选项 |
常用选项:-h
列出树状图,特别标注当前正在执行的进程
4.pgrep命令
概述:根据服务器名称,从进程队列中查找与该服务有关的进程,查找成功后显示进程的PID
1 | pgrep 选项 参数 |
进程终止命令
1.kill命令
概述:可以终止指定的进程,其工作原理是发送某个信号给指定进程,以改变进程的状态。
1 | kill 选项 参数 |
注意:kill命令的选项一般是信号,参数为PID。使用kill -l
可以查看预定义的信号
常用信号:9号信号(SIGKILL)可以无条件终止指定进程
2.killall命令
概述:用于终止某个服务所对应的全部进程
1 | killall 选项 参数 |
任务的前台与后台调度
1.jobs命令
概述:用于显示系统中暂停的任务列表即任务状态,包括后台任务
1 | jobs 选项 参数 |
注意:jobs命令的参数是任务标识号,选项一般使用-l
可以显示进程号
2.bg命令
概述:用于将前台任务调度至后台执行
1 | bg 参数 |
注意:bg的参数是任务标识号
3.fg命令
概述:用户将后台任务调度到前台执行
1 | fg 参数 |
注意:fg的参数也是任务标识号
服务管理
概述:在操作系统中,服务是一类常驻再内存中的,且可以提供一些功能来满足用户需求的进程
1 | systemctl 功能命令 服务进程 |
常用功能命令:
功能 | 说明 |
---|---|
start | 启动服务进程 |
stop | 终止服务进程 |
status | 查询服务进程运行情况,列出该服务的详细信息 |
restart | 重启服务进程 |
enable | 设置服务开机自启动 |
disable | 取消服务开机自启动 |
reload | 重新加载指定服务的配置文件(并非所有的服务都支持改参数,使用restart可实现相同功能) |
计划任务
概述:在使用Linux系统过程中,有时需要执行一些周期性、规律的任务,如定时维护系统资源、定期备份数据库等
at命令
概述:at命令用于执行一次性计划任务,一般用于满足临时性的工作需求。
1 | at 选项 参数 |
注意:参数一般是时间日期,at命令允许使用各种各样的时间格式,选项
-l
用于查看计划任务,-f
可以从指定文件中读取任务,-d
删除计划任务,参数为任务编号。
crontab命令
概述:可以周期性的重复执行某个任务,通常需要将任务命令写在一个文件中,这个任务文件叫作crontab文件。使用crontab命令加载这个文件,到指定时间系统会自动执行文件中的命令。
1 | crontab 选线 参数 |
磁盘概述
概述:在Linux操作系统中,一切皆为文件,磁盘设备也不例外。
磁盘设备命名规则
概述:Linux操作系统中的磁盘设备也是文件,磁盘设备文件存储在/dev目录下,用户可以进入/dev目录查看磁盘设备文件。其实除了磁盘设备,其他所有文件都存储在/dev目录下。
查看磁盘使用情况
1.df命令
概述:可以查看磁盘的使用情况,包括磁盘容量、已用空间大小、可用空间大小、磁盘使用率等信息。
1 | df 选项 磁盘设备 |
注意:常用选项有-h
可以以易读的格式显示该磁盘设备的使用情况,-l
只显示本地文件系统,-T
显示文件系统类型
示例:查看/dev/sda1的使用情况
1 | ┌──(kali㉿kali)-[/dev] |
2.du命令
概述:用于查看文件或目录的磁盘占用情况。
1 | du 选项 磁盘设备 |
示例:查看当前目录下所有子目录的大小
1 | ┌──(kali㉿kali)-[~/Desktop/tools] |
注意:常用-h显示当前目录及其子目录所占用空间的大小,及当前home目录及子目录的大小,最末尾
的为所有目录的总大小。
添加磁盘
概述:一块磁盘需要经过分区、格式化、挂载操作之后才能使用,为了后面更好的了解操作磁盘分区、格式化、挂载。需要 一块新磁盘。
1.点击在vmware的菜单栏中虚拟机,里面有个设置选项,点击设置
2.进入“硬件”选项卡中,选中“硬盘”选项,点击下方“添加”,进入向导对话框
3.选择硬件类型为“硬盘”,然后单击“下一步”,进入硬盘类型选择界面,选择”SCSI“虚拟磁盘类型,然后下一步
4.进入选择磁盘界面,选中“创建新虚拟磁盘”,点击“下一步“,进入”指定磁盘容量“界面。
5.磁盘大小就随自己填,如果没有特别的想法的建议用默认推荐大小,然后选中”将虚拟磁盘拆分成多个文件“下一步
6.选择自己的存储位置,点击完成,添加成功之后需要重新启动系统才能识别系统。
注意:请在这里设置一个快照,后面的操作如果失误,可能引起虚拟磁盘损坏,导致系统崩坏,需要重新开个虚拟机。别问我为什么知道,因为我也崩了,心态直接炸掉,想回档都回不了。
磁盘分区
概述:磁盘分区有利于数据的分类处理,提高磁盘的使用率与读取速率。
MBR分区规则
概述:主引导记录方式进行分区。第一个扇区是最重要的,它记录了3部分信息,分别是主引导记录、分区表信息和结束符。一块磁盘最多只有4个主分区。MBR还具有扩展分区,可以将第一个扇区中的一个分区指向另一个分区,指向的分区也叫做逻辑分区,逻辑分区可以分很多个。
MBR分区管理
概述:可通过fdisk命令对磁盘分区进行管理。可操作包括创建分区、删除分区、查看分区等。
1 | fdisk 选项 磁盘 |
注意:常用选项
-l
显示磁盘及分区详细信息,-s
显示磁盘分区容量
使用fdisk命令交互页面,在终端输入“fdisk 磁盘”即可进入交互页面
示例:
1 | ┌──(root㉿kali)-[/dev] |
常用快捷键:
命令快捷键 | 说明 | 命令快捷键 | 说明 |
---|---|---|---|
d | 删除分区 | p | 打印分区表 |
F | 列出为分区的空闲区 | i | 打印某个分区的相关信息 |
l | 列出已知的分区类型 | w | 将分区表写入磁盘并退出 |
n | 添加新分区 | q | 退出而不保存更改 |
1.查看分区情况
1 | Command (m for help): F |
2.创建分区
创建主分区
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26Command (m for help): n # 创建分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): #第一个分区默认创建主分区
Using default response p.
Partition number (1-4, default 1): #第一个主分区默认编号为1
First sector (2048-41943039, default 2048): #默认起点为2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +2G #设置主分区大小为2GB
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): p #打印分区表,查看分区情况
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c3d0f01
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
Command (m for help):本次操作创建了一个 大小为2GB的主分区/dev/sdb1。
创建逻辑分区
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78Command (m for help): n #创建分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e #选择扩展分区
Partition number (2-4, default 2): 3 #设置扩展分区编号为3
First sector (4196352-41943039, default 4196352): #扩展分区起点为保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4196352-41943039, default 41943039): +5G #设置扩展分区大小为5GB
Created a new partition 3 of type 'Extended' and of size 5 GiB.
Command (m for help): p #打印分区表,查看分区情况
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c3d0f01
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
/dev/sdb3 4196352 14682111 10485760 5G 5 Extended
Command (m for help): n #创建分区
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l #选择逻辑分区
Adding logical partition 5
First sector (4198400-14682111, default 4198400): #逻辑分区起点保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4198400-14682111, default 14682111): +2G #设置逻辑分区大小为2GB
Created a new partition 5 of type 'Linux' and of size 2 GiB.
Command (m for help): p #打印分区表,查看分区情况
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c3d0f01
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
/dev/sdb3 4196352 14682111 10485760 5G 5 Extended
/dev/sdb5 4198400 8392703 4194304 2G 83 Linux
Command (m for help): n #创建分区
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l #选择创建逻辑分区
Adding logical partition 6
First sector (8394752-14682111, default 8394752): #逻辑分区起点保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8394752-14682111, default 14682111): #第二个逻辑分区大小保持默认
Created a new partition 6 of type 'Linux' and of size 3 GiB.
Command (m for help): p #打印分区表,查看分区情况
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c3d0f01
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
/dev/sdb3 4196352 14682111 10485760 5G 5 Extended
/dev/sdb5 4198400 8392703 4194304 2G 83 Linux
/dev/sdb6 8394752 14682111 6287360 3G 83 Linux
Command (m for help):本次操作创建了一个扩展分区/dev/sdb3,两个逻辑分区/dev/sdb5和/dev/sdb6
删除分区
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Command (m for help): d #删除分区
Partition number (1,3,5,6, default 6): 6 #指定分区编号
Partition 6 has been deleted.
Command (m for help): p #打印分区编号,查看分区情况
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c3d0f01
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
/dev/sdb3 4196352 14682111 10485760 5G 5 Extended
/dev/sdb5 4198400 8392703 4194304 2G 83 Linux
Command (m for help):本次操作删除了逻辑分区/dev/sdb6
退出,输入w保存并退出,使用q则是直接退出不保存。
注意:MBR分区虽然简单易用,但它不能处理大容量的磁盘,超过2TB的磁盘便无法使用MBR方式进行分区。随着存储设备的发展,MBR方式不能满足需求,逐渐被
GPT分区
取代。
格式化分区
概述:磁盘分区完成之后,需要在分区上创建文件系统以规定数据的存储方式,即为格式化分区。
1 | mkfs 选项 文件系统 分区 |
mkfs命令常用选项:
选项 | 说明 |
---|---|
-t | 指定文件系统,如果不指定文件系统,默认为ext2 |
-f | 强制格式化 |
示例:在/dev/sdb磁盘创建一个文件系统为ext3的分区,然后进行格式化,设置文件系统ext4
1 | ┌──(root㉿kali)-[/dev] |
概述:使用parted命令创建了/dev/sdb1分区,文件系统为ext3。分区创建完成之后使用mkfs命令格式化/dev/sdb1分区,指定文件系统为ext4。格式化完成之后。使用parted /dev/sdb1 print 命令查看分区情况,由输出结果可知,/dev/sdb1分区的文件系统变成了ext4。
挂载与卸载
概述:在windows操作系统中,磁盘分区经过格式化之后就可以直接使用了;但在Linux操作系统中,格式化后的磁盘分区必须经过挂载才可以使用。
挂载
概述:挂载就是将磁盘分区(或者其他硬件设备)与一个目录进行关联,这样就可以在磁盘分区存储数据。Linux提供了mount命令用于实现磁盘分区挂载,语句如下:
1 | mount 分区名称 挂载目录 |
在上述格式中,挂载目录又称为挂载点。一般将磁盘分区挂载到/mut目录下。
示例:将/dev/sdb1分区挂载到/mut/tmp目录下,并编辑hello文件,存储在/dev/sdb1磁盘中。
1 | ┌──(root㉿kali)-[/dev] |
概述:将/dev/sdb1分区挂载到/mnt/tmp目录下,并编辑hello文件进行存储,在通过df命令查看hello文件的存储分区,由输出结果可知,hello文件存储在/dev/sdb1分区。
注意:mount命令挂载之后,虽然可以立即使用磁盘分区,但是系统重启之后,挂载就会失效。如果想让挂载永久生效,就必须把挂载信息按照一定格式写入/etc/fstab文件中。/etc/fstab文件中包括者挂载所需要的信息,一旦挂载信息写入之后,挂载就会永久有效。/etc/fstab文件中挂载信息格式如下:
1 | 设备文件 挂件目录 格式类型 权限选项 自检 优先级 |
上述格式中,各个字段的含义如下。
- 设备文件:通常是设备路径或名称,如/dev/sdb1。
- 挂载目录:设备要挂载到目录,通常需要提前创建好。
- 格式类型:指定文件系统的格式,如ext3、ext4、xfs、swap、iso9960(光盘设备)等。
- 权限选项:通常设置为defualts,保存默认即可。
- 自检:如果设置为1,则开机后进行磁盘自检;如果设置为0,则不自检。
- 优先级:如果自检字段设置为1,则可在改字段中设置多块磁盘的检测优先级;如果自检字段为0,则该字段也设置为0。
注意:除了挂载磁盘分区,mount命令也可以挂载移动硬盘、U盘、镜像文件等设备。读者可以根据磁盘分区的挂载方式,挂载其他设备。
查看挂载信息
概述:可以查看磁盘分区挂载到了哪个目录。
findmnt命令
findmnt命令用于快速查看设备的挂载信息,其常用语句格式如下:
1
findmnt 设备名称
在上格式中,如果指定设备名称,则列出该设备的挂载信息;如果不指定设备名称,则列出所有设备的挂载信息。
lsblk命令
lsblk命令用于列出除RAM盘之外的所有可用的块设备信息,包括硬盘、闪存盘、CD-ROM等。
1
lsblk 选项 设备名称
lsblk常用选项
| 选项 | 说明 | 选项 | 说明 |
| —— | —————————— | —— | ——————————— |
| -a | 显示所有设备信息 | -m | 显示设备权限信息 |
| -f | 显示设备文件系统信息 | -l | 以列表形式显示设备信息 |注意:使用这个命令如果没有指定设备名称,则会列出所有设备信息。
卸载
概述:卸载就是取消磁盘分区与目录的关联关系。
1 | umount 磁盘分区/挂载目录 |
注意:umount命令可以是磁盘分区,也可以是挂载目录。
LVM概述
概述:逻辑卷管理(LVM,Logical Volume Management)是一种用于管理硬盘存储的工具,允许系统管理员在运行时动态地调整磁盘分区。LVM 提供了更灵活的存储管理方案,能够简化磁盘管理和提高存储利用率。LVM 适用于需要灵活存储管理的环境,如服务器和高性能计算集群。
RAID概述
概述:冗余阵列独立磁盘(RAID,Redundant Array of Independent Disks) 是一种将多个物理硬盘组合成一个逻辑单元的技术,以提高数据存储的性能和可靠性。RAID 通过不同的配置(级别)来实现数据冗余、性能提升和故障恢复。RAID 常用于需要高可用性和性能的存储系统,如数据库服务器和文件服务器。
计算机网络基础
概述:计算机网络是继电信网络、有线电视网络之后出现的世界级大型网络。在计算机网络领域中,网络有若干个节点的链路组成,网络中的节点可以是计算机、交换机、路由器。
Linux操作系统基本网路配置
主机配置
概述:在网络中,虽然可以通过IP地址访问主机,但IP地址并不便与记忆,因此,大多数用户还是通过主机名访问主机。Linux操作系统提供了hostname和hostnamectl两个命令来显示、设置系统主机名,下面分别介绍这两个命令的使用。
hostname命令
概述:用于查询、修改主机名
1
hostname 选项 参数
常用命令选项:
| 选项 | 说明 |
| —— | ———————————————————— |
| -a | 显示主机别名 |
| -f | 显示完全格式的域名 |
| -i | 显示指定主机的IP地址 |
| -s | 以短格式显示,仅显示第一个点号之前的部分 |注意:hostname命令只是临时更改主机名,当系统重启之后,新的主机名就会失效了,如果要是新设置的主机永久生效,可以在主机名配置文件/etc/hostname中进行更改。
hostnamectl命令
hostnamectl是从CentOS Linux 7开始新增的命令,也是用于查询、修改主机名。CentOS Linux 7及之后的版本的操作系统定义了以下3种主机名。
临时主机名(tranient):在系统中临时分配的主机名。
静态主机名(static):又称内核主机名或系统主机名,是系统启动时从/etc/host/name文件自动初始化的主机名。
高级主机名(pretty):属于修饰性主机,可以使用特殊字符,如itheima‘s host。
由于CentOS Linux 7及之后版本的操作系统定义了复杂的主机名,原来的hostname命令已经无法完成复杂主机名的设置,所以增加了hostnamectl命令以实现主机的查询与设置,语句如下:
1
hostnamectl 选项/命令 参数
常用选项/命令:
| 选项/命令 | 说明 | 选项/命令 | 说明 |
| —————- | —————————— | —————— | ————————— |
| —transient | 显示或修改临时主机名 | staus | 显示当前主机名信息 |
| —static | 显示或修改静态主机名 | set-hostname | 设置 |
| —pretty | 显示或修改高级主机名 | | |注意:使用hostnamectl命令修改主机永久生效。在设置临时主机名、静态主机名和高级主机名时,主机名称要使用双引号(”“)括起来。如果设置静态主机名,则不使用临时主机名。
网卡配置
概述:网卡计算机能够联网的基础,因此,网络配置其实就是网卡配置。下面将从网卡命名规范、网卡配置文件、禁用和启动网卡3个方面来讲解网卡的配置。
网卡命令规范
概述:之前的CentOS 操作系统对以太网的命令采用的是eth#命名法,如eht0、eth1等,但是CentOS Strea 9的网卡命名规则发生了变化。
网卡名称的前两个字符的不同含义如下。
- en:表示以太网(Etherner)。
- wl:表示无线局域网(WLAN)。
- ww:表示无线广域网(WWAN)。
网卡名称的第三个字符及后面字符的含义如下。
- o#:o表示网卡,”#“符号为内置网卡的设备编号。
- s#:s表示网卡为外置网卡,”#“符号为热插件接口(slot)编号。
- x#:当第三个字符为x时,”#“符号表示网卡的MAC地址。
- p#s#:p表示PCI插口,p后面的”#“符号表示PCI插口编号;s表示热插拔接口,s后面的”#“符号表示热插拔接口编号。
查看当前主机网卡ip命令
1 | ip a |
使用此命令输出结果,可以显示出主机中的所有网卡,第一块网卡名为lo,用于访问本地网络,ip地址为127.0.0.1,即本机地址。第二块网卡用于接入外网,如果还有第三第四块网卡,可能为虚拟的网络连接端口
注意:在这些网卡中,最重要的是第二块网卡,只有开启该网卡,才能进行网络连接。在安装操作系统时,设置了网络类型为NAT模式,因此,en33网卡处于开启状态。并且ens33网卡可以通过DHCP(动态主机配置协议)自动获取IP地址。
网卡配置文件
在Linux操作系统中,一切皆为文件,因此网卡配置其实就是编辑网卡配置文件,不同的操作系统的网卡配置文件不一样,路径也会不一样,所以这边是操作kali系统的网卡配置文件。
kali编辑网卡配置文件如下
1 | sudo vim /etc/network/interfaces |
然后在配置过程中有需要我们物理主机的一些网络配置信息,使用ipconfig
VMware Network Adapter VMnet1
是 VMware 虚拟化软件(如 VMware Workstation 或 VMware Player)中创建的另一个虚拟网络适配器。与VMnet8
(通常用于 NAT 模式)不同,VMnet1
通常用于 桥接模式或 仅主机网络(Host-Only Network)。VMware Network Adapter VMnet8
是 VMware 虚拟化软件(如 VMware Workstation 或 VMware Player)中创建的一个虚拟网络适配器。VMnet8
通常用于 NAT 模式。
接着我们就可以在网络配置文件中添加信息了
1 | # The primary network interface |
然后还要去修改一个dns生效的文件
1 | sudo vim /etc/resolv.conf |
将默认的dns改为腾讯、阿里的dns
1 | nameserver 119.29.29.29 |
配置完IP信息后,我们重启Kali的网络服务,让网络配置生效
重启网络服务之前需要关闭NetworkManager,并且禁止该服务开机自启
注:关闭NetworkManager服务,该服务是网络服务的图形管理工具,该服务会自动接管networking服务,有可能造成重启networking服务时配置不生效的问题
1 | sudo systemctl stop NetworkManager |
再重启一下kali网络服务
1 | sudo systemctl restart networking |
然后查看一下ip,如果没有更改,就再重启一下kali的网络服务
更改成功之后测试一下
1 | ping -c 4 www.baidu.com |
如果丢失为0,则配置成功
Shell
概述:Shell 是一种用户与操作系统之间的接口,它允许用户通过命令行与操作系统进行交互。Shell 可以是命令行界面(CLI)或图形用户界面(GUI),但通常所说的 Shell 指的是命令行界面。
注意:shell脚本语言比较简单,如果有一定语言基础,推荐使用Shell 教程 | 菜鸟教程
其他相关kali的操作
更新kali的源,获取更新包/更新软件
1 | apt-get update |
kalilinux开启端口、关闭防火墙
概述:这里我们有用到ufw的操作命令,但是kali是没有安装这个命令的,所以需要手动安装
1 | apt-get install ufw |
查看防火墙状态(默认情况inaction)
1 | ufw status |
防火墙版本
1 | ufw version |
启动ufw防火墙
1 | ufw enable |
关闭ufw防火墙
1 | ufw disable |
默认禁止访问所有
1 | ufw default deny |
开放22/TCP端口
1 | ufw allow 22/tcp |
开放80端口(tcp/udp)
1 | ufw allow 53 |
禁止外部访问
1 | ufw deny 3306 |
删除已经添加过的规则
1 | ufw delete allow 22 |
允许此IP访问所有的本机端口
1 | ufw allow from 192.168.1.100 |
删除上面的规则
1 | ufw delete allow from 192.168.1.100 |
禁止对8888端口的访问
1 | ufw deny 8888 |
打开来自192.168.0.1的tcp请求的22端口
1 | ufw allow proto tcp from 192.168.0.1 to any port 22 |
给kali安装Google输入法
给kali设置中文
这条命令需要root权限
1 | dpkg-reconfigure locales |