云计算百科
云计算领域专业知识百科平台

2.2_linux系统--kali linux 系统基础

前言:

  • 本文主要讲解 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参数详解
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 参数详解
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 值 :

初始 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用户

:代表 /root (管理员用户所在的目录)
b.普通用户(kali)

提示符颜色为 **蓝色** 代表 普通用户

第一个kali:当前登录的用户名

第二个kali:当前登录的主机名

$ : 代表普通用户

:代表 /home/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服务

赞(0)
未经允许不得转载:网硕互联帮助中心 » 2.2_linux系统--kali linux 系统基础
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!