前言:
- 本文主要讲解 kali linux 的 基本操作、系统构成、查询信息 权限管理等方面的相关知识。
一.Linux 概述
- Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。
- Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的Debian、[Arch Linux](https://baike.baidu.com/item/Arch Linux/8876099?fromModule=lemma_inlink),和基于商业开发的[Red Hat Enterprise Linux](https://baike.baidu.com/item/Red Hat Enterprise Linux/10770503?fromModule=lemma_inlink)、SUSE、[Oracle Linux](https://baike.baidu.com/item/Oracle Linux/6876458?fromModule=lemma_inlink)等。
- Linux的基本思想有两点:
- 第一:一切都是文件;
- 第二:每个文件都有确定的用途。
二. Kali Linux 概述
- Kali Linux是基于Debian的Linux发行版。 它被设计为用于数字取证的操作系统,每一季度更新一次。由Offensive Security(OffSec)维护和资助。 最早是由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,而BackTrack也是他们之前编写的用于取证的Linux发行版。
- Kali是对BackTrack Linux的完全重建,并完全遵循Debian开发标准。它使用全新的目录框架、复查并打包所有工具、还为VCS建立了Git 树。
- Kali Linux 面向专业的渗透测试和安全审计。因此,Kali Linux 已经进行了如下的多处核心的修改:
- **单用户:**系统被设计成以 root 权限登录,由于安全审计的本质,Kali Linux 被设计成使用“单用户,root权限”方案。
- **默认禁用网络服务:**Kali Linux 包含了默认禁用网络服务的 sysvinit hooks 。它们允许用户在 Kali Linux 安装各种的服务,允许用户安装各种包,同时仍然确保本发行版安全。一些附加的服务,例如蓝牙,也会被默认列入黑名单。
- **定制的内核:**Kali Linux 使用已经打过无线注入补丁的上游内核。
- 软件包支持格式:XXX.deb
- kali-undercover mode 可以将 kali 伪装为 windows10
- 输入 kali-undercover 并回车,Undercover 模式启动。桌面类似于 Windows10。
- 桌面搜索的方式直接运行 Kali-undercover 命令,取消 Undercover 模式。
三.Kali 的目录结构及相关功能
1.目录结构(kali与windows的区别)

1.)windows 目录结构特点
- 在Windows目录下,是一个一个的盘符(C盘、D盘、E盘),目录是归属于某一个盘符的。
- 各各盘 的 根目录 就是其 对应的 盘符。
2.)kali 目录结构特点
- kali 中 / 是所有目录的顶点(及根目录)。
- 从根目录开始,目录结构就像一棵倒挂的树。
2.主要文件夹及功能

