Linux基础-常用操作命令详讲

Linux基础-常用操作命令详讲

一、openssl加密简单介绍

1. 生成加密的密码散列(password hash)​编辑

1.1 常见的选项总结表

1.2 加密参数详解

2. 自签名证书

3. 证书转换

二、文件管理

1. 创建空文件

​编辑

2. 删除文件

4. 新建目录

​编辑

5. 删除空目录

6. 重命名文件

7. 移动文件

8. 拷贝文件

9. 软连接

​编辑

10. 硬链接

三、搜索文件

1.which

2.echo

3. locate(local.db)

4. find

5.小结

四、用户账号数据库

1. 用户数据库相关文件

/etc/passwd

/etc/shadow

2. 组账号/etc/group

3. 禁用账号

passwd -l username

chage -E 1990-01-01 username

passwd -S username

4. 小结

五、文件系统权限

1. 查看权限

2. 更改文件所有者

3. 修改文件权限

5.常见的权限数字

六、系统日志

1. 系统日志

2. 认证信息日志

3. 二进制日志

4. systemd日志

5.Linux常见日志文件

七、存储管理

1. 内存使用量

2. 磁盘使用量

3. 文件或目录大小

4. 查看硬盘分区

5. 挂载分区

6. 小结

八、基本网络枚举

1. 基本网络工具

2. 网络配置

(1) /etc/network/interfaces

文件格式和示例

(2)Networkmanager

3. 小结

九、网络链接

1. 网络链接

1.1 实际用途

2. 二层地址

4. 路由信息

十、ssh服务

1. 启动服务

2. 配置文件

十一、远程拷贝

示例1:

示例2:

十二、其余杂项

1. history

2. clear

3. whomai

4. id

5. vim

6. cat

结语


学习视频泷羽sec:

linux基础(1)_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1fnDsYAEwZ/?spm_id_from=333.880.my_history.page.click


Linux基础-常用操作命令详讲

本章使用的linux版本为:kali-linux-2024.1

在现代IT运维和开发工作中,Linux操作系统因其稳定性、灵活性和开源特性,成为了广泛应用的系统平台。无论是服务器管理、开发环境配置,还是日常的系统维护,掌握Linux常用操作命令都是必不可少的技能。本文将详细讲解Linux基础命令,包括文件操作、进程管理、用户权限等内容,帮助读者快速上手并高效地使用Linux系统进行日常工作。无论你是Linux新手还是希望加深理解的老手,本篇文章都将为你提供实用的知识和技巧。

一、openssl加密简单介绍

在Kali Linux中,openssl 是一个广泛使用的工具,提供了多种加密功能。它可以用于生成密钥、证书管理、加密和解密数据、生成散列值(hash),以及支持多种加密算法,如对称加密、非对称加密、哈希算法等。

1. 生成加密的密码散列(password hash)

1.1 常见的选项总结表
参数加密算法说明
-1MD5-based crypt使用 MD5 算法进行加密。
-5SHA-256使用 SHA-256 算法生成密码哈希。SHA-256 是较为常用的密码哈希算法,它比 MD5 更安全。
-6SHA-512使用 SHA-512 算法进行加密,安全性更高。
-salt val带盐加密提供一个特定的盐值(salt)。盐值用于增强密码哈希的安全性,可以使相同的密码在每次哈希时产生不同的结果。
-apr1MD5 算法的 Apache 变种这是 Apache HTTP 服务器使用的加密方式,适用于 Web 应用程序中的密码存储。
-aixmd5AIX MD5 算法生成密码哈希这是 IBM AIX 操作系统使用的 MD5 哈希算法,适用于在 AIX 系统中处理密码。
1.2 加密参数详解
  • -1:使用 MD5-based crypt 算法。

    • 这是默认的加密方法,采用的是 Unix/Linux 系统中的标准 MD5 算法。

    • 格式:\$1$salt$hash

    • 示例:openssl passwd -1 123

    • 这个加密方式虽然相对简单,但被认为不再足够安全。

  • -5:使用 SHA-256 算法。

    • SHA-256 是一种更加安全的哈希算法,相比 MD5 和 SHA-1 更加难以破解。

    • 格式:\$5$salt$hashed_password

    • 示例:openssl passwd -5 123

    • MD5 已经被认为是不安全的,现代系统很少使用。

  • -6:使用 SHA-512 算法。

    • 这是一个更加安全的密码加密方式,比 MD5 和 SHA-1 更强。

    • 格式:\$6$salt$hashed_password

    • 示例:openssl passwd -6 123

    • SHA-512 更加抗碰撞攻击,适合用于高安全性需求的环境。

  • -salt:指定盐(salt)。

    • 盐是随机生成的一串字符,用来增加密码哈希的不可预测性,防止相同的密码产生相同的哈希值。

    • 示例:openssl passwd -1 -salt abcdef 123(使用 abcdef 作为盐)

  • -apr1: 使用 MD5 算法的 Apache 变种进行密码哈希。

    • 使用 MD5 算法的 Apache 变种进行密码哈希。这是 Apache HTTP 服务器使用的加密方式,适用于 Web 应用程序中的密码存储。

    • 示例:openssl passwd -apr1 mypassword

  • -aixmd5: AIX MD5 算法生成密码哈希

    • 盐是随机生成的一串字符,用来增加密码哈希的不可预测性,防止相同的密码产生相同的哈希值。

    • 示例:openssl passwd -aixmd5 mypassword

