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.mzph.cn/web/58426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows、Linux系统上进行CPU和内存压力测试

CPU和内存压力测试 1. Linux环境 Linux环境下,我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…

JVM知识点大全(未完...)

JVM运行时数据区域 堆 堆是Java虚拟机中用于存储对象的主要区域,包括字符串常量池。绝大多数对象都是在堆中创建的(少部分对象可能会在栈上分配)。为了更好地进行垃圾回收,堆被划分为年轻代和老年代两部分。年轻代又被进一步分为E…

九宫格按键输入

题目描述 九宫格按键输入,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入""或者其他字符,则循环中断,输…

EPSON机械手与第三方相机的校准功能设计By python

EPSON机械手与第三方相机的校准功能设计By python 使用Python来实现EPSON机械手与第三方相机的校准功能是一个复杂但可行的任务。这通常涉及以下几个步骤:硬件接口通信、图像处理、标定算法实现和控制逻辑编写。 1. 环境准备 首先,库 pip install numpy opencv-python pyse…

ZISUOJ 2024算法基础公选课练习一(1)

前言、 又是一年算法公选课&#xff0c;与去年不同的是今年学了一些纯C&#xff08;而不是带类的C&#xff09; 一、我的C模板 1.1 模板1 #include <bits/stdc.h> using i64 long long;int main() {std::cin.tie(nullptr)->sync_with_stdio(false);return 0; } 1…

基于STM32的八位数码管显示Proteus仿真设计

基于STM32的八位数码管显示Proteus仿真设计 1.主要功能2.仿真设计3. 程序设计4. 设计报告5. 资料清单&下载链接 基于STM32的八位数码管显示Proteus仿真设计(仿真程序设计报告讲解视频&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;…

【机器学习】Lesson 4 - 朴素贝叶斯(NB)文本分类

目录 背景 一、适用数据集 1. 数据集选择 1.1 适用领域 1.2 数据集维度&#xff08;特征数&#xff09; 1.3 数据行数 2. 本文数据集介绍 2.1 数据集特征 2.2 数据格式 3. 数据集下载 二、算法原理 1. 朴素贝叶斯定理 2. 算法逻辑 3. 运行步骤 4. 更多延申模型 …

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求&#xff0c;即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…

使用Vue3和Vue2进行开发的区别

使用Vue3和Vue2进行开发的区别 笔者虽然老早就是用vue3进行开发了&#xff0c;但是上次有人问道使用vue3进行开发跟使用vue2进行开发的区别有哪些这个问题的时候&#xff0c;回答的还是有些琐碎&#xff0c;干脆今天专门整理一下&#xff0c;做个记录。 一、再也不用set了 众所…

项目开发流程规范文档

项目开发流程规范文档 目标: 明确项目组中需求管理人员, 交互设计, 美工以及开发之间的工作输入输出产物. 明确各岗位职责. 以免造成开发, 产品经理以及项目经理之间理解不到位, 沟通成本过高,返工造成资源浪费. 所有环节产生的文档都可以作为项目交付的资源. 而不是事后再补文…

在docker里创建 bridge 网络联通不同容器

1.网络创建&#xff1a; docker network create --subnet192.168.1.0/24 --gateway192.168.1.1 uav_management 2.查看网络&#xff1a; docker network ls 3.给已经创建的容器分配ip: docker network connect --ip 192.168.1.10 uav_management 容器名/容器id 示例&#xf…

【极限编程(XP)】

极限编程&#xff08;XP&#xff09;简介 定义与核心价值观&#xff1a;极限编程&#xff08;Extreme Programming&#xff0c;XP&#xff09;是一种轻量级、敏捷的软件开发方法。它强调团队合作、客户参与、持续测试和快速反馈等价值观&#xff0c;旨在提高软件开发的效率和质…

低代码用户中心:简化开发,提升效率的新时代

随着数字化转型的加速&#xff0c;企业对于快速交付高质量应用的需求日益增长。在这个背景下&#xff0c;低代码开发平台应运而生&#xff0c;成为越来越多企业和开发者的首选工具。今天&#xff0c;我们将聚焦于低代码用户中心&#xff0c;探讨其如何帮助开发者简化流程、提升…

Docker在CentOS上的安装与配置

前言 随着云计算和微服务架构的兴起&#xff0c;Docker作为一种轻量级的容器技术&#xff0c;已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南&#xff0c;帮助他们在CentOS系统上安装和配置Docker及相关组件&#xff0c;如Docker Compose和私有…

Redis 权限控制(ACL)|ACL 命令详解、ACL 持久化

官网文档地址&#xff1a;https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/ 使用版本&#xff1a;Redis7.4.1 什么是 ACL&#xff1f; ACL&#xff08;Access Control List&#xff09;&#xff0c;权限控制列表&#xff0c;是 Redis 提供的一种…

淘宝反爬虫机制的主要手段有哪些?

淘宝的反爬虫机制主要有以下手段&#xff1a; 一、用户身份识别与验证&#xff1a; User-Agent 识别&#xff1a;通过检测 HTTP 请求头中的 User-Agent 字段来判断请求是否来自合法的浏览器。正常用户使用不同浏览器访问时&#xff0c;User-Agent 会有所不同&#xff0c;而爬虫…

2024最新gewe开发微信机器人教程说明

微信时代&#xff0c;越来越多的业务/服务沟通已直接在微信上完成&#xff0c;但在沟通效率及员工管理方面却存在如下问题&#xff1a; 1、现有的微信功能&#xff0c;已无法满足与客户沟通时的高效率要求 2、当员工掌管的微信号若干或更多时&#xff0c;迫切需要有个汇总工具…

Java项目实战II基于Spring Boot的智慧生活商城系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着科技的飞速发展&#xff0c;人们的…

如何使用Langchain集成Kimi AI(Moonshot AI)

如何使用Langchain集成Kimi&#xff08;Moonshot AI&#xff09; 一、获取API密钥1. 注册账号2. 获取密钥 二、环境配置三、上手四、整合一下五、检验一下成果六、官方网站 一、获取API密钥 1. 注册账号 毕竟只有注册过帐号才能拿到key~ Moonshot 登陆 2. 获取密钥 用户中心…

前端开发模板Pear Admin Layui

目录 基本资料学习笔记04-Pear-Admin-Layui模板运行05-Pear-Admin-Layui-GIT方式代...06-Pear-Admin与Vue对比 & 07-Pear-Admin与Vue对比补充09-Pear-Admin-CRUD练习-数据库表创建12-Pear-Admin-CRUD练习-引入其它依赖 & 13-Pear-Admin-CRUD练习-三层架构以及常见配置 …