1.)系统启动必须类
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。该目录下的文件对系统的启动至关重要。
/etc:**(重点)**存放所有的系统需要的配置文件和子目录列表,管理员可以通过修改这些文件来调整系统行为。更改目录下的文件可能会导致系统运行出错或不能启动。
/etc/network/interfaces :用于配置网络接口;
/etc/ssh/sshd_config :用于配置 SSH 服务的安全参数
/lib:**(重点)**存放共享库文件,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 类似于 /proc ,但更专注于设备和内核接口的信息。它提供了对硬件设备的详细信息访问。
2.)指令集合类
/bin:**(重点)**存放着最常用的程序和指令。如 ls、cp、mv 等。这些命令是系统启动和基本操作所必需的。
/sbin:只有系统管理员能使用的程序和指令。如 ifconfig、iptables 等。这些工具主要用于系统维护和管理
3.)外部文件管理类
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。包含所有设备文件,如硬盘、键盘、鼠标等。
注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类似windows的其他设备,例如U盘、光驱等等,识别后linux会把会自动在此目录下创建相应的挂载点。
/mnt:临时挂载别的文件系统的,通常用于手动挂载磁盘或其他文件系统。比如:我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/run:是一个临时文件系统,存储系统运行时的信息。当系统重启时,这个目录下的文件会被删掉或清除。
注意:如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:(重点)这个目录是用来存放临时文件,且里边的文件都是可以被执行的。系统会定期清理其中的内容。适合存放不需要长期保存的文件。
注意:通常情况下,黑客入侵linux系统时,也会习惯性将可执行的文件存入此处,所以此处存放文件的安全性很低。
5.)账户类
/root:**(重点)**超级用户(root)的主目录。即:系统管理员的目录
/home:**(重点)**root用户以外用户的主目录,每个用户都有自己的主目录,用户目录是以用户的账号命名的。用于存储个人文件和配置。
/usr:**(重点)**存放用户程序和文件,包括可执行文件、库文件、文档等,类似于windows下的program files目录。它分为多个子目录,如 /usr/bin、/usr/sbin、/usr/src 等。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
6.)运行过程中要用的
/var:**(重点)**存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)、缓存文件、数据库文件等。这些文件的内容经常发生变化。
/proc:**(重点)**是一个虚拟文件系统,是系统内存的映射,由系统内核动态生成。可以直接访问这个目录,来获取和修改某些内核参数信息。
7.)扩展用的
/opt:安装第三方软件包的地方,默认是空的。我们安装额外软件,特别是那些不适合放在 /usr 目录中的大型应用程序,可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)。如 Web 服务器的数据文件、FTP 服务器的文件等。
3.文件名颜色及其含义
白色:表示普通文件
蓝色:表示目录
绿色:表示可执行文件
红色:表示压缩文件
浅蓝色:表示链接文件
黄色:表示设备文件
灰色:表示其他文件
红色闪烁:表示链接的文件有问题
四.kali 的常用命令(普通用户登录)
kali中的通配符:
与编程语言中通配符的意义相同。但是没有那么多规则,有以下几种:
- *: 匹配所有
- ?:匹配单个
- [a-z]:匹配小写字母 a-z 中的某一个。类似Unicode查询。[] 内的查询字符可以自定义
1.信息查询
1.)目录/文件信息 pwd 和 ls
pwd:查看当前所在文件位置
ls:以平铺方式显示当前目录包含内容
使用实例:
pwd # 查看当前所在路径。
ls # 查看当前文件夹中的文件和文件夹
ls -a # 查看当前文件夹中的文件和文件夹,包括隐藏文件
ls -l # 以详细列表形式显示当前目录包含内容
ll # 以详细列表形式显示当前目录包含内容。与命令 ls -l 效果等价
tips:ls -l 命令显示内容解读