2. 自签名证书

在某些情况下(例如测试或内部应用),你可能不需要 CA 颁发的证书,而是使用自签名证书。

openssl req -new -x509 -key private.pem -out cert.pem
  • -x509:表示生成自签名证书,而非仅仅生成 CSR。

  • -key private.pem:使用私钥签署证书。

  • -out cert.pem:将证书输出到 cert.pem 文件。

3. 证书转换

将der转为pem格式 示例openssl x509 -in cacert.der -inform DER -out cacert.pem -outform PEM

PS:功能不止于此,openssl覆盖了加密、证书管理、密钥生成、文件加密/解密、哈希计算、SSL/TLS 连接测试等多个领域。你可以通过这些命令快速生成和管理密钥、证书,以及执行各种加密操作。

二、文件管理

1. 创建空文件

  • 创建单个文件:touch newfile

  • 创建多个文件:touch newflie1 newfile2 newfile3

2. 删除文件

  • 删除文件:rm newfile

  • 强制删除:rm -f newfile

  • 递归删除:rm -r newfile

  • 强制递归删除目录及其所有内容:rm -rf new

  • 清空当前目录所有文件:rm -rf *

4. 新建目录

  • 新建单个目录:mkdir newdir

  • 新建多个目录:mkdir newdir1 newfile2 newfile3

5. 删除空目录

  • rmdir newdir

6. 重命名文件

  • mv file.txt new.txt

7. 移动文件

  • mv new.txt newdir

8. 拷贝文件

  • cp file.txt newwdir.txt

9. 软连接

  • ln -s newdir symlink

10. 硬链接

  • ln file1.txt hardlink.txt

PS:

  • 硬链接:不支持对目录创建,只能对文件创建。删除其中一个硬链接不会影响其他硬链接,只有当所有硬链接都被删除时,原始文件才会被删除。

  • 软链接:可以对文件和目录创建。删除软链接不会影响原始文件,但如果原始文件被删除,软链接将失效。

  • 软链接常用干方便管理,例如将复杂路径的文件链接到简单路径下,或者解决文件系统空间不足的问题。硬链接则主要用于防止误删除文件。


三、搜索文件

1.which

  • which 命令用于查找并显示可执行文件的位置。

  • 示例

    • which ifconfig

    • which python

2.echo

  • echo 命令用来打印字符串或变量的值。

  • $PATH 是一个环境变量,包含了 Linux 系统中所有可执行文件的目录路径。系统会在这些目录中查找用户输入的命令。它们用冒号 : 分隔。

  • 示例:echo $PATH

3. locate(local.db)

  • sudo updatedb 命令用于更新 locate 命令使用的数据库

  • locate 命令通过查询更新后的数据库来查找文件,这里查询的是 whoami.exe 文件的位置。

  • locatefind 快,因为它是基于数据库查询,而不是实时遍历文件系统。

  • 示例:locate whoami.exe #如果 whoami.exe存在,命令会输出该文件的完整路径。

4. find

find 命令除了可以查找文件,还可以根据不同的条件执行操作。我们可以通过 -exec 执行命令。

  • 示例1:find ~ -mtime 2 -ls | sort -k9 -k10 | more

    • find ~:在当前用户的 home 目录(~)下查找文件。

    • -mtime 2:查找修改时间为两天前的文件。mtime 选项表示文件的最后修改时间,单位是天。

    • -ls:列出每个找到的文件的详细信息(类似 ls -l)。

    • |(管道):将 find 命令的输出传递给下一个命令(sort)。

    • sort -k9 -k10:按照第 9 和第 10 列(即文件的最后修改时间)进行排序。find -ls 输出的第 9 和 10 列是时间戳,通常用来按时间排序。

    • more:分页显示输出。可以在屏幕上逐页查看长列表。

该用于测试的虚拟机是新装的所以没有两天前修改文件是操作。

  • 示例2:find . -type f -iname '*.sh' -mmin -30 -ls

    • find .:从当前目录开始查找。

    • -type f:查找类型为文件(f)。

    • -iname '*.sh':查找文件名以 .sh 结尾的文件,忽略大小写。

    • -mmin -30:查找修改时间在过去 30 分钟内的文件。

    • -ls:列出找到的文件的详细信息。

  • 示例3:find . -name '*.svn' -exec rm -rf {} \;

    • find .:从当前目录开始查找。

    • -name '*.svn':查找文件名以 .svn 结尾的文件或目录。

    • -exec rm -rf {} \;:对于每一个找到的 .svn 文件或目录,执行 rm -rf 命令进行递归删除。{}find 命令找到的文件或目录的占位符,\; 表示命令结束。

  • 示例4:find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null

    • find /:从根目录开始查找。

    • -user root:查找所有者是 root 用户的文件。

    • -type f:查找文件类型为普通文件。

    • -perm -o=w:查找其他用户有写权限的文件。-o=w 表示其他用户可以写该文件。

    • -name '*.sh':查找文件名以 .sh 结尾的文件。

    • 2>/dev/null:将错误输出重定向到 /dev/null,即忽略错误信息。这通常用于避免显示没有权限访问的文件或目录的错误。

5.小结

  • which:查找命令的位置。

  • echo $PATH:显示 PATH 环境变量,显示可执行文件的搜索路径。

  • locate:通过查询预先建立的数据库查找文件,需要先更新数据库。

  • slocateslocatelocate 命令的一个安全版本,它的数据库文件权限更严格,只有授权的用户可以访问。操作和locate相同

  • find:强大的文件搜索命令,可以根据文件的不同属性(如时间、权限、大小、文件名等)查找文件,并支持执行操作。


