# Linux服务Day1:模板机制作、FTP与NTP服务配置全解析

0 阅读12分钟

声明:本文仅作学习交流使用,引用需标明出处。

如有谬误,敬请指正

本文核心围绕模板机制作FTP服务搭建与使用NTP时间同步服务配置三大核心目标展开,详细介绍了各环节的概念、配置要求、实操步骤及核心命令。

一、模板机制作

1. 模板机核心概述

制作模板机的核心目的是为了避免后续多个虚拟机重复配置基础环境,大幅减少工作量;制作完成后可通过VMware克隆技术(推荐链接克隆)快速生成新虚拟机,新虚拟机仅需单独修改主机名和IP地址即可使用,注意:链接克隆后不可删除模板机本体

2. 虚拟机基础配置要求

模板机采用最小化无图形安装,核心配置参数固定,为后续所有服务搭建奠定标准化环境,具体如下:

  • 永久主机名:template
  • 硬件配置:安装时内存2048M,安装完毕后调整为512M;1个CPU;20G硬盘
  • 网络配置:IP 192.168.8.100/24,网关192.168.8.254,DNS 192.168.8.254
  • 安全配置:firewalld防火墙关闭并禁止开机自启;SELinux永久设置为disabled状态
  • 软件源配置:搭建本地YUM仓库(基于光盘镜像)
  • 必备软件包:bash-completion、lrzsz、vim、iproute、psmisc、tree、net-tools

3. 实操常见问题:最小化安装网络适配器异常

有时Linux最小化安装后会出现无网络适配器执行nmcli connection show看不到清晰链接名的情况(如下图),需手动添加网络适配器,重新执行网卡查询与配置命令即可。但有时依旧会出现这种情况: nmcli查询网卡异常 虽然网卡链接没有问题,但是链接名看不清,配置不了IP地址和网关,dns地址,怎么办呢?这里给出两种解决办法:

  • 方法一,直接使用uuid替代链接名进行配置
  • nmcli connection modify <你的UUID> ipv4.addresses......
  • 方法二,用uuid修改链接名
  • nmcli connection modify <你的UUID> connection.id <新连接名>

二、FTP服务搭建与使用

FTP为文件传输协议,具备跨平台特性,采用经典C/S架构,本次实操基于模板机链接克隆的两台虚拟机实现,先讲解C/S与B/S架构基础,再详细介绍FTP服务的搭建、匿名访问、实名访问配置及客户端lftp命令的使用,同时补充命令语法与URL访问的常见错误。

1. 前置架构概念

互联网主流架构分为两类,B/S架构是特殊的C/S架构,为FTP服务的架构理解奠定基础:

(1)C/S架构(Client / 客户端 / Server / 服务器)

  • 客户端:负责发起资源/功能请求
  • 服务端:负责提供资源/功能支持
  • 特点:专属客户端,协议灵活,性能较好,适用于专业服务部署

(2)B/S架构(Browser / 浏览器 / Server / 服务器)

  • 浏览器:作为通用客户端,负责连接DNS、建立请求、接受数据
  • 服务端:负责提供资源/功能支持
  • 本质:特殊的C/S架构,将浏览器作为固定客户端,基于HTTP/HTTPS通用协议,跨平台性强

2. FTP服务核心基础信息

(1)实验环境规划

通过模板机链接克隆两台虚拟机,分配固定IP与角色,使用WindTerm远程连接进行实操:

主机名IP地址角色
client192.168.8.100/24客户端
server192.168.8.101/24服务端