显示内容的解释:
例子:drwxr-xr-x 2 root root 4096 4月10日 21:34 apt.conf.d
头一个字母:
d: 代表的这个文件是目录
-:代表普通文件
l:代表软连接
b:代表块设备
c:代表字符设备
s:代表socket(通信接口)
p:代表管道(pipline)
rwxr-xr-x:
rwxr-xr-x 这里是三段分开解释.r==>可读; W==>可写; x==>可执行
rwx ==>文件所有者的权限
r-x ==>文件所有者所在组的权限
r-x ==>其他人的权限
2 ==>文件个数.
第一个 root ==>用户
第二个 root ==>用户组
4096 :文件大小,这种大小的文件一般就是文件夹
4月10日 21:34 :创建时间
apt.conf.d :文件夹名称。后缀是 .d
2.)查看文件内容 vat、head、tail
cat:查看文件内容
cat ./a/111.txt # 查看当前目录下的a目录下的111.txt文件的内容
head:查看文件头部内容(默认是10行)
head 111.txt# 查看文件111.txt 的头部内容
head -20 111.txt# 查看文件111.txt 头部20行内容
tail:查看文件尾部内容(默认是10行)
tail 111.txt# 查看文件111.txt 的尾部内容
tail -15 111.txt# 查看文件111.txt 尾部15行内容
3.)查找:find和grep
grep :文件夹中 指定文件内 搜索 指定关键字 文件的内容
grep "password" /etc/passwd # 在 /etc/passwd 目录下的文件中搜索包含 "password" 的行
grep -rn –include "*.php" "eval(" ./ # 递归搜索当前目录下所有 php 文件中的 "eval(" 关键字
常用参数:
- -i:忽略大小写(如 grep -i “keyword” file.txt)
- -r 或 -R:递归搜索目录中的文件(如 grep -r “admin” /var/www)
- -n:显示匹配行的行号(如 grep -n “error” log.txt)
- -v:反向匹配(显示不包含模式的行)
- -l:仅显示包含匹配项的文件名
find :根据条件在文件系统中查找文件或目录
find /var/log -type f -name "*.log" # 查找 /var/log 目录下 所有扩展名为 .log 的文件
find ./ -type d -perm 777 # 查找 当前目录下 权限为 777 的目录
常用参数:
- -name:按文件名匹配(如 find / -name “*.conf”)
- -type:按文件类型过滤(f 文件、d 目录、l 符号链接)
- -size:按文件大小过滤(如 find /var/log -size +10M)
- -perm:按权限过滤(如 find / -perm -4000 查找 SUID 文件)
- -exec:对匹配文件执行操作(如 find . -name “*.tmp” -exec rm {} ;)
tips: 结合使用 find 和 grep
实例
# 查找 /etc路径下 所有 .conf 文件并搜索 "Listen 80" 配置
find /etc -type f -name "*.conf" -exec grep -H "Listen 80" {} \\;
# 使用管道符和 xargs 优化性能(处理大量文件时更高效)
find /etc -type f -name "*.conf" | xargs grep -H "Listen 80"
find /etc -type f -name “*.conf” -exec grep -H “Listen 80” {} ; 代码分解:
- ** find /etc**:从 /etc 目录开始递归搜索。
- ** -type f:仅匹配 普通文件**(排除目录、符号链接等)。
- -type d:目录类型。
- -type l:符号链接类型。
- ** -name “*.conf”**:按文件名匹配,筛选扩展名为 .conf 的文件。
- ** -exec grep -H “Listen 80” {} ;**:对每个匹配的文件执行 grep 命令,搜索 “Listen 80”
-exec:表示执行后续命令。
grep -H “Listen 80” {}:在文件 {} 中搜索字符串,并显示文件名(-H 确保输出文件名)。
{}:占位符,会被 find 替换为当前匹配的文件路径。
;:转义的分号,表示 -exec 参数结束。
2.目录/文件操作
1.)目录操作 cd、mkdir、rmdir
cd:切换目录(后面接绝对路径或相对路径)
cd .. # 返回上一级目录。
cd / # 返回根目录。
cd /etc # 进入根目录下的etc子文件夹,绝对路径进入法。
cd etc # 假如目前就处于根目录下,那么可以直接进入当前文件的子文件,相对路径进入法。
mkdir :创建目录(需要root权限)
sudo mkdir a# 创建目录 a
sudo mkdir -p a/b# 创建目录 a 且 在a目录内创建目录 b
rmdir :删除空目录
sudo rmdir a# 删除 空目录 a
2.)文件操作 touch、echo、rm
touch :创建文件
touch 11.txt# 在当前位置创建 11.txt 文件
sudo touch /a/1.txt# 在目录 a 中创建文件 1.txt 文件
echo :文件添加内容
格式:echo 内容 >(或>>) 目标文件
echo hello word > 11.txt# 11.txt 文件添加内容 "hello word" 文件原有内容会被覆盖(此命令慎用)
echo i love you! >> 11.txt# 11.txt 文件添加内容 "i love you!" 文件原有内容不会被覆盖
rm:删除文件/文件夹(慎用)
rm -f # 删除文件。 -f 可以省略
rm -f 11.txt# 删除 11.txt 文件
sudo rm -rf /a# 删除 非空目录 a 以及目录 a 内的所有内容(慎用)
3).vim/vi 编辑工具
介绍:Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
操作流程图:

