【深入探索】Linux基础及配置

文章目录


前言

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目录结构

LinuxUnix操作系统中的文件系统采用层次结构,以根目录/开始,形成一个倒置的树状结构。

这种结构使得文件和目录的组织有序且易于导航。

● /

文件系统的最顶层是由根目录开始的,系统使用/来表示根目录。

在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。

每一个文件和目录都从根目录开始。只有 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.输入模式

● 通过在命令模式下按下iIaAoO等键进入。

● 允许用户插入文本。

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初学者作为学习资料,也适合有一定基础的用户进行知识巩固和技能提升。


如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!

相关推荐
qq_243050792 小时前
sslscan:快速 SSL/TLS 扫描器!全参数详细教程!Kali Linux教程!黑客渗透教程!
linux·网络安全·黑客·渗透测试·信息收集·kali linux·黑客工具
亦世凡华、3 小时前
全栈开发:使用.NET Core WebAPI构建前后端分离的核心技巧(一)
经验分享·.netcore·依赖注入·跨域解决·缓存方法
稚辉君.MCA_P8_Java5 小时前
ElasticSearch view
大数据·linux·elasticsearch·搜索引擎·全文检索
枫叶落雨2225 小时前
15JavaWeb——Maven高级篇
linux·python·maven
阿正的梦工坊5 小时前
深入解析 Chrome 浏览器的多进程架构:标签页是进程还是线程?(中英双语)
linux·服务器·前端·chrome·架构·unix
稚辉君.MCA_P8_Java6 小时前
SpringAI 人工智能
大数据·linux·人工智能·分布式·spring
时差freebright6 小时前
【Linux系统】信号:信号保存 / 信号处理、内核态 / 用户态、操作系统运行原理(中断)
linux·运维·信号处理
慕斯-ing6 小时前
VSCode设置内容字体大小
经验分享·vscode·编辑器
成都被卷死的程序员7 小时前
从0开始,来看看怎么去linux排查Java程序故障
java·linux·运维·服务器