在 CentOS 上管理 FTP 服务器文件的实用指南
一 环境准备与连接
- 安装组件:在 CentOS 7/8 上安装服务器与客户端
- 安装 vsftpd:sudo yum -y install vsftpd
- 安装客户端:sudo yum -y install ftp
- 启动与开机自启:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
- 防火墙放行(firewalld)
- 放行服务:sudo firewall-cmd --zone=public --add-service=ftp --permanent
- 或放行端口:sudo firewall-cmd --zone=public --add-port=21/tcp --permanent
- 重载:sudo firewall-cmd --reload
- 云服务器安全组:在云平台放行 21/TCP 与被动模式端口段(见下文)
- 连接示例
- 匿名:ftp your_server_ip,用户名 anonymous,密码任意邮箱格式
- 本地用户:ftp your_server_ip,使用系统用户名与密码登录
二 命令行客户端常用文件管理操作
- 目录与浏览
- 列目录:ls / dir;切换远端目录:cd dir;返回上级:cdup;查看当前远端目录:pwd
- 切换本地目录:lcd /path(影响 get/put 的默认路径)
- 传输模式
- 文本模式:ascii(默认,适合纯文本)
- 二进制模式:binary(适合压缩包、镜像、图片等,避免损坏)
- 上传与下载
- 上传:put local_file 或 mput file1 file2(支持通配符)
- 下载:get remote_file 或 mget file1 file2
- 删除与重命名
- 删除文件:delete file;批量删除:mdelete files
- 重命名:rename old new
- 目录管理
- 新建:mkdir dir;删除空目录:rmdir dir
- 权限与帮助
- 修改远端权限:chmod mode file(视服务器配置与权限而定)
- 帮助:help [cmd];退出:bye/quit
三 服务器端文件与权限管理要点
- 匿名访问根目录与可写目录
- 匿名默认根通常为 /var/ftp;可写目录常设为 /var/ftp/pub
- 示例:chmod 766 /var/ftp/pub(确保目录对 FTP 进程可写)
- 本地用户与禁锢
- 允许本地系统用户登录:local_enable=YES
- 将本地用户禁锢在其家目录:chroot_local_user=YES(提升安全)
- 用户访问控制
- 黑名单文件:/etc/vsftpd/ftpusers(列于此文件中的用户禁止登录,优先级高)
- 可选名单:/etc/vsftpd/user_list,配合 userlist_enable=YES
- userlist_deny=YES:列表内用户禁止登录(默认行为)
- userlist_deny=NO:仅允许列表内用户登录
- 传输模式与端口
- vsftpd 默认使用被动模式(PASV);主动模式由客户端发起数据连接
- 被动端口范围建议在配置中显式设置:pasv_min_port=5000,pasv_max_port=5500,并在防火墙放行该范围
四 常见故障排查与实用建议
- 无法连接
- 检查服务:systemctl status vsftpd;端口监听:ss -tnlp | grep :21
- 防火墙/安全组:放行 21/TCP 与被动端口段(如 5000–5500/TCP)
- 上传失败(如“553 Could not create file”)
- 目标目录权限与属主是否正确(如 /var/ftp/pub 对 FTP 进程可写)
- 目录是否存在、是否为空目录(rmdir 只能删除空目录)
- 用户是否被禁锢且目录不在禁锢范围之外
- 传输后文件损坏
- 传输前执行 binary,避免文本模式导致换行符转换
- 批量传输效率
- 使用 mget/mput 配合 prompt 关闭交互提示,减少确认步骤
- 安全建议
- 避免以 root 直接提供 FTP;优先使用本地普通用户或虚拟用户
- 结合防火墙、SELinux 策略与目录权限最小化原则