7652 字
38 分钟
Linux基础问题 2

1.vim如何编辑文件,编辑后如何保存,如何不保存修改#

  1. 进入 vim 编辑模式
    • 打开文件:vim 文件名
    • 如果文件不存在,vim 会创建一个新文件。
  2. 进入插入模式进行编辑
    • 按下 i 键进入插入模式,这时可以开始编辑文件内容。
  3. 保存文件并退出
    • Esc 键退出插入模式,回到普通模式。
    • 输入 :w 然后按 Enter 键保存文件。
    • 若要保存并退出,输入 :wq:x,然后按 Enter 键。
  4. 不保存修改并退出
    • Esc 键退出插入模式。
    • 输入 :q! 然后按 Enter 键,强制退出不保存修改。

2.什么是IP地址,什么是端口,两者有什么关系#

  1. IP 地址(Internet Protocol Address)

    • 定义:IP 地址是一个用于标识网络上设备的唯一地址。每个连接到互联网的设备(如计算机、手机、路由器等)都会被分配一个 IP 地址,确保数据可以准确地发送到正确的设备。

    • 格式:IP 地址有两种常见的版本:

      • IPv4:如 192.168.1.1,由4个数字(每个数字介于0-255之间)组成,每个数字之间用“.”分隔。
      • IPv6:如 2001:0db8:85a3:0000:0000:8a2e:0370:7334,由8组16进制数字组成,每组数字之间用“:”分隔。
  2. 端口(Port)

    • 范围:端口号范围从0到65535,通常分为三类:
      • 知名端口(Well-known Ports):0-1023,用于一些标准的服务,如 HTTP(端口 80)、HTTPS(端口 443)、FTP(端口 21)。
      • 注册端口(Registered Ports):1024-49151,用于特定应用程序。
      • 动态或私有端口(Dynamic/Private Ports):49152-65535,通常由客户端应用程序临时使用。
  3. IP 地址与端口的关系

    • 通信的双重作用:一个IP地址可以有多个端口,而每个端口通常对应着设备上的不同应用或服务。换句话说,IP 地址标识了设备,而端口标识了该设备上的具体应用

    • 如何协同工作:当你访问一个网站时,你的浏览器通过指定的IP地址连接到目标服务器(比如 192.168.1.1),然后通过端口(通常是80端口)请求访问网页。比如,访问 http://192.168.1.1:80,这里 80 就是 HTTP 服务的端口。

3.端口号的范围是多少#

  • 范围:端口号范围从0到65535,通常分为三类:

    • 知名端口(Well-known Ports):0-1023,用于一些标准的服务,如 HTTP(端口 80)、HTTPS(端口 443)、FTP(端口 21)。

    • 注册端口(Registered Ports):1024-49151,用于特定应用程序。

    • 动态或私有端口(Dynamic/Private Ports):49152-65535,通常由客户端应用程序临时使用。

4.什么是dhcp,什么是静态地址#

DHCP 是一种自动分配 IP 地址的协议,适合大多数设备,减少了网络管理的复杂度。

静态地址 是手动配置的固定 IP 地址,适用于那些需要长期固定地址的设备。

  1. DHCP(Dynamic Host Configuration Protocol)

    • 定义:DHCP 是一种自动化的协议,用于在设备加入网络时自动分配 IP 地址 和其他网络配置信息(如网关地址、DNS 服务器等)。它使得设备无需手动配置 IP 地址,而是由网络中的 DHCP 服务器动态地分配。

    • 工作原理:

      1. 发现(Discover):设备(如计算机或手机)启动时发送一个 DHCP 请求包,寻找 DHCP 服务器。
      2. 提供(Offer):DHCP 服务器响应设备的请求,提供一个可用的 IP 地址以及其他网络配置信息。
      3. 请求(Request):设备选择其中一个 DHCP 服务器提供的配置,并向其发送请求确认。
      4. 确认(Acknowledge):DHCP 服务器确认并分配 IP 地址给设备,并设置租期(通常是几个小时到几天)。
    • 优点:

      • 自动化:设备接入网络时自动获得 IP 地址,简化网络管理。
      • 灵活性:DHCP 可动态分配 IP 地址,避免手动管理。
    • 缺点:

      • IP 地址是临时的,会有租期限制(设备断开后,IP 地址可能会分配给其他设备)。
      • 对于需要稳定、长期固定 IP 的应用(如服务器),可能不太适合。
  2. 静态地址(Static IP Address)

    • 定义:静态地址指的是手动为设备配置一个固定的 IP 地址,设备每次连接到网络时都会使用这个预设的地址,不会发生变化。

    • 工作原理:

      • 用户或管理员手动配置设备的 IP 地址,通常需要设置 IP 地址、子网掩码、网关地址和 DNS 服务器。
      • 设备每次连接网络时,都会使用这个静态的配置,不会改变。
    • 优点:

      • 稳定性:静态 IP 地址是固定的,适合需要长期稳定连接的设备,如服务器、打印机、IP 摄像头等。
      • 可靠性:对于某些需要精确通信的应用(如远程访问、网络服务等),静态 IP 更加可靠。
    • 缺点:

      • 手动配置:每个设备都需要手动配置 IP 地址,管理起来较为繁琐。
      • 冲突风险:如果配置不当,可能会出现 IP 地址冲突,导致网络连接问题。