a.普通模式
该状态下敲击键盘会被Vim识别为命令,而非输入字符。
常用命令:
/ac 从上而下 当前文本内容中查找ac字符,ac 可以自定义
?ac 从下而上 当前文本内容中查找ac字符,ac 可以自定义
i \\a 切换到输入模式,在光标当前位置开始输入文本
o 在当前行的下方插入一个新行,并进入插入模式
dd 删除当前行
yy 复制当前行
p 粘贴剪贴板内容到光标下方
u 撤销上一次操作
: 切换到底线命令模式
b.命令(底线)模式
在普通模式下按下 ”:“(英文冒号)就进入了底线命令模式
常用命令:
set nu 给文本内容添加行号
q 退出
wq 保存并退出vim编辑
q! 强制退出vim编辑 不保存
c.插入(编辑)模式
在普通模式下按下 i 就进入了插入模式,就可以编写文本内容。使用 Esc 键可以返回到普通模式
4.)复制/移动文件和目录 cp、mv
注意:只要是复制/移动目录,都会将目录中的内容一并带走
cp:复制文件或文件夹(会保留原文件)
cp -r aa package/liann# 将 aa 文件夹移动到 liann 文件夹内,必须使用参数 -r
cp ./Desktop/aa.py /home/kali/aa# 将 Desktop 目录下的aa.py 文件复制到 aa目录下,复制文件不用加参数-r
mv:移动文件或文件夹(不会保留原文件)
mv aa package/liann# 移动 aa文件夹 到 liann 文件夹内
mv package/liann/test/aa.py .# 将 test 目录内的 aa.py 文件移动到当前文件夹
mv 的重命名功能
mv aa.py package/liann/py_test.py# 将当前目录下的 aa.py 文件移动到 liann 目录下,并重命名为 py_test.py
5.)压缩/解压缩 rar、tar、bzip2
三种压缩格式在操作中的区别:
rar:压缩文件可跨平台使用。后缀名为 .rar 或 .cbr(漫画书格式)
- 可压缩文件或文件夹。
tar:在 Unix 和类 Unix 系统中普遍存在。
- 可压缩文件或文件夹。
- 可创建不压缩文件或压缩文件
- 创建 tar 归档(不压缩):tar -cvf archive_name.tar directory_or_files
- 创建并 gzip 压缩:tar -czvf archive_name.tar.gz directory_or_files
- 创建并 bzip2 压缩:tar -cjvf archive_name.tar.bz2 directory_or_files
- 解压 tar 文件(需要额外解压命令如 gzip 或 bzip2):tar -xvf archive_name.tar.gz 或 tar -xjvf archive_name.tar.bz2
bzip2:在 Linux 和 Unix 系统中广泛使用。压缩文件的扩展名为 .bz2 或 .bz
- 不可压缩文件或文件夹,智能压缩单个文件。
a.压缩/解压缩命令一: rar
a.1)rar a:目录压缩
rar a package.rar package# 将目录 package 压缩为 package.rar 。原有的 package 目录不会被删除

a.2)rar x:目录解压缩
rar x package.rar # 对 package.rar 压缩文件进行解压缩。原有的 package.rar 压缩文件不会被删除

b.压缩/解压缩命令二 :tar
b.1)tar 命令参数:
c: 创建新归档文件。
x: 解压缩或从归档文件中提取文件。
t:列出存档文件中的内容。
v: 显示在归档文件中提取的文件。
f: 指定归档文件的文件名。
z: 使用 gzip 压缩/解压缩。
j: 使用 bzip2 压缩/解压缩。
-C:指定tar命令的工作目录。
b.2)tar 压缩
tar -jcvf 111.tar.bz2 package# 将 package 目录使用 bzip2 压缩格式压缩成 111.tar.bz2 文件
b.3)tar 解压缩
tar -tf 111.tar# 列出 111.tar 压缩文件内的内容
tar -jxvf 111.tar.bz2# 将 111.tar.bz2 使用 bzip2 格式进行解压缩
b.4)注意事项
文件或文件夹的压缩,后缀名最好是相应的压缩命令。比如使用 tar 的 bzip2 格式进行压缩,压缩文件的后缀最好是tar.bz2 ;使用 bzip2 命令压缩,后缀名就为bz2等。
否则在解压缩后可能看不到原本的内容。
查看压缩文见的压缩格式命令 :file 压缩文件名
c.压缩/解压缩命令三 :bzip2
c.1)bzip2 :将文件压缩成bz2文件
bzip2 demo.txt# 文件 demo.txt 压缩为 bz2 格式。原文件会被删除

c.2)unbzip2 :将bz2压缩文件进行解压
bunzip2 demo.txt.bz2# 将 demo.txt.bz2 压缩文件 解压缩。原文件会被删除