四、用户账号数据库

1. 用户数据库相关文件

/etc/passwd

/etc/passwd 文件是 Linux 系统中存储用户账号基本信息的主要文件。每个用户都在此文件中有一行记录,每一行包含了一个用户的不同属性。这个文件是 可读的,也就是说,所有用户都可以读取该文件,但无法修改。

  • 每行记录的格式如下:

    • username:password:UID:GID:GECOS:home_directory:shell

      • username:用户的登录名。

      • password:存储用户密码的字段(现在通常存储为 x,实际的加密密码存储在 /etc/shadow 文件中)。

      • UID:用户的唯一标识符(User ID)。

      • GID:用户的组标识符(Group ID)。

      • GECOS:用户的额外信息,通常是用户的全名或描述。

      • home_directory:用户的主目录路径。

      • shell:用户的默认登录 shell(比如 /bin/bash)。

    • 查看示例:cat /etc/passwd

/etc/shadow

/etc/shadow 文件存储了用户账号的加密密码以及与密码相关的其他信息。这个文件是 只有 root 用户可读 的,它通常比 /etc/passwd 更加敏感。

  • 每一行记录的格式如下:

    • username:encrypted_password:last_changed:min_age:max_age:warn_period:inactive_period:expire_date:reserved

      • username:用户的登录名。

      • encrypted_password:加密后的密码。如果密码为空或被禁用,则会显示 *!

      • last_changed:密码最后一次更改的日期,通常以自 1970 年 1 月 1 日以来的天数表示。

      • min_age:密码更改的最小间隔天数(即最短密码有效期)。

      • max_age:密码的最大有效期(即密码必须在多少天后更改)。

      • warn_period:密码到期前多少天开始警告。

      • inactive_period:密码过期后,账户被禁用的天数。

      • expire_date:账户的过期日期,格式与 last_changed 类似,表示自 1970 年以来的天数。

      • reserved:保留字段,通常不使用。

    • 查看示例:cat /etc/shadow

2. 组账号/etc/group

/etc/group 文件存储了 Linux 系统中所有用户组的信息。每个用户组有一行记录。

  • 记录的格式如下:

    • group_name:password:GID:member1,member2,...

      • group_name:用户组的名称。

      • password:组密码字段,通常为空,表示不使用组密码。

      • GID:用户组的唯一标识符(Group ID)。

      • members:该组的成员用户名,多个成员之间用逗号分隔。

    • 查看示例:cat /etc/group

3. 禁用账号

passwd -l username

此命令用于锁定(禁用)指定用户的账号。通过给用户的密码字段添加一个特殊的标记(如 !*)来防止用户登录。passwd -l 实际上并不会删除用户密码,而是使得用户无法通过密码登录。

示例:sudo passwd -l username

此命令会锁定用户 username 的账户,使得该用户无法使用密码登录。

chage -E 1990-01-01 username

chage 命令用于管理用户账户的密码过期策略。使用 -E 参数可以设置用户账户的过期日期。一旦账户过期,用户将无法登录。

示例:sudo chage -E 1990-01-01 username

此命令将设置用户 username 的账户过期日期为 1990 年 1 月 1 日。由于日期已经过去,这个账户将被禁用。

passwd -S username

passwd -S 命令用于查看用户密码的状态信息。它返回一行显示用户密码的当前状态。

示例:passwd -S username

返回信息的格式类似于:

  • username P 2024-10-01 0 99999 7 -1 (Password set, expires, inactive, etc.)

    • P 表示用户密码已设置并且正常。

    • L 表示用户账号被锁定。

    • NP 表示用户没有密码。

此命令不会改变账户状态,但可以帮助你了解当前密码和账户的状态。

4. 小结

  • /etc/passwd 文件存储用户的基本信息。

  • /etc/shadow 文件存储用户的加密密码和密码过期等策略。

  • /etc/group 文件存储系统中的用户组信息。

  • 使用 passwd -l username 可以禁用用户账号(锁定密码)。

  • 使用 chage -E date username 可以设置账户过期日期,从而禁用用户账号。

  • 使用 passwd -S username 查看用户账号的密码状态。

这些工具和文件在用户管理中至关重要,帮助管理员控制用户访问权限、密码策略以及账号生命周期。


五、文件系统权限

在Linux 系统中,几乎所有的资源都被抽象为文件,包括硬件设备(如硬盘、网卡等)、进程间通信、网络连接等。这种设计理念使得对各种资源的管理可以通过统一的文件操作方式来进行,大大简化了系统的架构和管理。

1. 查看权限

  • 命令:ls -la /etc/passwd

    • 解析:

      • ls:列出目录内容。

      • -l:使用长格式列出文件信息,包括权限、文件所有者、文件大小、最后修改时间等。

      • -a:列出所有文件,包括以点(.)开头的隐藏文件。

      • /etc/passwd:指定你要查看的文件路径。

输出字段解释:-rw-r--r-- 1 root root 3216 Feb 25 2024 /etc/passwd

  • -rw-r--r--

    :文件的权限,具体是:

    • - 表示这是一个普通文件(如果是目录,则为 d)。

    • rw-:文件所有者(root)具有读(r)、写(w)权限。

    • r--:同组用户(root)具有读(r)权限。

    • r--:其他用户具有读(r)权限。

  • 1:硬链接数,通常为 1。

  • root:文件的所有者。

  • root:文件的所属用户组。

  • 3216:文件大小(字节数)。

  • Feb 25 2024:文件的最后修改时间。

  • /etc/passwd:文件的路径和名称。