5.IP的配置文件路径是?如何更改服务的IP地址为静态地址#

设置静态地址#

上面的端口映射方式虽然ssh连接虚拟机简单了,但是如果虚拟机里运行了一个服务,windows想访问这个服务还是需要看一下虚拟机的ip地址,所以不如配置成静态的地址

首先在VMware中查看子网IP并修改网关,我这里子网IP为192.168.142.0,网关设置为192.168.142.1,该虚拟机对应的网卡名为VMnet8

PixPin_2025-08-13_17-04-39

然后在「网络和Internet设置」>「更改适配器选项」>「VMnet8」>「属性」>「Internet 协议版本 4 (TCP/IPv4)」>「属性」>「修改IP地址」

PixPin_2025-08-13_10-25-06

PixPin_2025-08-13_10-27-58

修改后打开虚拟机,修改/etc/netplan路径下的网络配置文件

PixPin_2025-08-13_10-33-45

这里可能不同虚拟机的文件名是不同的,可以看一下文件内容,默认的内容大概是这样的

PixPin_2025-08-13_10-32-49

注意这里的ens33,自己原来文件中是什么用什么,其它的有是ens32的,修改后的内容:

# This is the network config written by 'subiquity'
network:
renderer: networkd
ethernets:
ens33: # 上面 ip addr 命令查看到的网卡编号
addresses:
- 192.168.142.100/24 # 子网 CIDR 由 “子网 IP 地址” 192.168.142.0 和 “子网掩码” 255.255.255.0 计算得到:本机私有 IP 地址,在子网允许的 IP 范围内自定义(注意如果有多个虚拟机的,不要互相冲突)
#gateway4: 192.168.142.1 # IPv4 网关 IP,上面“NAT 设置”可查看得到,注:gateway4 配置已过时,使用以下的 default routes 配置代替
routes:
- to: default
via: 192.168.142.1 # IPv4 网关 IP,上面“NAT 设置”可查看得到
nameservers:
addresses:
- 114.114.114.114 # 首选 DNS 服务器
- 8.8.8.8 # 备用 DNS 服务器
search: [] # 搜索域,这里为空
version: 2

修改后使用netplan apply应用网络配置

重启被覆盖问题#

我这里修改/etc/netplan路径下的文件并netplan apply应用后,通过ifconfig查看是生效的,但是重启又会恢复,后来发现是Cloud-Init 覆盖了配置,所以还需要修改这个的配置文件

我这里查看/etc/cloud/cloud.cfg.d/路径,发现90-installer-network.cfg这个文件的内容和上面默认的50-cloud-init.yaml是一样的,所以修改了90-installer-network.cfg这个文件

PixPin_2025-08-13_17-15-44

将该文件的内容修改为和上面50-cloud-init.yaml完全一致即可,以下是不带注释的代码:

# This is the network config written by 'subiquity'
network:
renderer: networkd
ethernets:
ens33:
addresses:
- 192.168.142.100/24
routes:
- to: default
via: 192.168.142.1
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
search: []
version: 2