c.3)注意事项
bzip2进行压缩/解压缩,源文件会被删除,且智能压缩单个文件。
3.用户/组管理
- 在Kali Linux中,用户和组是非常重要的组成部分,它们帮助系统管理员管理用户权限和资源访问。
- UID(User ID)为0的用户是超级用户(root),拥有系统上的所有权限。每个用户都有一个唯一的用户ID(UID),用以标识和区分不同的用户。用户可以是多个组的成员。
- /etc/shadow 文件存放用户密码的文件
- /etc/passwd 文件存放用户信息的文件
- GID(Group ID)为0的用户是超级用户组(root),拥有系统上的所有权限。每个用户组都有一个唯一的组ID(UID),用以标识和区分不同的组。一个组内,可以包含很多用户ID(UID)。
- /etc/group文件包含了系统上所有用户组的信息。
1.用户管理
1.)常用命令
whoami# 查看当前用户
id kali# 查看kali用户详细信息。不写用户名是查看当前用户的详细信息
cat /etc/passwd # 查看所有用户
useradd 用户名# 添加用户
userdel 用户名# 删除用户(前提是用户只在原始组内)
userdel -f 用户名# 强制删除用户
usermod参数选项 用户名# 修改某用户的某项信息(以参数选项决定)
passwd 用户名 # 配置某用户的密码
su – 用户名 # 切换用户(不加用户名表示切换root)
sudo 具体命令# 以系统管理者的身份执行指令
sudo su# 从普通用户切换到 root 用户。输入 exit 可以返回到普通用户
2.)usermod参数详解
| -c, –comment COMMENT | 更改用户的备注信息 |
| -d, –home HOME_DIR | 更改用户的家目录 |
| -e, –expiredate EXPIRE_DATE | 设置账号的到期时间 |
| -g, –gid GROUP | 更改用户的初始用户组 |
| -G, –groups GROUPS | 更改用户所属的附加用户组 |
| -l, –login NEW_LOGIN | 更改用户的登录名 |
| -L, –lock | 锁定用户账号 |
| -m, –move-home | 移动用户的家目录 |
| -p, –password PASSWORD | 更改用户的密码 |
| -s, –shell SHELL | 更改用户的登录shell |
| -u, –uid UID | 更改用户的UID |
| -U, –unlock | 解锁用户账号 |
3.)/etc/passwd 用户信息详解

实例解析:
man : x : 6 : 12 : man : /var/cache/man : /usr/sbin/nologin
man : 用户名
x :密码(此处被系统隐去,x起到占位符的作用)
6 : 用户 man 的id(即UID)
12 : 用户man 所在组的id(即GID)
man : 对用户名的描述
/var/cache/man :用户所在的目录(家目录)
/usr/sbin/nologin : 用户命令解释器所在的目录
4.)/etc/shadow 用户密码信息详解

实例解析:
kali :
y
y
yj9T
6
B
v
E
U
3
K
Y
h
z
i
E
t
b
Y
N
y
m
8
N
R
0
6BvEU3KYhziEtbYNym8NR0
6BvEU3KYhziEtbYNym8NR0hEFufKIQO6HAC8VkXrqZGBRfypD0aH1k4c7CL0u.lK9 : 20193 : 0 : 99999 : 7 :::
kali :用户名
y
y
yj9T
6
B
v
E
U
3
K
Y
h
z
i
E
t
b
Y
N
y
m
8
N
R
0
6BvEU3KYhziEtbYNym8NR0
6BvEU3KYhziEtbYNym8NR0hEFufKIQO6HAC8VkXrqZGBRfypD0aH1k4c7CL0u.lK9 : 20193 : Yescrypt 哈希 加密算法
Yescrypt 哈希 加密算法结构:(高安全度,不容易破解)
y
y
y[参数]
[
盐
]
[盐]
[盐][哈希值]
- **
y
y
y**:固定前缀,表示使用 Yescrypt 算法。 - j9T:参数部分(可能包含版本和计算参数)。
- 6BvEU3KYhziEtbYNym8NR0:盐值(Base64 编码)。
- hEFufKIQO6HAC8VkXrqZGBRfypD0aH1k4c7CL0u.lK9:最终哈希值(Base64 编码)
- 20193 : 密码最后一次更改的时间(以天为单位的时间戳)
- 0 :密码最短有效期,0代表无限制
- 99999 :密码最长有效期,99999代表无限制
- 7 :密码到期前7天,系统会发警告
2.组管理
1.)常用命令
groups# 查看当前用户组
groupadd 组名# 创建新用户组
groupdel 组名 # 删除用户组(前提是组内只有原始用户)
groupdel -f 组名 # 强制删除用户组
delgroup 用户名# 删除用户组和用户(慎用)
groupmod 参数选项 组名# 修改用户组的对应信息(参数决定)
cat /etc/group#查看所有组的信息
2.)groupmod 参数详解
| -g, –gid GID | 设置群组的新的GID |
| -n, –new-name 新群组名称 | 设置群组的新的名称 |
| -o, –non-unique | 允许使用重复的GID |
| -p, –password 密码 | 设置群组的密码 |
| -R, –root 目录 | 在指定的目录下执行命令 |
3.)/etc/group 组信息详解