2. 更改文件所有者

chown 命令用于改变文件或目录的所有者和用户组。

  • 命令:sudo chown root file

    • 解析:

      • chown:改变文件的所有者或所属用户组。

      • root:新的文件所有者(在这个例子中是 root)。

      • file:指定要更改所有者的文件名。

这个命令会把 file 文件的所有者更改为 root,文件的所属用户组默认不变。

3. 修改文件权限

  • 命令1 :sudo chmod u=rwx,g+rw,o-r file

    • 解析:

      • chmod:修改文件权限。

      • u=rwx:为文件所有者(u)设置读、写、执行权限(rwx)。

      • g+rw:为文件所属用户组(g)增加读(r)和写(w)权限。

      • o-r:去掉其他用户(o)的读权限(r)。

命令2 :sudo chmod u+x,g+w,o-r file

  • 解析:

    • chmod:修改文件权限。

    • u+x:为文件所有者添加执行权限。

    • g+w:为用户组添加写权限。

    • o-r:去掉其他用户的读权限。

命令3 :sudo chmod 777 file

  • 解析:

    • chmod:修改文件权限。

    • 777:为文件所有者添加所有权限。

5.常见的权限数字

(600) 只有拥有者有读写权限。

(644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。

(700) 只有拥有者有读、写、执行权限。

(755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

(711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。

(666) 所有用户都有文件读、写权限。

(777) 所有用户都有读、写、执行权限。


六、系统日志

1. 系统日志

  • 命令:ls -l /var/log

    • 解析:

      • ls:列出文件。

      • -l:使用长格式列出详细信息。

      • /var/log 目录通常包含系统的各种日志文件

使用命令可以列出该目录下的所有日志文件以及它们的详细信息(权限、所有者、修改时间等)。

2. 认证信息日志

命令:sudo tail -3 /var/log/auth.log

  • 解析:

    • sudo:以超级用户权限运行命令,读取 /var/log/auth.log 需要管理员权限。

    • tail:显示文件的最后几行内容。

    • -3:显示最后 3 行内容。

3. 二进制日志

命令:who /var/log/wtmp | tail -5

  • 解析:

    • who:显示当前登录用户的信息。

    • /var/log/wtmp:包含登录和注销记录的二进制文件。

    • tail -5:显示最后 5 条记录。

命令:dmesg

  • 解析:显示当前系统启动时的内核信息和硬件事件日志。你可以使用 dmesg | tail 查看最后的几行日志。

4. systemd日志

命令:journalctl

  • 解析:

    • journalctl 显示 systemd 日志。

    • 默认情况下,journalctl 会显示从启动到当前的所有日志。

你可以使用一些选项来过滤和查看日志:

  • 查看最新的日志:journalctl -n 10

  • 按时间过滤日志:journalctl --since "2024-10-01" --until "2024-10-02"

  • 查看特定服务的日志:journalctl -u sshd

  • 实时查看日志(类似 tail -f:journalctl -f

5.Linux常见日志文件

  1. var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。

  2. /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。

  3. /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。

  4. /var/log/boot.log — 包含系统启动时的日志。

  5. /var/log/daemon.log — 包含各种系统后台守护进程日志信息。

  6. /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。

  7. /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。

  8. /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。

  9. /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。

  10. /var/log/user.log — 记录所有等级用户信息的日志。

  11. /var/log/Xorg.x.log — 来自X的日志信息。

  12. /var/log/alternatives.log – 更新替代信息都记录在这个文件中。

  13. /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。

  14. /var/log/cups — 涉及所有打印信息的日志。

  15. /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。

  16. /var/log/yum.log — 包含使用yum安装的软件包信息。

  17. /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。

  18. /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。

  19. /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。

  20. /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

除了上述文件以外, /var/log还基于系统的具体应用包含以下一些子目录:

  1. /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。

  2. /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。

  3. /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。

  4. /var/log/prelink/ — 包含.so文件被prelink修改的信息。

  5. /var/log/audit/ — 包含被 Linux audit daemon储存的信息。

  6. /var/log/samba/ – 包含由samba存储的信息。

  7. /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。

  8. /var/log/sssd/ – 用于守护进程安全服务。

这些命令是系统管理员排查和诊断系统问题的重要工具,通过查看和分析日志,可以更好地理解系统的运行状态和处理潜在的故障。


七、存储管理

1. 内存使用量

命令:free -m

  • 解析:

    • free:显示系统内存的使用情况,包括总内存、已用内存、空闲内存、交换分区等。

    • -m:以 MB 为单位显示信息。

这个命令显示了当前系统内存的使用情况

  • 输出内容解析

    • total:系统总内存。

    • used:已使用内存。

    • free:空闲内存。

    • shared:共享内存。

    • buff/cache:用于缓存的内存。

    • available:当前可以分配给应用程序的内存。

2. 磁盘使用量

命令:df -hT

  • 解析:

    • df:查看文件系统的磁盘空间。

    • -h:以易读的格式显示(如 GB, MB)。

    • -T:显示文件系统类型(例如 ext4, xfs 等)。

用于查看文件系统的磁盘空间使用情况

  • 输出内容解析

    • Filesystem:磁盘或分区名称。

    • Type:文件系统类型。

    • Size:磁盘总大小。

    • Used:已使用空间。

    • Avail:可用空间。

    • Use%:已用空间百分比。

    • Mounted on:文件系统挂载点。

3. 文件或目录大小

命令:sudo du ./* -hsc

  • 解析:

    • du:查看文件和目录的磁盘使用情况。

    • -h:以人类可读的格式显示(例如 KB, MB)。

    • -s:仅显示每个参数目录的总大小。

    • -c:显示所有文件和目录的总计。

用于查看文件和目录的磁盘占用情况。每个目录的大小以及最后的总和。

4. 查看硬盘分区

命令:sudo fdisk -l

  • 解析:

    • fdisk:用于查看和管理磁盘分区。

    • -l:列出所有磁盘及其分区。

  • Disk:磁盘名称和大小。

5. 挂载分区

命令:sudo mount /dev/sdb1 /mnt/usb

  • 解析:

    • sudo:以超级用户权限执行。

    • mount:挂载文件系统。

    • /dev/sdb1:要挂载的磁盘分区。

    • /mnt/usb:挂载点目录。

报错了

解决方法换个磁盘分区进行挂载,我选择的是sda1:

挂载成功后相当于共享文件,这个时候你是无法删除/mnt/usb文件夹的。

可以使用umount取消挂载:sudo umount /mnt/usb

6. 小结

  • free -m:查看内存使用情况。

  • df -hT:查看磁盘使用情况及文件系统类型。

  • sudo du ./\* -hsc:查看当前目录下文件和子目录的磁盘使用情况。

  • sudo fdisk -l:查看硬盘分区信息。

  • sudo mount /dev/sdb1 /mnt/usb:挂载磁盘分区。

这些命令对于日常系统管理、资源监控和故障排查非常有用。


八、基本网络枚举

1. 基本网络工具

命令:ifconfig

  • 解析:传统的网络配置命令,用于查看和配置网络接口的状态。

    • 查看所有接口的状态

      • ifconfig

      • 输出会列出所有网络接口的信息,包括 IP 地址、MAC 地址、广播地址、接收和发送的字节数等。

    • 查看特定接口的状态:ifconfig eth0

    • 启用或禁用接口

      • 启用网络接口:sudo ifconfig eth0 up

      • 禁用网络接口:sudo ifconfig eth0 down

命令:ip addr

  • 解析:ip 命令是 ifconfig 的现代替代品,它提供更强大的功能,允许你配置、查看和管理网络接口、路由、IP 地址等。

    • 查看所有网络接口及其 IP 地址

      • ip addr show

      • 简写:ip a

    • 查看特定接口的状态:ip addr show eth0

命令:ifupifdown命令

  • 解析:通常是用来启动或停止网络接口的命令,通常用于动态更改网络配置,而不需要重启系统。

    • ifup 启动接口

      • 启用网络接口:sudo ifup lo

    • ifdown 停止接口。

      • 禁用网络接口:sudo ifdown lo

2. 网络配置

(1) /etc/network/interfaces

/etc/network/interfaces 是 Debian、Ubuntu 和基于它们的 Linux 发行版中,传统的网络配置文件。在这里你可以配置静态 IP、动态 IP(通过 DHCP)等网络设置。

查看: cat /etc/network/interfaces

你也可以通过vim来进行编辑添加配置,下面文件格式示例就是配置模板

编辑: vim /etc/network/interfaces

Esc-->:-->qw-->回车退出

文件格式和示例
  • 静态 IP 配置

    # Example: Static IP configuration for eth0
    auto eth0
    iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1
    • auto eth0:表示 eth0 接口在系统启动时自动启用。

    • iface eth0 inet static:指定 eth0 使用静态 IP 配置。

    • address:设置静态 IP 地址。

    • netmask:设置子网掩码。

    • gateway:设置默认网关。

  • 动态 IP 配置(通过 DHCP)

    # Example: DHCP configuration for eth0
    auto eth0
    iface eth0 inet dhcp

    这个配置让系统通过 DHCP 动态分配 IP 地址。

  • 配置 DNS

    虽然 /etc/network/interfaces 主要配置网络接口,但 DNS 配置通常放在 /etc/resolv.conf 文件中。在某些系统上,你也可以通过 dns-nameservers 选项在 interfaces 文件中指定 DNS 服务器:

    iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4

(2)Networkmanager

NetworkManager 是现代 Linux 系统中常用的网络管理工具,尤其是在桌面环境中。它比传统的 /etc/network/interfaces 更加灵活和用户友好,能够动态管理网络连接,包括有线、无线、VPN 等多种连接类型。

NetworkManager 提供了图形界面(如 nm-applet)和命令行工具(nmcli)来管理网络配置。

  • 通过 nmcli 配置网络

    nmcli 是 NetworkManager 的命令行接口,允许用户在终端中管理网络设置。

    • 列出所有网络连接

      • nmcli connection show

    • 启用某个网络连接

      • nmcli connection up "Wired connection 1"

    • 禁用某个网络连接

      • nmcli connection down "Wired connection 1"

    • 创建一个新的静态 IP 配置

      • nmcli con add type ethernet con-name "static-eth0" ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1

    • 修改现有连接的 IP 配置

      • nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"

这里就不一一展示了,就列出所有网络连接讲解一下。

  • NAME(名称)这一列显示了网络连接的名称,通常是网络配置的逻辑名称,

  • UUID(全局唯一标识符):UUID 是每个网络连接的唯一标识符,用于标识不同的网络配置。

  • TYPE(类型):这一列显示了网络连接的类型,通常指示了该连接是如何工作的。

    • 常见的类型包括:

      • ethernet:表示这是一个有线以太网连接。

      • loopback:表示回环接口,通常由操作系统自动创建,用于本机与本机之间的通信,不涉及网络硬件。

  • DEVICE(设备):这一列显示了网络接口或设备的实际设备名称。这个名称通常对应于系统中物理网络接口的名称。

3. 小结

  • ifconfig:用于查看和管理网络接口的传统命令,但已被 ip 命令取代。

  • ip addr:更强大、现代的网络配置工具,用于显示和管理 IP 地址。

  • ifdownifup:用于禁用或启用网络接口,通常与 /etc/network/interfaces 配合使用。

  • /etc/network/interfaces:传统的网络配置文件,定义了网络接口的静态或动态 IP 配置。

  • NetworkManager:现代的网络管理工具,提供图形界面和命令行工具(nmcli),适用于动态和自动管理网络连接。

这些命令和配置方法适用于不同的 Linux 系统和使用场景,可以帮助你有效地管理网络接口和配置。


九、网络链接

1. 网络链接

命令:netstat -natup

  • 解析:

    • -n:以数字格式显示地址和端口号,而不是通过域名解析。

    • -a:显示所有连接和监听端口。

    • -t:显示 TCP 协议的连接。

    • -u:显示 UDP 协议的连接。

    • -p:显示哪个进程正在使用网络连接。

显示所有 TCP 和 UDP 网络连接,并且以数字形式显示 IP 地址和端口号,同时还显示每个连接的相关进程信息。

我这里没有信息,主要是这台虚拟机是专门为这篇文章新建的,所以没有什么服务。

命令:ss -natup

  • 解析:

    • ss:是用于查看系统网络连接的工具,功能类似于 netstat,但性能更高。

    • -n:表示以数字形式显示地址和端口,而不是显示主机名和服务名。这样可以避免 DNS 查询和服务名称解析,提高命令执行效率。

    • -a:表示显示所有的连接和监听端口,包括正在连接的连接、处于关闭状态的连接等。它包含了 -l-s 的功能。

    • -t:只显示 TCP 连接(可以与其他选项组合使用)。

    • -u:只显示 UDP 连接(同样可以与其他选项组合使用)。

    • -p:显示进程相关的信息,显示每个连接的进程ID(PID)和该进程所对应的程序名称。这对于调试和分析是非常有用的。

1.1 实际用途
  • 查看哪些进程正在使用网络连接。

  • 排查哪些端口正在被监听,哪些已建立连接。

  • 用于网络故障排查,帮助查看是否有进程未正常关闭连接,或是否有恶意进程占用了某些端口。

2. 二层地址

命令:arp en

  • 解析:用于显示和修改 ARP(Address Resolution Protocol)缓存,主要用于将 IP 地址映射到 MAC 地址。

    • -e:显示 ARP 表的详细信息。

    • -n:以数字格式显示地址,而不是通过域名解析。

用于列出所有的 ARP 缓存条目,其中包括 IP 地址和对应的 MAC 地址。

4. 路由信息

命令:route

  • 显示当前的路由表。

命令:ip route

  • 输出将列出所有的路由条目。

命令:sudo ip route add 10.13.37.0/24 dev eth0

  • 这条命令将通过 eth0 接口添加一个到 10.13.37.0/24 网络的路由。

命令:traceroute offensive-security.com

  • 这条命令将跟踪到 offensive-security.com 网站的网络路径,并显示每一跳的路由信息,包括每一跳的延迟时间。

traceroute 命令用于跟踪从本机到目标主机(例如网站)的网络路径,并显示经过的每一跳的路由信息。它通过发送带有不同 TTL(生存时间)的 ICMP 数据包,逐步显示经过的路由。


十、ssh服务

1. 启动服务

首先,你需要启动 SSH 服务,以便允许远程连接。

  • 启动:sudo systemctl start ssh

  • 开机自启动:sudo systemctl enable ssh

  • 检测服务状态:sudo systemctl status ssh

直接连接你会发现会报权限不够,即便你是root,我们需要修改配置文件或者是防火墙的拦截,防火墙拦截可以使用这条命令:ssh root@localhost

连接命令:ssh root@localhost

2. 配置文件

SSH 服务的配置文件位于 /etc/ssh/sshd_config。通过编辑此文件,你可以配置各种 SSH 选项,如允许的身份验证方法、登录用户等。

在这个配置文件中,有几个常用的配置项:

  • Port:指定 SSH 服务的端口,默认为 22。

  • PermitRootLogin:是否允许 root 用户通过 SSH 登录,通常建议禁用(PermitRootLogin no)。

  • PasswordAuthentication:是否允许密码登录,可以改为 no 以强制使用密钥登录(提高安全性)。

  • AllowUsersDenyUsers:控制哪些用户允许或禁止通过 SSH 登录。

修改配置文件:vim /etc/ssh/sshd_config

找到图中位置按i进入编辑模式

修改完后,我们按esc然后shift+:输入wq(保存退出)

然后重启一次服务

sudo systemctl stop ssh

sudo systemctl start ssh

这样子就可以连接了,Xshell也可以进行连接

Xsell官方有退出纯免费版,可以去官网下载:xshell家庭/学校免费 - NetSarang Website

十一、远程拷贝

scp(Secure Copy Protocol)是一个用于在本地和远程计算机之间复制文件或目录的命令行工具,它基于 SSH(Secure Shell)协议,确保数据传输过程中的安全性和加密。scp 允许用户通过网络从一台计算机复制文件到另一台计算机,或者在两台远程计算机之间直接传输文件。

  • scp 命令格式:scp [选项] [source] [destination]

    • [source] 是源文件,格式为 username@host:/path/to/file

    • [destination] 是目标文件,格式为 /path/to/destination,如果没有指定文件名,它会保留原文件名。

示例1:

从远程主机复制文件到本地:scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc

  • root@1.1.1.1:/home/kali/.bashrc:指定了远程主机 1.1.1.1root 用户的 .bashrc 文件的路径。

  • Copiedbashrc:这是本地目标文件的名称,文件会被复制到当前目录,并保存为 Copiedbashrc

我这里是开了另一台kali来下载

示例2:

从本地复制文件到远程主机:scp -p /etc/passwd kali@127.0.0.1:/home/kali/

  • -p:这个选项用来保留文件的修改时间、访问时间和权限。

  • /etc/passwd:这是本地文件的路径,指的是要传输的文件。

  • kali@127.0.0.1:/home/kali/:目标路径,指定了将文件复制到本地计算机 127.0.0.1(即本机)的 kali 用户的 /home/kali/ 目录下

十二、其余杂项

简单讲一下其余的常用命令

1. history

  • history 命令用于显示当前用户的命令历史记录。它列出了你在当前 shell 会话或历史文件中执行过的所有命令。

  • 你还可以使用其他选项来修改history的行为,例如:

    • history -c:清空历史记录。

    • history -n:读取历史记录文件,并将新记录追加到历史列表中。

    • history -r:从历史文件中读取记录并加载到当前会话中。

关闭shell会话历史就没了。

2. clear

clear 命令用于清空终端屏幕,将当前终端的输出区域清除干净,类似于刷新屏幕。

  • 语法:clear

    • 说明:

      • clear 命令只会清空屏幕,实际的命令历史仍然存在,当前屏幕上的内容将消失。

      • 你还可以使用快捷键 Ctrl + L 来实现相同的效果。

3. whomai

  • whoami 会返回当前在终端会话中的用户名。

  • 它等同于执行 id -un 命令。

4. id

id 命令用于显示当前用户的身份信息,包括用户的 UID(用户 ID)、GID(组 ID)、以及所属的组等信息。

  • uid=1000(user):显示用户的 UID 和用户名。

  • gid=1000(user):显示用户的 GID(组 ID)和所在的主组。

  • groups=1000(user),27(sudo),1001(admin):显示用户所属的所有组。

5. vim

vim 是一个强大的文本编辑器。它是 vi 编辑器的增强版,提供了更多的功能和扩展。

打开文件后,你可以开始编辑文件。

示例:vim file.txt

  • 默认启动时处于“普通模式”(Normal mode),你可以通过按下不同的按键来切换不同的模式:

    • 普通模式(Normal Mode):用来导航文件,删除文本,复制/粘贴等。

    • 插入模式(Insert Mode):按 i 进入,可以直接编辑文件内容。

    • 命令模式(Command Mode):按 : 进入,可以执行保存、退出等命令。

  • 常用的 vim 命令:

    • i 进入插入模式,开始编辑文件。

    • Esc 返回普通模式。

    • 在普通模式下,输入 :w 保存文件,:q 退出文件,:wq 保存并退出,:q! 强制退出不保存。

6. cat

cat 命令用于显示文件内容。它是 "concatenate"(连接)的缩写,主要用于读取、显示文件内容或者将文件合并。

示例:cat file.txt

  • cat 命令会将文件的内容一次性显示在终端中。

  • cat 还可以用于合并多个文件:

    • cat file1.txt file2.txt > combined.txt

    • 这将把 file1.txtfile2.txt 的内容合并,并保存到 combined.txt 中。

  • 其他常用选项:

    • cat -n filename:显示文件内容时,带行号。

    • cat -E filename:显示行尾的 $ 字符,帮助识别行尾的空格或换行。

  • history:查看命令历史记录。

  • clear:清空终端屏幕。

  • whoami:显示当前登录的用户名。

  • id:显示当前用户的身份信息,包括 UID 和 GID。

  • vim:一个强大的文本编辑器,用于编辑文件。

  • cat:查看和连接文件内容。


结语

掌握Linux常用命令是高效操作和管理Linux系统的基础。通过本篇文章介绍的命令和操作技巧,你应该能够更加熟练地应对日常的Linux系统管理任务。尽管Linux的命令行功能非常强大,但掌握基本命令和概念后,继续探索更深层次的功能将使你受益无穷。希望本文能为你的Linux学习之路提供帮助,并激励你不断探索更高效、更灵活的操作方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/5082.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【RAG系列】KG-RAG 用最简单的方式将知识图谱引入RAG

目录 前言 一、引入知识图谱的作用 二、引入知识图谱的挑战 三、KG-RAG的理论 query多跳有限性 知识局部密集性 四、KG-RAG的方法 向量入库 向量相似搜索 扩展子图 LLM Rerank LLM response 五、效果比对 六、源码 总结 前言 本文介绍一种比较新颖的RAG范式&am…

编程语言越来越多,为什么C/C++还没有被现在的时代淘汰呢?

近年来,随着人工智能、大数据等领域的兴起,各种新兴编程语言层出不穷,例如Python、Go等,它们以更简洁的语法、更丰富的库以及更友好的开发体验,吸引了大量开发者。 在这样的背景下,不少人开始质疑C/C这类“…

Docling:开源的文档解析工具,支持多种格式的解析和转换,可与其他 AI 工具集成

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

学习笔记:Spring框架源码Part.2——核心

学习视频链接:https://www.bilibili.com/video/BV1zd4y1L7YD Spring学习笔记——核心 前言第三章 容器和上下文一、认识bean工厂1、基础能力2、更强的枚举能力3、灵活的分层能力4、构建和自动装配的能力5、更强的配置能力6、更多配置项7、工厂的生命周期 二、bean工…

linux守护进程与后台进程的区别

守护进程与后台进程有以下区别: 1. 概念与定义 后台进程: 是指在操作系统后台运行的进程,它不与用户直接交互(没有连接到用户的终端)。用户在终端中启动一个程序并让其在后台运行(如通过在命令后加“&…

【360】基于springboot的志愿服务管理系统

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装志愿服务管理系统软件来发挥其高效地信息处理的作用&#x…

【LLM Agents体验】Dify框架的安装指南

Dify简介: 核心功能‌12 ‌Dify是一款开源的大语言模型(LLM)应用开发平台,融合了后端即服务(Backend as a Service, BaaS)和LLMOps的理念,使开发者可以快速搭建生产级的生成式AI应用。LLMOps涵盖了大型语言模型的开发、…

TODO Error occurred while trying to proxy:【】

文章目录 场景异常解决 场景 使用 Ant Disign Pro 连接本地接口。 异常 Error occurred while trying to proxy: localhost:8000/api/login/account?token%20%20123[HPM] Error occurred while proxying request localhost:8000/api/login/account?token%20%20123 to http…

Linux 文件基本属性

1.Linux 文件基本属性 Linux 系统是一种典型的多用户系统,不同用户处于不同地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。Linux 通常使用以下两…

数据结构-归并排序笔记

【数据结构】八大排序(超详解附动图源码)_数据结构排序-CSDN博客 看这个学思路 一 归并排序介绍: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解&#xf…

关于使用python pptx生成或“复制”PPT页面的问题

先说两个结论: 对于主题不完全相同的页面,pptx 无法完全复制PPT页面,文字图片可以复制,但是背景之类的无法复制pptx 无法直接在指定页码或者指定页面后插入页面 今天做项目的时候,需要根据PPT模板使用python生成相应…

Uniapp底部导航栏设置(附带PS填充图标教程)

首先需要注册和登录ifconfont官网,然后创建项目添加需要的图标 创建和添加图标库请参考:Uniapp在Vue环境中引入iconfont图标库(详细教程) 打开iconfont官网,找到之前添加的图标库,下载png图片 如果需要的…

算法——双指针

目录 前言一、什么是双指针二、算法特点三、算法实现步骤四、常见形式五、应用场景与示例六、优势与注意事项七、双指针算法动态图解八、经典例题[1. 回文判定](https://www.lanqiao.cn/problems/1371/learning/?page1&first_category_id1&name%E5%9B%9E%E6%96%87%E5%…

L6.【LeetCode笔记】合并两个有序链表

1.题目 https://leetcode.cn/problems/merge-two-sorted-lists/ 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2&…

类的加载机制

一、类的生命周期 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段: 加载(Loading)验证(Verification)准备(Preparation)解析&#xff08…

接口测试用例设计的关键步骤与技巧解析

接口测试是确保系统组件之间高效、稳定交互的重要环节。然而,设计出合理的接口测试用例,并不是一件轻而易举的事。如何通过高质量的测试用例揭示潜在问题?今天带你深度解析接口测试用例设计的关键步骤和实用技巧,助你在测试领域更…

Java线程6种生命周期及转换

多线程技术是我们后端工程师在面试的时候必问的一个知识点,今天就来盘点一下多线程的相关知识, 先来说下进程,线程及线程的生命周期: 进程:进程就是正在进行中的程序,是没有生命的实体,只有在运…

柯桥学英语|老外说“You‘re cheap”,不是“你真便宜”!真正的意思是什么?

在跨文化交流中,误解常常源于对语言字面意义的直接翻译。今天,我们就来揭开一个常见的误解——“Youre cheap”的真实含义,并探讨与之相关的英文表达。 “Youre cheap”的真实含义 当老外对你说“Youre cheap”,千万别以为他们在…

IDEA构建JavaWeb项目,并通过Tomcat成功运行

目录 一、Tomcat简介 二、Tomcat安装步骤 1.选择分支下载 2.点击下载zip安装包 3.解压到没有中文、空格和特殊字符的目录下 4.双击bin目录下的startup.bat脚本启动Tomcat 5.浏览器访问Tomcat 6.关闭Tomcat服务器 三、Tomcat目录介绍 四、WEB项目的标准结构 五、WEB…

电商行业企业员工培训的在线知识库构建

在电商行业,员工的培训和发展对于保持竞争力至关重要。随着电子商务的兴起和消费者行为的变化,电商行业需要不断适应新的市场趋势。在线培训知识库作为一种有效的培训工具,可以帮助企业提升员工技能,优化客户服务,增强…