6.什么是网关,什么是子网掩码#

  1. 网关(Gateway)

    • 定义:网关是一个网络设备或路由器,它作为不同网络之间的中介,负责数据的转发和路由。当一个设备(如计算机、手机等)需要与不同子网或外部网络(如互联网)中的设备进行通信时,它会将数据发送到网关,由网关负责将数据转发到目标网络。

    • 作用

      • 跨网络通信:如果设备所在的网络与目标设备不在同一个子网内,设备会通过网关将数据包发送到目标网络。
      • 网络地址转换(NAT):网关通常会进行 NAT(网络地址转换),将内部网络的私有 IP 地址转换为公网 IP 地址,以便与外部网络通信。
      • 路由功能:网关会根据路由表来决定数据包的转发路径,确保数据能顺利到达目标设备。
    • 举个例子:在家庭或小型企业网络中,通常会有一个路由器作为网关。家庭的计算机和设备通常使用路由器的 IP 地址作为默认网关,通过该路由器访问互联网。

    • 默认网关:通常设备会配置一个默认网关地址(通常是路由器的 IP 地址)。当设备要与其他子网的设备通信时,它会将数据发送到默认网关,网关再决定如何将数据传递给目标设备。

  2. 子网掩码(Subnet Mask)

    • 定义:子网掩码是一个用来区分IP地址中的网络部分和主机部分的32位数字。它帮助路由器和设备确定哪些设备在同一个子网内,哪些设备需要通过网关来进行跨子网通信。

    • 格式:子网掩码与 IP 地址类似,通常表示为四组数字(每组数字范围为0-255),如 255.255.255.0255.255.0.0

    • 作用:

      • 区分网络与主机部分:通过与 IP 地址进行“按位与”运算,子网掩码可以帮助确定 IP 地址中的网络部分和主机部分。网络部分用于识别子网,主机部分用于标识同一子网中的具体设备。
      • 子网划分:子网掩码的不同配置能够帮助将一个大的网络划分成多个小的子网,提高网络的管理效率和性能。
    • 举个例子:

      • 假设设备的 IP 地址是 192.168.1.10,子网掩码是 255.255.255.0。这意味着 192.168.1 是网络地址,.10 是设备的主机地址。所有 IP 地址以 192.168.1 开头的设备都在同一个子网内,不需要通过网关通信。
      • 如果设备的 IP 地址是 192.168.2.10,由于子网掩码为 255.255.255.0,它会与 192.168.1.10 不在同一子网中,因此需要通过网关来通信。
  3. 网关与子网掩码的关系

    • 子网掩码确定网络的边界:子网掩码告诉设备如何通过 IP 地址来区分同一网络内的设备和不同网络之间的设备。

    • 网关的作用:当设备需要访问不同子网的设备时,它会将数据发送到网关。网关接收到数据后,会使用路由信息将数据转发到正确的目标网络。

7.一般网络中(比如家庭网络),常用的网关地址和子网掩码是多少#

  1. 网关地址

    • 在大多数家庭网络中,路由器通常充当网关,连接家庭内部网络与外部互联网。大部分家庭路由器默认的网关地址通常为 192.168.1.1192.168.0.1

    • 常见网关地址:

      • 192.168.1.1:这通常是 Linksys、TP-Link 和一些其他品牌路由器的默认网关地址。
      • 192.168.0.1:这是 D-Link、NETGEAR 和一些其他品牌路由器的默认网关地址。
      • 其他常见网关地址:如 10.0.0.1192.168.2.1,也有一些路由器使用这些默认网关地址。
    • 如果设备要访问位于不同子网的设备,它会发送数据到网关,网关再负责将数据转发到目标设备。

  2. 子网掩码

    • 家庭网络中的 子网掩码 通常为 255.255.255.0

    • 子网掩码解释:

      • 255.255.255.0 表示网络中的 IP 地址的前 24 位(即 255.255.255)用于表示网络部分,剩下的 8 位(即 0)用于表示主机部分。这个配置表示最多可以容纳 254 个设备(IP 地址从 192.168.1.1 到 192.168.1.254,.0代表网络地址,.255代表广播地址)。这是大多数家庭网络的常见配置。
    • 常见子网掩码

      • 255.255.255.0:适用于大多数家庭网络。可以支持最多 254 个设备连接。

      • 255.255.0.0:这种掩码通常用于更大的子网,适用于需要更多设备的网络环境。