实例解析:
audio : x : 29 : pulse,kali
audio : 组名
x :组密码(此处隐去,x为占位符)
29 :组id(GID)
pulse,kali : 代表两个组成员 pulse,kali
3.权限管理
1.)修改文件/文件夹所有者chown(change owner)
格式:chown 用户:组 文件名/文件夹名
注意:一定要有权限才能更改,且 冒号(:)不能省略
chown root:kali test# 将 test 文件/文件夹 归属修改为 root用户、kali组 冒号 : 不可省略
chown root: test# 将 test 文件/文件夹 归属修改为 root用户、root组
chown :kali test# 将 test 文件/文件夹 归属修改为 当前用户 kali组 如果当前用户不在kali组内会报错
2.)修改文件/文件夹权限chmod(change mode)
a.基本语法
chmod [选项] 八进制模式 文件名
或者
chmod [选项] 符号模式 文件名
b.常用 选项(使用频率不高)
- -c:如果改变成功,则显示更改的内容。
- -f:忽略错误,即使发生错误也继续执行。
- -v:详细模式,显示每次更改的详细信息。
- -R:递归地改变指定目录及其下所有子目录和文件的权限。(慎用)
c.模式
有两种模式可以用于指定权限:八进制模式 和 符号模式。
d.八进制模式
二进制转八进制计算规则

每个文件或目录的权限可以通过三个数字来设置,每个数字代表一组权限(读、写、执行),范围从0到7。例如:
- 4:读权限(r)
- 2:写权限(w)
- 1:执行权限(x)
- 0:没有权限
实例:
chmod 777 example.txt # 文件 example.txt 的权限设置为 所有用户可读、写和执行
chmod 751 example.txt# 文件 example.txt 的权限设置为 用户可读、写和执行;组可读和执行;其它用户可执行
e.符号模式
符号模式使用字母来指定权限(u表示用户,g表示组,o表示其他,a表示所有),以及加号(+)、减号(-)和等号(=)来添加、删除或设置权限。规定不同权限时,使用英文逗号(,)隔开。
例如:
- u+r:给文件所有者添加读权限。
- g-w:移除组用户的写权限。
- a=rx:设置所有用户的读和执行权限。
示例:
chmod u+w example.txt # 给文件所有者添加写权限
chmod g-x,o+wr example.txt# 移除组用户的执行权限,其它用户增加读和写权限
chmod -R 777 directory_name/ # 设置目录及其所有子目录和文件的权限为所有用户可读、可写、可执行(慎用)
chmod -R a+rwx directory_name/ # 使用符号模式的等价代码
f.注意事项
- 使用 chmod 777 会给所有用户无限制的访问权限,这通常不推荐用于生产环境,因为它降低了系统的安全性。通常建议更细致地分配权限。
- 在使用 chmod -R 时要小心,确保不会意外地修改不应该修改的文件或目录的权限。特别是在使用 chmod -R 77 7时要特别小心。
五.系统/进程管理
1.网络查询
1.)查看网络配置
- ifconfig:获取本机活跃的网卡状态或网卡配置
- ip addr show :显示所有接口的详细网络配置,包括未激活的接口
2.)检测网络连通
格式:ping IP地址/域名
ping 192.168.70.1# 检查对IP地址 192.168.70.1 的连接状态
ping -c 4 192.168.70.1# 发送4个请求包,检查对IP地址 192.168.70.1 的连接状态
ping -c 4 192.168.70.1/24# 检查IP地址 192.168.70.1 所在网段所有活跃设备连接状态,没个网址发送4个请求包
ping baidu.com# 检查与 baidu.com(域名) 的连接状态
3.)补充:TTL 的作用