(2)FTP核心基础参数

  • 核心功能:实现网络中文件的上传、下载与目录管理
  • 所需软件:服务端vsftpd、客户端lftp
  • 服务名:vsftpd
  • 默认端口:21(TCP协议)
  • 协议标识:ftp://(文件传输协议)
  • 主配置文件:/etc/vsftpd/vsftpd.conf
  • 使链接命令: --匿名链接: -- lftp IP地址简洁写法,与标准语句效果等同,推荐使用 -- lftp ftp://服务端IP地址:端口号标准语句,不推荐使用 --实名访问: -- lftp 用户名@服务器IP[:端口号]标注写法,推荐使用 -- lftp ftp://用户名@服务器IP带协议的写法,不推荐使用
  • 默认共享目录:①匿名用户公共区域/var/ftp(默认只读);②Linux系统用户的家目录(实名用户专属,读写权限

基础常用命令:

命令基础格式核心参数功能说明
getget 服务端文件 [ -o 本地指定路径 ]-o下载文件至本地[-o指定路径]
mirrormirror 服务端目录 [ 本地指定路径 ]下载服务端目录至本地指定路径
mirrormirror -R 本地目录 [服务端目录]-R上传本地目录至服务端当前目录
putput 本地文件路径上传本地文件至服务端当前目录
lcdlcd 本地目录路径切换本地(客户端)目录
lpwdlpwd查看本地当前(客户端)路径

3. 服务端(server)基础搭建步骤

# 1. 安装vsftpd服务端软件
dnf -y install vsftpd
# 2. 验证软件安装结果
rpm -q vsftpd
# 3. 启动vsftpd服务
systemctl start vsftpd
# 4. 设置服务开机自启
systemctl enable vsftpd
# 5. 验证21端口是否正常监听
ss -nultp | grep :21

4. 匿名访问FTP服务配置与操作

FTP服务默认禁止匿名访问,需手动修改配置文件开启,匿名用户仅拥有/var/ftp目录的只读权限,无法执行上传操作。

(1)服务端(server)配置

# 1. 编辑主配置文件,开启匿名访问(修改第12行)
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES  # 允许匿名访问
# 2. 重启服务使配置生效
systemctl restart vsftpd
# 3. 在匿名共享目录创建测试文件,用于客户端验证
echo 123 > /var/ftp/test01.txt
# 4. 再次验证21端口监听状态
ss -nultp | grep :21

(2)客户端(client)操作

# 1. 安装lftp客户端软件
dnf -y install lftp
# 2. 访问FTP服务端(两种语法等价,推荐简洁写法)
lftp 192.168.8.101  # 简洁写法,默认ftp://协议+21端口
lftp ftp://192.168.8.101:21  # 完整标准写法
# 3. lftp内部核心操作(登录后执行)
ls  # 查看FTP服务端匿名目录的文件
lpwd  # 查看本地默认下载目录
get test01.txt  # 下载文件至本地当前目录
get test01.txt -o /opt/  # 下载文件至本地指定目录/opt
mirror pub/  # 下载pub目录内所有内容至本地当前目录
mirror pub/ /opt  # 下载pub目录内所有内容至本地指定目录/opt
# 4. 匿名上传操作(会触发权限拒绝错误)
put /etc/hostname  # 报错:550 Permission denied. (hostname)

5. 实名访问FTP服务配置与操作

实名访问基于Linux系统本地用户实现,共享用户的家目录(如/home/tom),用户拥有专属网络空间,支持上传、下载、目录管理全操作,相当于将服务器作为专属网盘,本次实操以tom用户(模板机安装时创建,密码123456)为例。

(1)服务端(server)准备测试数据

# 1. 在tom用户家目录创建测试文件
echo "tomtom" > /home/tom/myfile.txt
# 2. 在tom用户家目录创建多级测试目录
mkdir -p /home/tom/aa/bb/cc

(2)客户端(client)核心操作

# 1. 以tom用户身份实名访问FTP服务端
lftp tom@192.168.8.101
# 输入密码:123456(输入过程不显示,直接回车即可)
# 2. 下载操作(与匿名访问一致)
ls  # 查看tom家目录的测试数据
lpwd  # 查看本地默认下载目录
get myfile.txt  # 下载测试文件至本地
mirror aa  # 下载多级目录aa至本地
# 3. 上传操作(实名用户专属权限)
# 先在客户端本地创建测试文件和目录
echo client > /root/client.txt
mkdir -p /root/dir1/dir2
# 登录lftp后执行上传命令
put /root/client.txt  # 上传本地文件至tom家目录
mirror -R /root/dir1  # 反向上传本地多级目录至tom家目录(-R为反向同步标识)
ls  # 查看上传后的文件/目录
quit  # 退出lftp客户端
# 4. 本地验证下载结果
ls /root/

(3)服务端(server)验证上传结果

# 查看tom家目录,可看到客户端上传的文件和目录
ls /home/tom/
ftp目录上传过程中/对结果影响的验证:

我们可以观测到,ftp带有rsync的部分属性,即 /。FTP操作中, / 的使用方法和rsync类似。接下来我们将通过实验验证ftp相关特性

一,下载目录过程中 / 对结果的影响 /home/jj/aa的结构如下: 在这里插入图片描述 执行: bash mirror aa /opt 结果: 在这里插入图片描述 可以看出直接将aa目录中的内容放入了/opt,aa目录本身没有过来 执行:

bash mirror aa/ /opt 结果: 在这里插入图片描述 与前面一致

执行:

bash mirror aa/ /opt/ 在这里插入图片描述 依旧与前面结果一致

执行:

bash mirror aa /opt/ 在这里插入图片描述 可以发现这里是直接把整个aa目录搬进来了。

二,上传目录过程中 / 对mirror -R的影响 已知aa目录结构如下: 请添加图片描述 执行命令:

bash lftp jj@192.168.8.101:~> mirror -R aa 结果: 请添加图片描述 执行命令:

bash lftp jj@192.168.8.101:~> mirror -R aa/ 结果:

请添加图片描述 与上面结果一致。

结论:

对上传目录的结果来说,/ 的影响: 这三条效果一模一样: mirror aa /opt ,mirror aa/ /opt ,mirror aa/ /opt/ 都是把aa文件中内容放入/opt中。 只有这一条不一样: mirror aa /opt/ 是把aa整个目录塞进/opt

实战仅记住此特例即可

对下载目录的结果来说: 使用mirror -R上传目录过程中,源目录末尾加不加 / 无影响

6. FTP服务核心小结

  1. 掌握FTP服务端通用搭建流程:装包→改配置→重启服务→验证端口
  2. 区分匿名/实名访问的权限差异:匿名只读(/var/ftp)、实名读写(用户家目录);
  3. 熟练使用lftp客户端核心命令,牢记mirror -R为目录上传,匿名上传会触发权限拒绝;
  4. 注意命令语法与URL的正确性:lftp IPlftp ftp://IP:24等价,IP地址需完整书写。

三、NTP时间同步服务配置

NTP为网络时间协议,核心作用是统一网络中各计算机的系统时间,是服务器集群搭建的必备基础服务,本次实操仍基于上述client和server实验环境,将server作为时间服务端、client作为时间客户端,采用Linux默认的chronyd服务(替代传统ntpd)实现时间同步。

1. NTP服务核心概述

  • 协议全称:Network Time Protocol(网络时间协议)
  • 官方授时源:国家授时中心服务器IP → 210.72.145.39
  • 架构设计:Stratum分层设计,分层总数限制在15以内(含15)
  • 核心基础参数(chronyd):
    • 所需软件:chrony
    • 服务名:chronyd
    • 主配置文件:/etc/chrony.conf
    • 默认端口:123(对外提供时间同步服务)、323(本地chronyc与chronyd通信)
    • 核心特点:同步速度快,占用资源少,适配Linux主流发行版

2. 服务端(server,192.168.8.101)配置步骤

# 1. 安装chrony软件
dnf -y install chrony
# 2. 编辑配置文件,允许192.168.8.0/24网段主机同步时间
vim /etc/chrony.conf
# 在第23行下方添加以下配置
allow 192.168.8.0/24
# 3. 启动chronyd服务
systemctl start chronyd
# 4. 设置服务开机自启
systemctl enable chronyd
# 5. 验证123端口是否正常监听
ss -nultp | grep :123

3. 客户端(client,192.168.8.100)配置步骤

查看时间同步服务器:chronyc sources -v

# 1. 安装chrony软件
dnf -y install chrony
# 2. 编辑配置文件,指定server为时间同步源
vim /etc/chrony.conf
# 将第3行默认配置修改为以下内容
pool 192.168.8.101 iburst  # iburst:加快时间同步速度
# 3. 启动chronyd服务
systemctl start chronyd
# 4. 设置服务开机自启
systemctl enable chronyd
# 5. 查看时间同步源信息(首次执行可能加载较慢,耐心等待)
chronyc sources -v

4. 客户端时间同步效果验证

date相关命令补充: date :查看当前系统时间 date -s '年-月-日 时:分:秒':修改当前系统时间 date "+%F" :仅显示年月日 date "+%R":仅显示时分

通过手动修改系统时间模拟时间不一致场景,验证chronyd的自动同步功能:

# 1. 手动修改客户端系统时间为错误时间
date -s '1982-10-03 20:19:35'
# 2. 重启chronyd服务,触发立即同步(也可等待系统自动同步)
systemctl restart chronyd
# 3. 验证同步结果,查看系统时间是否恢复为服务端的正确时间
date

5. NTP服务核心小结

  1. Linux下优先使用chronyd服务实现NTP时间同步,替代传统ntpd服务;
  2. 服务端核心配置:安装软件+网段授权(allow)+启动服务+验证123端口;
  3. 客户端核心配置:安装软件+指定同步源(pool)+启动服务,iburst参数可加快同步;
  4. 验证方法:通过chronyc sources -v查看同步源,通过手动改时间验证同步效果。

服务学习三部曲:装包 配置 启服务

整体学习重点与实操规范

本次内容为云计算基础环境搭建的核心实操,所有操作均基于标准化模板机环境,为后续云计算相关服务学习奠定基础,核心学习重点与通用实操规范如下:

  1. 模板机是基础:标准化配置模板机,通过克隆快速生成新节点,避免重复工作,链接克隆后不可删除模板机;
  2. Linux服务通用部署流程:装包→修改配置文件→启动服务→设置开机自启→验证端口/状态,配置文件修改后必须重启服务才会生效
  3. 架构与权限理解:掌握C/S架构的客户端-服务端联动逻辑,区分FTP匿名/实名的权限差异,理解NTP服务的分层设计与网段授权;
  4. 命令与语法准确性:牢记核心命令的书写与使用场景,注意IP地址、URL、配置参数的正确性,避免拼写错误;
  5. 问题排查意识:遇到网络适配器异常、端口未监听、访问报错等问题,先检查配置文件、端口状态、命令语法,再逐步排查。