文章目录
- 前言
- 一、Linux基础
- 二、Kali-Linux配置
- 三、Kali-Linux其他配置
-
- [1. SSH服务配置](#1. SSH服务配置)
- [2. APT与APT-GET包管理工具](#2. APT与APT-GET包管理工具)
- [3. OpenJDK配置](#3. OpenJDK配置)
- 总结
前言
Linux 作为一款开源操作系统,自1991年问世以来,凭借其稳定性、安全性和灵活性,在服务器、桌面、移动设备和嵌入式系统等领域得到了广泛应用。本文将带您走进Linux的世界,从Linux的基础知识、常用命令、文件属性到Kali-Linux的配置,让您快速了解这一强大的操作系统。
一、Linux基础
1.Linux简介
Linux 是一种广泛使用的开源操作系统,它基于UNIX系统,由Linux Torvalds在1991年首次发
布。Linux系统以其稳定性、安全性和灵活性而闻名,被广泛应用于服务器、桌面、移动设备和嵌入式
系统。
●Linux发行版本
Linux发行版是将Linux内核与各种应用软件集合在一起的操作系统版本。它们通常包含图形用户界
面、办公软件、网页浏览器和其他工具。
●知名发行版 :Ubuntu、Fedora、Debian、Red Hat Enterprise Linux(RHEL)、CentoS(现已转向支持
Rocky Linux)、openSUSE、Arch Linux等。
●特定用途发行版 :例如,Kali Linux是基于Debian的安全和渗透测试发行版。
Linux有上百种不同的发行版,如基于社区开发的debian、archlinux
,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux
等。
●Linux和Windows的区别
目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是Windows。
主要区别如下:
特性 | Windows | Linux |
---|---|---|
界面 | 统一的图形用户界面,易于使用 | 多样的图形用户界面,取决于发行版;终端界面强大,适合高级用户 |
易用性 | 易于入门,适合非技术用户 | 图形界面友好,但命令行界面需要一定学习曲线 |
学习曲线 | 相对简单,但深入学习可能较难 | 开源社区支持,知识传承性好,深入学习资源丰富 |
软件生态 | 大量商业软件,可能需要购买授权 | 大量自由和开源软件,但也有商业软件解决方案 |
定制性 | 定制性有限 | 高度可定制,用户可以根据自己的需求调整系统 |
成本 | 操作系统和部分软件可能需要购买 | 大部分发行版和软件免费,但某些商业支持和服务可能需要付费 |
安全性 | 需要定期更新和补丁以保持安全 | 以高安全性著称,开源社区快速响应安全问题 |
社区支持 | 微软官方支持,大型用户社区 | 全球开发者和用户社区支持,适合协作和创新 |
2.命令提示符
bash
┌──(root㉿kali)-[~]
└─#
bash
root@kali:~#
● root :表示当前用户
● kali :表示当前主机名
● ~
:表示当前目录,~
波浪线为当前用户家目录,切换到不同目录,波浪线也会改变为相应的目录
● Linux中的命令行提示符 $
和 #
(1) 提示符$
:是普通用户的命令行提示符。当以普通用户身份登录到系统时,命令行提示符通常显示为$
。这表示以普通用户的权限执行命令。
(2) 提示符#
:是超级用户(也称为root用户)的命令行提示符。当以超级用户身份登录到系统时,命令行提示符通常显示为#
。这表示以最高权限执行命令,具有对系统的完全控制权。
在大多数情况下,普通用户只能执行一些特定的操作,而超级用户可以执行更高级别的系统管理任务。
因此,当看到#
提示符时,要格外小心,确保你知道自己在做什么,以免对系统造成意外的影响。
请注意,提示符的具体形式可能因不同的 Linux 发行版和终端设置而有所不同。上述描述是常见的默认
设置,但可能会因个人配置而有所变化。
3.Linux目录结构
Linux
或Unix
操作系统中的文件系统采用层次结构,以根目录/
开始,形成一个倒置的树状结构。
这种结构使得文件和目录的组织有序且易于导航。
● /
文件系统的最顶层是由根目录开始的,系统使用/
来表示根目录。
在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。
每一个文件和目录都从根目录开始。只有 root 用户具有该目录下的写权限。
进入系统后在桌面点击鼠标右键,选择 【Open Terminal】 打开一个命令行窗口,这个命令行窗口也叫"终端"。
在登录Linux系统后,执行如下命令:
bash
ls/
可以看到类似如上图显示的文件夹目录
● /bin :用户二进制文件,包含二进制可执行文件。例如:ps,ls,ping,grep,cp等。
● /boot :这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
● /dev :设备文件目录,包含系统识别的硬件设备文件。
● /etc :系统配置文件和系统管理工具存放目录。
● /home :用户的个人目录,通常以用户名命名。
● /lib :存放系统最基本的动态链接库和静态库文件。几乎所有的应用程序都需要用到这些共享库。
● /opt :可选应用程序的安装目录,通常用于额外的软件包。
● /root :系统管理员(超级用户)的主目录
● /sbin :存放系统管理员使用的系统二进制文件,如服务管理命令。
● /usr :用户应用程序和文件的存放目录,类似于 Windows 的 Program Files。
ㅇ/usr/bin :用户使用的应用程序。
ㅇ/usr/sbin :超级用户使用的高级管理程序和系统守护进程。
● /tmp :存放临时文件的目录,这些文件在系统重启后可能被删除。
● /var:存放经常变化的文件,如日志文件、数据库文件等。
4.文件操作
(1)cd
用于更改当前工作目录。
用法:cd [目录]
示例:cd /var/www/html
bash
$ cd /var/www/html
解释: 这个命令将当前工作目录更改为 /war/www/html
。现在你可以在这个目录下执行其他命令了。
cd命令 用于切换目录。它的一般语法是 cd <目录路径>。你可以指定绝对路径(从根目录开始的完整路径)或相对路径(相对于当前工作目录的路径)来切换到目标目录。
特殊目录切换操作 :
/
:文件系统的最顶层是由根目录开始的,系统使用/
来表示根目录。
-
:-
是一个特殊的目录切换符号,表示切换到上一个工作目录。例如,如果你当前在/var/www/html
目录中,执行cd -
命令将切换回上一个工作目录。
.
:.
表示当前目录。它可以用作相对路径中的参考点。例如,如果你当前在/var/www/html
目录中,
执行cd .
命令将保持在当前目录。
··
:..
表示上一级目录。它可以用作相对路径中的参考点。例如,如果你当前在/var/www/html
目
录中,执行cd ..
命令将切换到/var/www
目录。
(2)pwd
用于显示当前工作目录的路径。
用法:pwd
示例:pwd
bash
$ pwd
/var/www/htm1
解释:这是pwd命令 的结果,它显示当前工作目录的路径。在这个例子中,当前工作目录是/var/www/html
。
(3)mkdir
用于创建新目录
用法:mkdir [选项] 目录名
示例:mkdir test
bash
$ mkdir test
解释:这个命令创建了一个名为test的新目录。它在当前工作目录下创建了一个新的子目录。
常用选项:
●-p
:递归地创建目录,如果父目录不存在则一并创建。例如,mkdir -p /path/to/new/directory
将创建 /path/to/new/directory
目录及其所有父目录。
●-m
:设置新创建目录的权限模式。例如,mkdir -m 755 new_directory
将创建一个名为new_directory
的目录,并将其权限设置为755 。
●-v
:显示创建的每个目录的详细信息。
这些只是mkdir命令 的一些常见用法和选项。你可以通过查看mkdir命令 的帮助文档(man mkdir)来获
取更多详细信息和其他选项。
(4)rm
用于删除文件或目录。
●用法:rm [选项]文件/目录
●示例:rm file.txt
bash
$ rm file.txt
解释:这个命令尝试删除名为 file.txt 的文件。如果文件存在并且你有足够的权限,它将被删除。如果文件不存在,你将收到一条错误消息。
常用选项:
●-r :递归地删除目录及其内容。如果要删除目录,必须使用此选项。例如,rm -r directory
将删除
directory 目录及其所有内容。
●-f :强制删除,无需确认。使用此选项时要小心,因为删除的操作不可逆。例如,rm -rf directory
将强制删除 directory 目录及其所有内容,无需确认。
●-i :交互式删除,每次删除前都会提示确认。例如,mv -i file
将在删除 file 之前提示确认。
●-v :显示每个删除的文件或目录的详细信息。
这些只是rm命令 的一些常见用法和选项。你可以通过查看rm命令的帮助文档(man rm)来获取更多详细信息和其他选项。
请注意,在使用命令删除文件或目录时要小心,因为删除的操作不可逆。请确保你要删除的文件或
目录是你想要删除的,并且备份重要的数据。
(5)cp
用于复制文件或目录。
用法:cp [选项]源文件/目录 目标文件/目录。
示例:cp file.txt /tmp
bash
$ cp file.txt /tmp
解释:这个命令尝试将名为 file.txt 的文件复制到 /tmp 目录。如果文件存在并且你有足够的权限,它将被复制到目标目录。如果文件不存在,你将收到一条错误消息。
常用选项:
●-r :递归地复制目录及其内容。如果要复制目录,必须使用此选项。例如cp -r directory1 directory2
将递归地复制 directory1 目录及其所有内容到 directory2 目录。
●-i :交互式复制,每次复制前都会提示确认。例如,cp -i file1 file2
将在复制file1到file2之前提示确认。
●-v :显示每个复制的文件或目录的详细信息。
这些只是cp命令 的一些常见用法和选项。你可以通过查看cp命令 的帮助文档(man cp)来获取更多详
细信息和其他选项。
请注意,在使用cp命令 复制文件或目录时要小心,确保目标位置不存在同名文件或目录,以免覆盖原
有数据。
(6)mv
用于移动文件或目录,或者重命名文件或目录。
用法:mv [选项]源文件/目录 目标文件/目录
示例:mv file.txt /tmp
bash
$ mv file.txt /tmp
解释:这个命令尝试将名为 file.txt 的文件移动到 /tmp 目录。如果文件存在并且你有足够的权限,它将被
移动到目标目录。如果文件不存在,你将收到一条错误消息。
bash
$ mv file.txt newfile.txt
解释:将名为 file.txt 的文件重命名为 newfile.txt。
常用选项:
●-i :交互式移动,每次移动前都会提示确认。例如,mv -i file1 file2
将在移动 file1 到 file2 之前提示确认。
●-v :显示每个移动的文件或目录的详细信息。
这些只是mv命令的一些常见用法和选项。你可以通过查看mv命令的帮助文档(man mv)来获取更多详细信息和其他选项。
请注意,在使用mv命令 移动文件或目录时要小心,确保目标位置不存在同名文件或目录,以免覆盖原有数据。
(7)touch
用于创建空文件或更新文件的访问和修改时间。
用法:touch [选项]文件
示例:touch file.txt
bash
$ touch file.txt
解释:这个命令创建一个名为file.txt的空文件。如果文件不存在,它将被创建。如果文件已经存在,它将更新文件的访问和修改时间。
再次列出当前目录文件和子目录
bash
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 Jan 1 1970 test
-rw-r--r-- 1 user user 0 Jan 1 1970 file.txt
解释:这是ls -l
命令的结果,它列出了当前目录中的文件和子目录,并显示了详细的文件信息,包括权限、所有者、大小和修改日期。在这个例子中,当前目录下有一个名为 test 的子目录和一个名为 file.txt 的文件。
5.绝对路径与相对路径
(1)绝对路径
绝对路径 :从根目录/
开始的完整路径,如:/usr/share/doc
绝对路径指定了从根到目标文件或目录的完整路径。无论当前工作目录在哪里,绝对路径总是指向同一个位置。
示例:假设我们要访问/usr/share
目录下的doc
目录中的example.txt
文件。绝对路径将是:
bash
/usr/share/doc/example.txt
无论当前位于哪个目录,使用上述绝对路径都能访问到 example.txt 文件。
(2)相对路径
相对路径 :相对于当前工作目录的路径,如:从/usr/share/doc
目录到/usr/share/man
目录可以使用
cd ../man
。
相对路径它不从根目录/
开始,而是根据当前所在的位置来定位文件或目录。
示例:
1.如果当前工作目录是/home/user
,要访问/home/user/docs
目录中的 report.txt 文件,相对路径将是:
bash
docs/report.txt
2.如果当前工作目录是/usr/share
,要访问etc/apache2
目录中的 apache2.conf 配置文件,相对路径可能是:
bash
../../etc/apache2/apache2.conf
这里的..
表示上一级目录,,../../
表示上两级目录,依此类推。
特殊目录引用
●·
表示当前目录。
●..
表示当前目录的父目录。
示例操作
假设当前工作目录是/home/user/docs
,要执行以下操作:
1.访问当前目录中的 report.txt 文件:
bash
./report.txt
2.访问上一级目录(即/home/user
)中的config文件:
bash
../config
3.返回到根目录/
:
bash
cd /
4.从根目录访问/home/user/docs/report.txt
:
bash
home/user/docs/report.txt
注意,虽然这看起来像是一个绝对路径,但实际上它是一个相对路径,因为它没有从根目录/
开始
在根目录下使用时,需要在路径前加上/
使其成为绝对路径。
6.Linux文件属性
Linux系统通过文件权限来控制对文件和目录的访问,确保系统的安全性和多用户环境下的正确使用。文件权限决定了谁可以读、写或执行文件。
(1)查看文件属性
在Linux中我们可以使用ll
或者ls -l
命令来显示一个文件的属性以及文件所属的用户和组,如:
bash
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2022 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2022 boot
......
文件权限的表示方法
1.字符表示法 :使用r
(读)、w
(写)、×
(执行)和-
(无权限)来表示权限。
2.数字表示法 :每个权限对应一个数字,r=4,w=2,×=1。权限数字相加表示最终权限。
每个文件的属性由左边第一部分的10个字符来确定:
第 0 位:确定文件类型
第 1-3 位:确定属主(该文件的所有者)拥有该文件的权限
第 4-6 位:确定属组(所有者的同组用户)拥有该文件的权限
第 7-9 位:确定其他用户拥有该文件的权限。
第 1、4、7 位:表示读权限,如果用r
字符表示,则有读权限,如果用-
字符表示,则没有读权限:
第 2、5、8 位:表示写权限,如果用w
字符表示,则有写权限,如果用-
字符表示没有写权限;
第 3、6、9 位:表示可执行权限,如果用x
字符表示,则有执行权限,如果用-
字符表示,则没有执行权限。
文件类型与权限
●第一个字符表示文件类型:
ㅇd
:目录
ㅇ-
:普通文件
ㅇl
:符号链接,链接文档(link file)
ㅇb
:块设备文件,可供储存的接口设备(可随机存取装置)
ㅇc
:字符设备文件,串行端口设备,例如键盘、鼠标(一次性读取装置)
●接下来的三组字符分别表示拥有者(owner) 、所属组(group) 和 其他用户(others) 的权限
(2)更改文件属性
chown
:更改文件所有者(owner),也可以同时更改文件所属组(group)
语法:
bash
chown [-R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
进入/root
目录(~)将 install.log 的拥有者改为 bin 这个账号:
bash
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将 install.log 的拥有者与群组改回为 root:
bash
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
● chmod:更改文件权限
ㅇ使用数字表示法设置权限。
ㅇ使用符号表示法设置权限,如u+x(给所有者添加执行权限)。
Linux文件的基本权限就有九个,分别是owner / group / others(拥有者/组/其他)三种身份各有自己的read / write / execute权限。
bash
r:4
w:2
x:1
属主:u(user)
属组:g(group)
其他:o(other)
每种身份(owner / group / others)各自的三个权限(r/w/x)分数是需要累加的
例如:要设置test
文件权限为:-rwxrwx---
那么分数则是:
● owner = rwx = 4+2+1 = 7
● group = rwx = 4+2+1 = 7
● others = --- = 0+0+0 = 0
那么修改权限命令为:
bash
chmod 770 test
7.VIM编辑器
Vim是一个著名的功能强大、高度可定制的Unix及类Unix系统文本编辑器。
VIM的三种模式:
● 命令模式(Command mode)
● 输入模式(Insert mode)
● 底线命令模式(Last line mode)
1.命令模式
● 初始模式,接受键盘输入作为命令来操作文本。
● 例如,移动光标、查找内容、复制或删除文本等。
2.输入模式
● 通过在命令模式下按下i
、I
、a
、A
、o
、O
等键进入。
● 允许用户插入文本。
● i :在当前光标位置插入文本。
● I :在当前行的第一个非空字符前插入。
● a :在当前光标后插入文本。
● A :在当前行的末尾插入文本。
● o :在当前行下方新开一行并插入。
● O:在当前行上方新开一行并插入。
3.底线命令模式
● 通过在命令模式下按下:进入。
● 用于输入单行命令,如保存、退出、查找替换等。
● 一些基本命令包括:
ㅇ:w
:保存文件。
ㅇ:q
:退出Vim。
ㅇ:wq
或 :x
:保存文件并退出。
ㅇ:q!
:不保存退出。
按ESC
键可随时退出底线命令模式。
二、Kali-Linux配置
1.用户配置
● 默认账号密码 :kali / kali
● 更改Kali用户密码
bash
passwd kali
# passwd: 用于更改指定用户的密码。
● kali用户更新源
bash
sudo apt update
#命令解释
sudo:使用root权限执行后续命令
apt update:更新apt源列表
● 设置root密码 :出于安全考虑,Kali Linux 默认禁用 root 账户。如果需要使用 root 权限,可以设置密码后通过su
命令切换。
bash
# 给root用户设置密码
sudo passwd root
● 切换到root用户:切换时输入的密码,是当前用户的密码,并非 root 用户的密码
bash
sudo su
2.网络配置
了解即可,不需要自行操作配置
网络配置是确保系统能够与其他设备通信的关键步骤。
配置文件路径:
/etc/network/interfaces
1.编辑网络配置文件
● 使用文本编辑器(如Vim)编辑网络配置文件
bash
vim /etc/network/interfaces
2.DHCP配置(动态IP)
● 配置网络接口 eth0 以使用 DHCP 自动获取 IP 地址:
bash
auto eth0
iface eth0 inet dhcp
● 如果未自动获取 IP ,可以使用以下命令触发 DHCP 过程,自动获取分配 IP 地址:
bash
dhclient
3.静态IP配置
● 配置网络接口 eth0 使用静态 IP 地址。
确保替换为你的实际网段和地址,这里的固定 IP 地址网段,要跟自己虚拟机设置的 vmnet 网段一致才可以:
bash
auto eth0
iface eth0 inet static
address 192.168.101.101
netmask 255.255.255.0
gateway 192.168.101.1
4. 配置DNS
● 编辑 DNS 配置文件以指定 DNS 服务器:
bash
# vim打开配置文件
vim /etc/resolv.conf
● 然后添加所需的 DNS 服务器地址:
bash
# 在文件原有内容的上方添加
nameserver 114.114.114.114
5. 网络服务重启
bash
systemctl restart networking
或者
bash
service networking restart
service network-manager restart
6. 网络配置验证
● 使用以下命令来验证网络配置并检查网络连接:
bash
ping -c 4 tt.cn
7. 网络接口启用与禁用
● 启用网络接口:
bash
ifup eth0
● 禁用网络接口:
bash
ifdown eth0
8. 无论是使用 DHCP 自动获取 IP 还是配置静态 IP ,都应确保网络设置适合您的网络环境。最后,不要忘记在配置更改后重启网络服务或使用相应的命令来应用更改。
三、Kali-Linux其他配置
以下内容将介绍 Kali Linux的一些其他高级配置。若对此感兴趣,不妨上网搜索更多相关信息进行深入了解。
1. SSH服务配置
SSH,即Secure Shell的简称,是一种安全的网络传输协议,它能够在不稳定的网络环境中为网络服务提供安全的传输通道。SSH通过构建网络中的安全隧道,实现客户端与服务器之间的安全连接。
SSH最常见的应用场景是远程登录系统,人们通常利用它来传输命令行界面以及执行远程命令。
尽管SSH在类Unix系统中使用最为广泛,但Windows操作系统也能在一定程度上支持SSH功能。
2. APT与APT-GET包管理工具
●APT(Advanced Packaging Tool)是Debian及其衍生版本(如Ubuntu)中的一款功能强大的命令行包管理工具。它提供了一个用户友好的操作界面,用于处理.deb软件包的安装、更新、升级和删除等操作。需要注意的是,执行APT命令时需要具备超级管理员权限(root)。
APT的优势主要体现在以下几个方面:
ㅇ 易用性:APT提供了简洁的命令和选项,使得包管理操作变得更加简单。
ㅇ 自动化依赖管理:它能自动解决软件包之间的依赖关系。
ㅇ 系统更新与安全:确保系统能够及时更新到最新的安全补丁和软件版本。
●APT-get是APT的前身,主要用于处理软件包的安装和卸载。虽然APT-get仍然可以使用,但APT在大多数情况下提供了更为现代化的用户体验。
●APT与APT-get的区别主要体现在:
ㅇ用户体验:APT支持彩色输出和进度条,相较于APT-get的传统输出更为直观。
ㅇ 功能集成:APT整合了APT-get和APT-cache的常用功能,提供了更为简洁的命令。
ㅇ 脚本编写:APT-get的输出格式稳定,更适合用于脚本自动化。
●为何选择APT?
虽然APT与APT-get在许多方面相似,但APT提供了更为现代、友好的用户体验。对于日常使用,APT通常是更佳的选择。然而,在需要稳定输出以编写脚本的情况下,APT-get可能更为合适。
3. OpenJDK配置
OpenJDK是一款开源、免费的Java开发工具包,能够满足大多数开发需求。
相较于Oracle JDK,它缺少了一些额外的商业功能和工具,且在商业环境下使用Oracle JDK需考虑许可证费用。
OpenJDK与Oracle JDK在Java核心功能上保持一致,但在某些高级功能和工具上可能存在差异,例如,一些特定于Oracle的功能和工具可能仅存在于Oracle JDK中。
总结
本文为读者提供了一个简单的Linux入门指南,从Linux的基础知识到Kali-Linux的配置,最后带读者简单了解了其他较高级配置,内容丰富且实用。
文章首先介绍了Linux的起源和特点,让读者对Linux有一个初步的认识。接着,简单讲解了命令提示符的使用,以及Linux的目录结构和文件操作,帮助读者掌握在Linux环境下高效管理文件的方法。此外,文章还区分了绝对路径与相对路径,并简单探讨了Linux文件属性,使读者能够更好地理解文件权限和安全设置。
在VIM编辑器部分,也简单介绍了这款强大编辑器的使用技巧,为读者在文本编辑方面提供了较为有力支持。转入Kali-Linux配置部分,着重讲解了用户配置和网络配置,这对于想要在Kali-Linux上进行安全测试的用户来说,是较为实用的内容。
总的来说,本文较适合Linux初学者作为学习资料,也适合有一定基础的用户进行知识巩固和技能提升。
如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!