a.TTL 的核心作用
防循环机制:
- TTL 是一个计数器(初始值由发送端设置),数据包每经过一个路由器(一跳),TTL 值 减 1。当 TTL 降为 0 时,数据包被丢弃,并返回 ICMP 超时消息,避免数据包无限循环。
网络路径限制:
- 通过设置初始 TTL 值,间接控制数据包可经过的最大跳数(如初始 TTL=64,最多经过 64 跳)。
b.如何从 ping 结果解读 TTL
回复的 TTL 值 = 目标主机的初始 TTL 值 – 经过的路由跳数
例如: 若目标主机初始 TTL=64,经过 10 跳后,回复的 TTL 值为 64 – 10 = 54。 若回复的 TTL=128,可能是直连网络(未经过路由器,初始 TTL=128)。
c.通过 TTL 推测目标系统类型
不同操作系统/设备 的 初始 TTL 值 :
| 64 | Linux、Unix、Android、MacOS |
| 128 | windows |
| 255 | 路由器、交换机、旧版 FreeBSD |
示例:
ping 结果 TTL=56 → 初始 TTL 可能是 64,跳数:64 – 56 = 8。 说明对方系统可能是 linux 系统,跳转了8个路由器。
TTL=113 → 初始 TTL 可能是 128,跳数:128 – 113 = 15。说明对方系统可能是 windows 系统,跳转了15个路由器。
d.注意事项
- 初始 TTL 可自定义:
- 管理员可能修改系统默认值(如 Windows 注册表、Linux 的 sysctl),因此推测结果仅供参考。
- 路径动态性:
- 同一目标的 TTL 值可能因路由变化而不同。
- 中间设备干扰:
- 防火墙/NAT 可能修改 TTL 值,导致误判。
2.进程管理
1.)概念
Linux系统进程是指在Linux操作系统中运行的每一个独立的任务或程序实例。
每个进程都拥有自己的地址空间、系统资源(如文件句柄和内存)以及一个唯一的进程标识符(PID)。
Linux通过进程模型实现了多任务处理和并发执行,允许同时运行多个进程。
2.)常用命令
netstat:显示网络状态
ps:显示当前终端下运行的进程
ps -aux:显示所有用户的所有进程,包括系统进程,提供更详细的进程信息
kill (PID): 终止指定pdi进程
kill -9 (pid):强制终止进程
3.kali的包管理器apt
1.)apt和apt-get区别
- apt命令是apt-get命令的更新和改进版本,它们之间的主要区别在于配置和使用方式上。
- apt命令将apt-get、apt-cache和apt-config中的常用命令集合在一起,去除了较少使用的功能,使得命令使用更加简洁明了。
- apt命令的配置选项与apt-get命令略有差异,但大多数功能都是相同的。
- apt命令的设计更加友好,适合普通用户使用。而apt-get命令相对更偏“后端”,更适合对Linux系统有深入了解的用户使用。
2.)常用命令
vim /etc/apt/sources.list # 使用vim编辑器配置镜像源
sudo apt update# 列出所有可更新的软件清单命令
sudo apt upgrade# 升级软件包,批量更新时,与上一个命令联合使用
sudo apt clean# 清理本地仓库的缓存和旧的下载文件
sudo apt autoremove# 自动删除那些不再被任何已安装软件包需要的软件包
sudo apt install <package_name> # 安装<package_name>软件
sudo apt remove <package_name> # 删除<package_name> 软件包
apt list –installed # 列出所有已安装的包
apt list –all-versions # 列出所有已安装的包版本信息
apt list –installed | grep nmap# 检查 nmap 包是否安装
4.linux系统防火墙
1.)概述:
- 防火墙就是根据系统管理员设定的规则来控制数据包的进出,主要是保护内网的安全
- 目前Linux系统的防火墙类型主要有两种:分别是iptables和firewalld
2.)iptables-静态防火墙
早期的Linux系统中默认使用的是iptables防火墙,配置文件在 /etc/sysconfig/iptables 中,主要工作在网络层。
特点:
- iptables只可以通过命令行进行配置
- iptables默认是允许所有,需要通过拒绝去做限制
- iptables在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)
a.常用命令:
sudo systemctl status iptables # 查看iptables防火墙状态(如果系统使用iptables作为防火墙)
3.)firewalld-动态防火墙
取代了之前的iptables防火墙,配置文件在 /usr/lib/firewalld和/etc/fiewalld 中,主要工作在网络层。
特点:
- firewalld不仅可以通过命令行进行配置,也可以通过图形化界面配置
- firewalld默认是拒绝所有,需要通过允许去放行
- firewalld可以动态修改单条规则,动态管理规则集。允许更新规则而不破环现有会话和连接,可以守护进程
a.常用命令:
sudo systemctl status firewalld # 查看firewalld防火墙状态
sudo yum install firewalld # 基于RPM的系统安装firewalld
sudo apt install firewalld # 基于Debian的系统(如Ubuntu、kali),安装 firewalld 。通常不预装firewalld
sudo systemctl start firewalld # 启动 firewalld 服务
sudo systemctl stop firewalld # 关闭 firewalld 服务
sudo systemctl enable firewalld # 开机自启动
sudo systemctl disable firewalld # 禁止 开机自启动
5.shell脚本
1.定义
- shell 字面意思:(任何物体的)外壳, 壳体。
- 在软件设计中,shell 是一个程序。该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。
- 用户界面和命令行就是这个开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。
2.shell的种类
Linux 的 Shell 种类众多,常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
由于bash易用与免费,其被广泛使用也是大多数Linux系统的默认Shell。(Kali目前为zsh,兼容bash)
3.组成和类型
图形界面和命令行是 shell的主要组成。
Linux系统中常见的 Shell 类型包括bash、zsh、csh等,其中 bash 是最常用的Shell之一。Kali目前为zsh,兼容bash。
4.作用
Shell 除了能解释用户输入的命令,将它传递给内核,还可以:
- 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果;
- 在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入;
- Shell 本身也可以被其他程序调用。
- 由此可见,Shell 是将内核、程序和用户连接了起来。达到让用户控制计算机的目的。如此一来,用户和内核之间就多了一层“壳”,这层“壳”既简化了用户的操作,也保护了内核。
5.kali的shell(zshShell)
1.)界面说明

