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 static
      address 192.168.1.100
      netmask 255.255.255.0
      gateway 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 static
      address 192.168.1.100
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-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学习之路提供帮助,并激励你不断探索更高效、更灵活的操作方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ALB搭建

ALB: 多级分发、消除单点故障提升应用系统的可用性(健康检查)。 海量微服务间的高效API通信。 自带DDoS防护,集成Web应用防火墙 配置: 1.创建ECS实例 2.搭建应用 此处安装的LNMP 3.创建应用型负载均衡ALB实例 需要创建服务关联角…

C语言笔记(字符串函数,字符函数,内存函数)

目录 前言 1.字符串函数 1.1.strlen 1.2.strcpy 1.3.strcat 1.4.strcmp 1.5.strncpy 1.6.strncat 1.7.strncmp 1.8.strstr 1.9.strtok 1.10.strerror 2.字符函数 2.1字符分类函数 2.2字符转换函数 3.内存函数 3.1.mencpy 3.2.memmove 3.3.memcmp 前言 本文重…

HCIP-HarmonyOS Application Developer V1.0 笔记(五)

弹窗功能 prompt模块来调用系统弹窗API进行弹窗制作。 当前支持3种弹窗API,分别为: 文本弹窗,prompt.showToast;对话框,prompt.showDialog;操作菜单,prompt.showActionMenu。 要使用弹窗功能&…

Linux相关概念和易错知识点(20)(dentry、分区、挂载)

目录 1.dentry (1)路径缓存的原因 (2)dentry的结构 ①多叉树结构 ②file和dentry之间的联系 ③路径概念存在的意义 2.分区 (1)为什么要确认分区 (2)挂载 ①进入分区 ②被挂…

Redis 缓存击穿

目录 缓存击穿 什么是缓存击穿? 有哪些解决办法? 缓存穿透和缓存击穿有什么区别? 缓存雪崩 什么是缓存雪崩? 有哪些解决办法? 缓存预热如何实现? 缓存雪崩和缓存击穿有什么区别? 如何保…

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

澳鹏通过高质量数据支持 Onfido 优化AI反欺诈功能

“Appen 在 Onfido 的发展中发挥了至关重要的作用,并已成为我们运营的重要组成部分。我们很高兴在 Appen 找到了可靠的合作伙伴。” – Onfido 数据和分析总监 Francois Jehl 简介:利用人工智能和机器学习增强欺诈检测 在当今日益数字化的世界&#xff…

网站架构知识之Ansible模块(day021)

1.Ansible模块 作用:通过ansible模块实现批量管理 2.command模块与shell模块 command模块是ansible默认的模块,适用于执行简单的命令,不支持特殊符号 案列01,批量获取主机名 ansible all -m command -a hostname all表示对主机清单所有组…

应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案

人工智能(AI)和机器学习(ML)技术正在快速发展,逐渐应用到全球各类主流系统、设备及关键应用场景中,尤其是在政府、商业和工业组织不断加深互联的情况下,AI和ML技术的影响日益广泛。虽然AI技术的…

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…

布谷直播源码部署服务器关于数据库配置的详细说明

布谷直播源码搭建部署配置接口数据库 /public/db.php&#xff08;2019年8月后的系统在该路径下配置数据库&#xff0c;老版本继续走下面的操作&#xff09; 在项目代码中执行命令安装依赖库&#xff08;⚠️注意&#xff1a;如果已经有了vendor内的依赖文件的就不用执行了&am…

【C++】STL— stack的常见用法和模拟实现

目录 1、stack的介绍 2、stack的使用 构造一个空栈 stack的简单接口应用 3、stack的模拟实现 4、栈的相关题目 4.1 最小栈 4.1.2思路 4.1.3 实现代码 4.2 栈的压入、弹出序列 4.2.2 思路 4.2.3程序实现 1、stack的介绍 在C中&#xff0c;stack是一种标准模板库&am…

vue大疆建图航拍功能实现

介绍 无人机在规划一块区域的时候&#xff0c;我们需要手动的给予一些参数来影响无人机飞行&#xff0c;对于一块地表&#xff0c;无人机每隔N秒在空中间隔的拍照地表的一块区域&#xff0c;在整个任务执行结束后&#xff0c;拍到的所有区域照片能够完整的表达出一块地表&…

[ DOS 命令基础 2 ] DOS 命令详解-网络相关命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

es自动补全(仅供自己参考)

elasticssearch提供了CompletionSuggester查询来实现自动补全功能。这个查询会匹配以用户输入内容开头的词条并返回。为了提高补全查询效率&#xff0c;对于文档中字段的类型有一些约束&#xff1a; 查询类型必须是&#xff1a;completion 字段内容是多个补全词条形成的数组 P…

react jsx基本语法,脚手架,父子传参,refs等详解

1&#xff0c;简介 1.1 概念 react是一个渲染html界面的一个js库&#xff0c;类似于vue&#xff0c;但是更加灵活&#xff0c;写法也比较像原生js&#xff0c;之前我们写出一个完成的是分为html&#xff0c;js&#xff0c;css&#xff0c;现在我们使用react库我们把html和js结…

Chrome浏览器如何导出所有书签并导入书签

前言 我平常在开发中&#xff0c;基本是用的谷歌的浏览器&#xff0c;也就是Chrome&#xff0c;因为这个对于开发来说&#xff0c;比较友好。在开发中&#xff0c;包括调试接口&#xff0c;打断点&#xff0c;查看打印日志等&#xff0c;都是非常不错的。另一方面&#xff0c;…

[WSL][桌面][X11]WSL2 Ubuntu22.04 安装Ubuntu桌面并且实现GUI转发(Gnome)

1. WSL安装 这里不再赘述&#xff0c;WSL2支持systemd&#xff0c;如果你发现其没有systemd相关指令&#xff0c;那么你应该看看下面这个 https://blog.csdn.net/noneNull0/article/details/135950369 但是&#xff0c;Ubuntu2204用不了这个脚本&#xff0c;比较蛋疼。 – …

C语言中的 printf( ) 与 scanf( )

时隔多日&#xff0c;小编我又回来咯小编相信之前的博客能够给大家带来不少的收获。在我们之前的文章中&#xff0c;许多代码块的例子都用到了printf( ) 与 scanf( )这两个函数&#xff0c;大家都知道他们需要声明头文件之后才能使用&#xff0c;那这两个函数是什么呢&#xff…

【Homework】【1--4】Learning resources for DQ Robotics in MATLAB

Learning resources for DQ Robotics in MATLAB Lesson 1 代码 % Step 2: Define the real numbers a1 and a2 a1 123; a2 321;% Step 3: Calculate and display a3 a1 a2 a3 a1 a2; disp([a3 (a1 a2) , num2str(a3)])% Step 4: Calculate and display a3 a1 * a2 a3…