8.什么是root用户,什么是普通用户,两者有什么区别#

  1. root 用户

    • 定义root 是类 Unix 操作系统(如 Linux、macOS、BSD 等)中的超级用户,拥有 系统的所有权限。它能够执行几乎所有的操作,包括修改系统文件、安装或删除软件、管理用户权限等。

    • 用途

      • root 用户通常用于系统管理员或高级用户进行系统管理任务。
      • 在很多操作系统中,root 用户默认是禁用的,管理员需要通过 sudo 或其他方式来暂时获得 root 权限。
  2. 普通用户

    • 定义:普通用户是指具有有限权限的用户账户。在操作系统中,普通用户通常只能访问自己拥有的文件和资源,而不能访问或修改系统级别的配置和文件。
    • 用途
      • 普通用户适用于日常的使用需求,如浏览网页、编写文档、进行娱乐等。
      • 它提供了一种安全性,防止普通用户对系统造成不必要的破坏。
  3. root 用户与普通用户的区别

特性root 用户普通用户
权限级别拥有完整的系统权限,可以执行任何操作权限受限,不能修改系统设置或访问系统文件
操作范围可以访问和修改所有文件、配置、软件等只能访问和修改自己拥有的文件及目录
用户管理可以创建、删除、修改其他用户的账户无法创建、删除或修改其他用户的账户
系统控制能够启动和停止服务,安装和卸载软件,修改系统配置无法执行系统级管理操作,如安装软件或修改系统设置
安全性如果不小心使用,可能会导致整个系统的安全问题因权限受限,风险较小,但仍需保护账户安全

9.用户组是什么,与用户有什么关系#

  1. 用户组的定义

    • 用户组是一个包含多个用户的集合,每个用户组有一个组名和一个组标识符(GID)。用户组的作用是将一群用户统一管理,便于设置访问权限、资源共享等。

    • 用户组通常被用来统一管理一组具有相同访问权限的用户。例如,一个名为 developers 的用户组可能包含所有开发人员,而 admins 用户组则可能包含所有的系统管理员。

  2. 用户组的作用

    • 简化权限管理:通过给用户分配到不同的用户组,管理员可以为整个组设置统一的权限,而无需单独为每个用户设置权限。这样可以提高管理效率,避免遗漏。

    • 权限控制:在 Unix/Linux 系统中,文件或目录的访问权限不仅是针对单个用户的,还涉及到文件的所有者所属组以及其他用户。通过用户组,系统可以很方便地控制哪些用户可以访问某个资源。

    • 资源共享:用户组允许多个用户共享某些资源(如文件夹、文件、打印机等)。比如一个开发组的成员可以共享代码库或开发工具。

  3. 用户组与用户的关系

    • 每个用户都有一个或多个用户组:在 Linux/Unix 系统中,每个用户都会至少属于一个用户组。每个用户在创建时会自动成为一个与用户名相同的默认组的成员(例如,创建一个用户名为 alice 的用户时,系统会创建一个名为 alice 的组,并把 alice 加入到该组中)。

    • 主用户组与附加用户组

      • 主用户组:每个用户都有一个主用户组,这个用户组通常是与用户名相同的默认组。
      • 附加用户组:用户还可以属于多个附加用户组。这样可以让用户同时拥有多个组的权限。例如,某个用户可能属于 developers(开发者组)和 admins(管理员组)两个组。
    • 组权限与文件权限:每个文件都有三个级别的访问权限:

      • 用户权限、组权限和其他权限。
        • 用户权限是文件所有者(用户)对该文件的访问权限。
        • 组权限是该文件所属用户组成员对该文件的访问权限。
        • 其他权限是所有其他用户对该文件的访问权限。
      • 例如,如果一个文件的权限是 rwxr-xr--,那么:
        • rwx:文件所有者(用户)具有读、写、执行权限。
        • r-x:文件所属用户组的成员具有读、执行权限。
        • r—:其他用户只能读取该文件,无法修改或执行。

10.什么是sshd服务,默认端口是多少#

  1. SSHD 服务的作用

    • 远程登录:通过 SSH,用户可以通过命令行远程登录到另一台计算机,执行命令、管理文件、配置系统等。

    • 安全传输文件:SSH 协议除了支持远程登录外,还支持通过 scp(secure copy)和 sftp(secure file transfer protocol)等工具安全传输文件。

    • 加密通信:SSHD 服务加密了客户端与服务器之间的通信,防止数据在传输过程中被窃听或篡改。

    • 身份验证:SSHD 通过密码、密钥或其他方式验证客户端的身份,确保只有授权用户能够访问系统。

  2. 默认端口

    • 默认情况下,SSHD 服务监听 22 端口。这是 SSH 协议的标准端口,因此当你通过 SSH 客户端连接服务器时,默认会尝试连接到服务器的 22 端口。