a.管理员用户(root)
提示符颜色为 红色 代表 管理员账户
root:当前登录的用户名
kali:当前登录的主机名
#: 代表root用户
b.普通用户(kali)
提示符颜色为 **蓝色** 代表 普通用户
第一个kali:当前登录的用户名
第二个kali:当前登录的主机名
$ : 代表普通用户
2.)命令格式
命令名称+[命令参数]+[命令对象]
3.)获取帮助信息
方法1:man <命令>
方法2:<命令> –help
六.实例:使用 Xshell 连接 kali-linux(内网连接)
1.目标:
使用 Xshell 软件,通过root 账户登录 kali-linux
2.思路:
Xshell配置 ==> kali-linux开启ssh服务 ==> kali-linux开启root用户登陆权限 ==> 连接 kali-linux
3.步骤:
1.)Xshell配置
a.创建连接
打开Xshell 软件,点新建连接


b.配置连接信息
进入对话框,名称随便写,主机是输入 kali-linux的ip地址,端口默认22,如果想更改,在kali-linux的ssh服务中也要做相应更改

c.配置用户身份验证。
输入 kali-linux 用户名和相应的密码

2.)kali-linux开启ssh服务
a.查看ssh服务状态
显示状态未开启
service ssh status

b.开启ssh服务
并查看状态,必须为启动状态
service ssh start
service ssh status

3.)开启root用户登陆权限
a.使用vim打开配置文件
如果不用 root 用户登录,则此步可以省略
vim /etc/ssh/sshd_config
b.是/否允许root用户登录 PermitRootLogin
底线命令模式下输入 ?RootLogin 或 :33 搜索参数
将 # PermitRootLogin prohibit-password 改为 PermitRootLogin yes

c.打开密码验证
底线命令模式下输入 ?PasswordAuthentication 或 :57 搜索参数
将 #PasswordAuthentication yes 去掉注释(启用设置)

d.修改端口(可选项)
端口修改位置,默认为22。本案例对端口没有要求所以不修改


刷新ssh服务
service ssh restart
4.)连接 kali-linux
切换到Xshell页面,点击连接,连接成功画面

七.连接 ubuntu 系统
基本步骤与 kali-linux 的连接步骤相同
不同之处:
1.查看 ubuntu 系统ip
ip a # 查看本机ip
2.安装ssh服务
kali-linux自带ssh服务,ubuntu 系统必须另外安装
sudo apt install openssh-server
3.启用ssh服务
systemctl start ssh# 启动ssh服务
systemctl restart ssh# 重启ssh服务
网硕互联帮助中心







评论前必须登录!
注册