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


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

相关推荐
博语小屋12 分钟前
进程初识之进程状态
linux
吉凶以情迁1 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
柏木乃一2 小时前
Linux初步认识与指令与权限
linux·运维·服务器·shell·权限
Joemt2 小时前
ubuntu源码编译安装cmake高版本、pybind11安装、crow使用
linux·运维·ubuntu
huohuopro3 小时前
在linux(ubuntu)服务器上安装NTQQ并使用
linux·ubuntu
Jooolin3 小时前
Ubuntu?Centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·ai编程
Sadsvit3 小时前
Linux 进程管理与计划任务
linux·服务器·网络
bigcarp4 小时前
linux + 宝塔面板 部署 django网站 启动方式:uwsgi 和gunicorn如何选择 ?
linux·运维·django
爱凤的小光4 小时前
图漾相机-ROS1_SDK_ubuntu 4.X.X版本编译
linux·数码相机·ubuntu