Ftp与磁盘挂载

FTP 服务配置与磁盘挂载

一、FTP(文件传输协议)基础

1.1 FTP 简介

  • FTP(File Transfer Protocol):用于在网络上传输文件。
  • 支持客户端与服务器之间上传、下载文件。

1.2 FTP 工作模式

特性 主动模式(Active Mode) 被动模式(Passive Mode)
控制连接 客户端 → 服务器 21 端口 客户端 → 服务器 21 端口
数据连接 服务器 20 端口 → 客户端随机端口 客户端 → 服务器随机端口
适用场景 客户端有公网 IP,不在 NAT/防火墙后 客户端在 NAT/防火墙后
防火墙穿越 可能失败(服务器主动连接) 更可靠(客户端主动连接)

推荐使用被动模式,兼容性更好。


二、FTP 服务器搭建(vsftpd)

2.1 服务端配置(node2)

安装与启动

dnf install vsftpd
systemctl start vsftpd
systemctl enable vsftpd

防火墙放行

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

匿名访问配置(/etc/vsftpd/vsftpd.conf

anonymous_enable=YES
anon_root=/anon
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

修改后需重启服务:systemctl restart vsftpd

禁用匿名访问(生产环境常用)

anonymous_enable=NO
local_enable=YES
write_enable=YES

创建普通用户(避免使用 root)

useradd smartgouser
echo 123 | passwd --stdin smartgouser

2.2 客户端配置(node1)

dnf install lftp
lftp ftp://smartgouser:123@192.168.88.102

Windows 浏览器也可直接访问:ftp://192.168.88.102


三、用户目录禁锢(chroot)

3.1 基本禁锢

local_root=/data/kefu
chroot_local_user=YES
  • 所有本地用户被限制在其家目录或指定目录中。

3.2 白名单例外用户

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
  • 将例外用户名写入 /etc/vsftpd/chroot_list(每行一个)。

四、用户访问控制(黑白名单)

4.1 相关文件

  • ftpusers黑名单,列出禁止登录的用户(优先级高)。
  • user_list:配合配置项使用,可作白名单或黑名单。

4.2 配置白名单模式

userlist_enable=YES
userlist_deny=NO
  • 此时 user_list 中的用户允许登录,其他用户拒绝。
  • 同时需从 ftpusers 中移除如 root 等需放行的用户。

示例:允许 lisiwangwu 登录,禁止 zhangsan


五、常见错误处理

  • 错误vsftpd: refusing to run with writable root inside chroot()

    • 原因:chroot 目录具有写权限(不安全)。
    • 解决:确保根目录不可写,或升级 vsftpd 版本并设置 allow_writeable_chroot=YES(谨慎使用)。
  • 550 错误:用户无权限操作文件/目录。

    • 解决:检查目录权限,使用 chmodchown 赋权。

六、卸载 FTP 服务

# 客户端
dnf -y remove lftp
dnf clean all

# 服务端
dnf -y remove vsftpd
rm -rf /etc/vsftpd/
rm -rf /anon
userdel -r smartgouser
userdel -r ftpuser
firewall-cmd --permanent --remove-service ftp
firewall-cmd --reload

七、磁盘挂载(mount)

7.1 基本命令

# 挂载
mount /dev/sda1 /mnt

# 指定文件系统类型
mount -t xfs /dev/sdb1 /mnt/data

# 只读挂载
mount -o ro /dev/sda1 /mnt

7.2 自动挂载(/etc/fstab)

# 格式:设备 挂载点 文件系统类型 选项 dump fsck
/dev/sda1 /mnt ext4 defaults 0 0

推荐使用 UUID(更稳定):

blkid /dev/nvme0n2p1
# 添加到 fstab
UUID=f640... /mnt/data xfs defaults 0 0

7.3 卸载

umount /mnt
# 或
umount /dev/sda1

7.4 查看挂载信息

df -h      # 磁盘使用情况
lsblk      # 分区与设备树

八、综合案例:挂载新磁盘

需求

  • 新增 40GB 磁盘,分两个区:10GB + 30GB。
  • 挂载到 /mount/f1/mount/f2,并永久生效。

步骤

  1. 扫描新磁盘

    lsblk
    echo "---" > /sys/class/scsi_host/host0/scan  # 若未识别
    
  2. 分区

    fdisk /dev/nvme0n2
    # n → p → 默认 → +10G → n → p → 默认 → w
    
  3. 格式化

    mkfs.xfs /dev/nvme0n2p1
    mkfs.xfs /dev/nvme0n2p2
    
  4. 创建挂载点

    mkdir -p /mount/f1 /mount/f2
    
  5. 临时挂载

    mount /dev/nvme0n2p1 /mount/f1
    mount /dev/nvme0n2p2 /mount/f2
    
  6. 永久挂载(/etc/fstab)

    UUID=xxx1 /mount/f1 xfs defaults 0 0
    UUID=xxx2 /mount/f2 xfs defaults 0 0
    

    使用 blkid 获取 UUID。

  7. 验证

    mount -a  # 无报错即成功
    df -h     # 查看挂载
    

📌 提示:实验建议在克隆虚拟机中进行,避免系统损坏。


✅ 本笔记覆盖文档全部核心知识点,适合快速回顾与实操参考。

posted @ 2025-12-24 17:26  ShiLiCoder  阅读(2)  评论(0)    收藏  举报