11.sshd的配置文件在哪里,如何修改默认端口#

SSHD 的配置文件通常位于 /etc/ssh/sshd_config,这个文件控制着 SSH 服务的各种设置,包括端口号、登录方式、允许的用户等。

  1. 打开终端,使用文本编辑器编辑 sshd_config 文件。以 nano 编辑器为例:

    sudo nano /etc/ssh/sshd_config
  2. 找到或添加 Port 配置行。默认情况下,配置文件中会有如下的内容:

    #Port 22

    去掉注释符号 #,并修改端口号为你想要的端口。例如,要将端口更改为 2222,可以将其改为:

    Port 2222
  3. 保存并退出编辑器

    • nano 编辑器中,按 Ctrl + X 退出,按 Y 保存更改,然后按 Enter 确认文件名。
  4. 重启 SSH 服务

    更改配置文件后,需要重启 SSH 服务以使更改生效。使用以下命令重启 SSH 服务:

    Terminal window
    sudo systemctl restart sshd
  5. 验证修改

    你可以使用以下命令确认 SSH 服务是否监听在新端口:

    Terminal window
    sudo netstat -tuln | grep ssh

12.sshd如何禁止/允许root用户远程登录#

打开 SSH 配置文件 /etc/ssh/sshd_config 进行编辑:

  • 想禁止root用户远程登录,找到 PermitRootLogin 这一行。如果该行被注释掉了(前面有 #),去掉注释并将其设置为 no

  • 想允许root用户远程登录,则去掉注释并将其设置为 yes

重启 SSH 服务:sudo systemctl restart sshd

13.sshd如何禁止/允许用户远程使用密码登录#

要控制用户是否可以通过密码进行 SSH 登录,可以通过修改 sshd_config 配置文件中的 PasswordAuthentication 选项来实现。

打开 SSH 配置文件 /etc/ssh/sshd_config 进行编辑,找到 PasswordAuthentication 这一行,去掉注释,如果想禁止用户远程使用密码登录就将这行设置成no,允许就设置成yes,例如:

Terminal window
PasswordAuthentication no

Ctrl + X 退出,按 Y 保存更改,然后按 Enter 确认文件名。

重启 SSH 服务使其生效:sudo systemctl restart sshd

14.除了使用密码登录之外,还能使用什么方式登录服务器#

SSH支持的登录方式:

  • SSH 密钥认证(最常用、安全)
  • 基于证书的认证(用于企业环境)
  • Kerberos 认证(适用于大型网络环境)
  • 两步验证(2FA)多重身份验证(MFA)(增强安全性)
  • TCP Wrappers(基于 IP 地址的访问控制)
  • 外部认证服务(如 LDAP、RADIUS)

15.文件的rwx权限分别是什么意思,如何用数字表示#

文件的权限针对三类对象进行定义

  • owner 属主,缩写u

  • group 属组,缩写g

  • other 其他,缩写o

每个文件针对每类访问者定义了三种主要权限

  • r:Read 读

  • w:Write 写

  • x:Execute 执行

  • 另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)

⚠️注意:root账户不受文件权限的读写限制,执行权限受限制

对于文件和目录来说,r,w,x有着不同的作用和含义:

  • 针对文件:

    • r:读取文件内容

    • w:修改文件内容

    • x:执行权限对除二进制程序以外的文件没什么意义

  • 针对目录:目录本质可看做是存放文件列表、节点号等内容的文件

    • r:查看目录下的文件列表

    • w:删除和创建目录下的文件

    • x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)

16.文件权限777是什么意思#

对于上面提到的rwx,分别对应4,2,1:

  • r:4
  • w:2
  • x:1

所以7就代表4+2+1,也就是rwx

举个例子:

Terminal window
rwx rw- r–
111 110 100
7 6 4
rwx rwx rwx
111 111 111
7 7 7

修改文件权限使用chmod命令:

方法1:mode法

  • 格式:chmod who opt per file

    • 例如:chmod -R +X dir,给dir目录添加X执行权限,dir目录下文件不添加执行权限(如果dir目录下有文件已具备执行权限,则添加该文件执行权限)
  • Terminal window
    who:u g o a(all)
    opt:+ =
    per:r w x X

方法2:数字法

  • 格式:chmod XXX file
    • 例:chmod 764 file 给file文件添加rwxrw-r–权限

17.文件权限如何与文件所属和文件组配合#

假设我们有一个文件 myfile.txt,它的权限设置为 rwxr-xr--。我们可以分解它如下:

  • 所有者权限 (rwx):表示文件所有者(User)对文件有 (r)、(w)、执行(x)权限。
  • 用户组权限 (r-x):表示文件所属的用户组(Group)对文件有 (r)和 执行(x)权限,但没有 (w)权限。
  • 其他用户权限 (r--):表示其他用户(Others)对文件有 (r)权限,但没有 (w)和 执行(x)权限。

权限和文件所属、文件组之间的配合是基于以下几个方面:

  • 文件所有者的权限:文件所有者可以修改文件的内容、执行文件等。这个权限是文件创建时自动赋予的,或者由管理员或文件所有者通过命令(如 chown)更改。
  • 文件组的权限:文件所属的用户组中的所有成员都可以根据文件组的权限进行操作。如果文件组成员希望修改文件,必须具备文件组的写权限(w)。
  • 其他用户的权限:与文件所有者和文件组无关的其他用户,只能根据文件的“其他用户”权限来进行操作。通常,其他用户的权限设置较为严格,避免对文件进行不必要的修改或删除。

设置文件所有者和文件组:可以使用 chown 命令来修改文件的所有者和文件组。

Terminal window
# 将文件所有者设置为 "alice",将文件组设置为 "admins"
chown alice:admins myfile.txt

修改文件权限:使用 chmod 命令来更改文件的权限。

Terminal window
# 设置文件权限为 rwxr-xr--
chmod 754 myfile.txt
  • 这表示:

    • 文件所有者(Alice)具有读、写、执行权限(rwx)。

    • 文件组(admins)具有读和执行权限(r-x)。

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

18.创建两个用户,dev、ops#

Terminal window
sudo adduser dev
sudo adduser ops

19.创建一个组,ymyw,将上面两个用户加入此组#

Terminal window
sudo gruopadd ymyw
sudo usermod -aG ymyw dev
sudo usermod -aG ymyw ops
  • -a 选项表示追加用户到指定组,而不是替换掉当前的组。
  • -G 选项指定要添加用户的组。

验证:

Terminal window
groups dev
groups ops

20.创建一个文件,设置其权限只允许ymyw组内人员访问#

Terminal window
vim ymyw_group.md
ll
total 16K
drwxr-xr-x 3 root root 4.0K Aug 15 01:05 frp
drwxr-xr-x 4 root root 4.0K Aug 13 19:56 mx-space
drwx------ 3 root root 4.0K Aug 14 23:54 snap
-rw-r--r-- 1 root root 16 Aug 16 10:46 ymyw_group.md
chown :ymyw ymyw_group.md
chmod 660 ymyw_group.md
ll
total 16K
drwxr-xr-x 3 root root 4.0K Aug 15 01:05 frp
drwxr-xr-x 4 root root 4.0K Aug 13 19:56 mx-space
drwx------ 3 root root 4.0K Aug 14 23:54 snap
-rw-rw---- 1 root ymyw 16 Aug 16 10:46 ymyw_group.md
  • 6 表示文件的所有者(root)和组(ymyw)具有读写权限。
  • 0 表示其他用户没有任何权限。

21.文件的x权限,和目录的x权限有什么作用#

  1. 文件的 x 权限

    对于文件,x 权限表示“可执行权限”。当一个文件具有执行权限时,表示该文件可以作为程序或脚本执行。

    • 作用

      • 如果文件是一个可执行程序(如二进制文件),则可以直接运行它。
      • 如果是脚本文件(如 bash 脚本、Python 脚本等),可以使用相应的解释器运行该脚本。
    • 示例

      • 假设有一个文件 script.sh,如果你赋予它执行权限:

        chmod +x script.sh

        然后你就可以执行这个脚本:

        ./script.sh
      • 如果没有执行权限,即使是一个可执行的程序文件,也无法直接运行。

  2. 目录的 x 权限

    对于目录,x 权限表示“进入目录”的权限,或者说“搜索目录”的权限。

    • 作用

      • 如果一个用户对一个目录有 x 权限,表示他可以进入该目录,也可以访问该目录内的文件,即使他没有读取目录的内容。
      • x 权限允许用户使用该目录中的文件或子目录进行操作,例如进入子目录、访问文件等。
    • 示例

      • 假设有一个目录 dir,如果你赋予它 x 权限:

        chmod +x dir

        那么你可以进入该目录:

        cd dir
      • 如果没有 x 权限,即使你对目录有读取权限(r),你仍然无法进入目录。换句话说,没有 x 权限,你无法在该目录中执行任何操作,包括查看文件和子目录。

22.Linux常用的终端软件有哪些#

  • 偏轻量化:像 XTerm, LXTerminal, 或 urxvt 都是不错的选择。
  • 有更多的功能和自定义:像 Terminator, Konsole, 和 Alacritty 可能会更合适。
  • 需要简单易用和多标签支持:可以考虑 GNOME Terminal, Deepin Terminal, 或 Sakura

23.如何通过终端软件(如 SSH 客户端)连接到远程 Linux 服务器?并说明常见问题的排查方法#

WindTerm

PixPin_2025-08-16_12-08-08

vscode

PixPin_2025-08-16_12-10-00

  1. 命令格式: 在终端输入以下命令来连接远程服务器:

    ssh username@hostname_or_ip
    • username:远程服务器的用户名。
    • hostname_or_ip:远程服务器的 IP 地址或域名。
  2. 输入密码: 在连接时,系统会提示你输入远程用户的密码。输入密码时,字符不会显示(这是正常现象)。

  3. 使用密钥登录(可选): 如果服务器设置了密钥对认证(而不是密码),你可以使用私钥进行登录:

    ssh -i /path/to/your/private_key username@hostname_or_ip

    这样就不需要输入密码,而是通过密钥文件进行认证。

  4. 指定端口(如果不是默认端口): 如果远程服务器使用非默认的端口(默认是 22),可以通过 -p 参数指定端口:

    ssh -p port_number username@hostname_or_ip

常见问题及排查方法#

1. “Connection refused” 错误

  • 问题描述:你尝试连接服务器时,收到 “Connection refused” 错误,表示无法建立连接。

  • 排查方法:

    1. 检查 SSH 服务是否运行:远程服务器上的 SSH 服务可能未启动。在服务器上运行以下命令确认 SSH 服务正在运行:

      sudo systemctl status ssh

      如果服务未启动,可以通过以下命令启动:

      sudo systemctl start ssh
    2. 检查防火墙设置:防火墙可能阻止了 SSH 连接,检查服务器的防火墙设置是否允许 22 端口(或自定义端口)的访问:

      sudo ufw allow ssh
    3. 确认服务器 IP 地址正确:确保连接的 IP 地址或域名正确,且服务器是可达的。

2. “No route to host” 错误

  • 问题描述:你收到 “No route to host” 错误,表示无法访问目标主机。

  • 排查方法:

    1. 检查服务器网络是否可用:使用ping命令检查是否可以到达远程服务器:

      ping hostname_or_ip

      如果无法 ping 通,说明网络连接有问题,可能是网络故障或防火墙配置问题。

    2. 检查路由表:确保服务器的路由设置正确,特别是如果使用了 VPN 或代理等中间设备。

3. “Permission denied” 错误

  • 问题描述:你收到 “Permission denied” 错误,表示身份验证失败。

  • 排查方法:

    1. 检查用户名和密码是否正确:确保提供的用户名和密码正确。

    2. 检查 SSH 密钥:如果使用密钥认证,确保私钥文件权限正确并且匹配远程服务器的公钥。私钥文件的权限应该是 600:

      chmod 600 /path/to/your/private_key
    3. 检查 SSH 配置文件:有时服务器上的 SSH 配置文件(/etc/ssh/sshd_config)可能限制了某些用户或认证方式,检查是否有相关的限制。

4. “Host key verification failed” 错误

  • 问题描述:你连接到服务器时,收到 “Host key verification failed” 错误,表示主机密钥验证失败。

  • 排查方法:

    1. 删除已保存的旧密钥:SSH 客户端会保存已连接服务器的主机密钥,如果服务器的密钥发生变化,会出现此错误。你可以通过删除~/.ssh/known_hosts中对应的记录来解决:

      ssh-keygen -R hostname_or_ip
    2. 重新连接:再次尝试连接时,系统会提示你确认新的主机密钥,输入 yes 即可。

Linux基础问题 2
https://fuwari.cbba.top/posts/佚名运维免费训练营-第2天/
作者
Chen_Feng
发布于
2025-08-16
许可协议
CC BY-NC-SA 4.0