凌峰创科服务平台

centos 6.5开启ftp服务器

第一步:检查并安装 vsftpd

检查你的系统是否已经安装了 vsftpd

centos 6.5开启ftp服务器-图1
(图片来源网络,侵删)
vsftpd -v

或者检查 rpm 包:

rpm -qa | grep vsftpd

如果没有任何输出,说明没有安装,请使用 yum 进行安装:

sudo yum install vsftpd -y

安装完成后,启动 vsftpd 服务并设置其开机自启:

# 启动服务
sudo service vsftpd start
# 设置开机自启
sudo chkconfig vsftpd on

第二步:配置防火墙和 SELinux

这是最关键的一步,如果配置不当,将导致 FTP 无法连接。

centos 6.5开启ftp服务器-图2
(图片来源网络,侵删)

配置防火墙 (iptables)

CentOS 6.5 默认使用 iptables 作为防火墙,FTP 服务需要使用 21 端口进行控制连接,并使用一个动态的端口范围(默认是 1024-65535)进行数据传输,我们需要开放这些端口。

# 开放 FTP 控制端口 21
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# 开放被动模式所需的端口范围 (50000-50010)
# 你可以根据需要修改这个范围
sudo iptables -A INPUT -p tcp --dport 50000:50010 -j ACCEPT
# 保存防火墙规则
sudo service iptables save
# 重启防火墙使规则生效
sudo service iptables restart

重要提示vsftpd 默认使用被动模式,因为它更容易穿过防火墙,上面的配置正是为被动模式准备的。

配置 SELinux

SELinux (Security-Enhanced Linux) 是一个强大的安全模块,它会阻止很多服务,为了简化配置,我们可以先将其设置为“宽松模式”(Permissive),它会记录但不阻止违规操作,如果之后需要严格模式,再回来调整。

# 临时设置为宽松模式 (重启后失效)
sudo setenforce 0
# 永久设置为宽松模式 (需要重启系统)
# 编辑 /etc/sysconfig/selinux 文件,将 SELINUX=enforcing 改为 SELINUX=permissive
# sudo vi /etc/sysconfig/selinux

或者,如果你不想关闭 SELinux,可以为其添加特定的 FTP 策略,但这更复杂,对于新手,暂时设置为 Permissive 是最简单的方法。


第三步:配置 vsftpd

核心配置文件是 /etc/vsftpd/vsftpd.conf,我们先备份一份,然后进行编辑。

# 备份原配置文件
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# 编辑配置文件
sudo vi /etc/vsftpd/vsftpd.conf

打开文件后,请确保以下关键配置项的值如下:

# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许本地用户对 FTP 目录有写权限
write_enable=YES
# 设置本地用户的文件掩码,默认是 077,这会导致上传的文件权限为 600,目录为 700
# 通常我们改为 022,这样文件权限为 644,目录为 755,更通用
local_umask=022
# 切换到 chroot 模式,将用户限制在其主目录下
# 这很重要,可以防止用户访问系统其他目录
chroot_local_user=YES
# 启用被动模式
pasv_enable=YES
# 设置被动模式使用的起始端口
pasv_min_port=50000
# 设置被动模式使用的结束端口
pasv_max_port=50010
# chroot_local_user=YES,但用户仍能跳出主目录,可以尝试以下设置
# allow_writeable_chroot=YES  # (较新版本 vsftpd 支持,6.5 可能不支持,但可以尝试)
# 如果不支持,需要配合下面这个选项
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd/chroot_list
# (注释掉这两行,因为我们用 chroot_local_user=YES 已经足够)
# 启用目录消息,用户进入目录时显示 .message 文件内容
dirmessage_enable=YES
# 记录上传/下载的文件
xferlog_enable=YES
xferlog_std_format=YES
# 保持连接活跃
listen=YES

配置解释

  • anonymous_enable=NO: 强烈建议设置为 NO,防止匿名用户访问你的服务器。
  • local_enable=YES: 允许系统上的用户通过 FTP 登录。
  • write_enable=YES: 允许用户上传和修改文件。
  • chroot_local_user=YES: 安全关键,将用户锁定在其主目录,无法访问 等敏感目录。
  • pasv_*: 这些是被动模式的配置,必须与防火墙中开放的端口范围一致。

保存并退出 vi 编辑器(wq)。


第四步:创建 FTP 用户和目录

我们需要一个专门用于 FTP 的用户。

  1. 创建新用户 (用户名为 ftpuser):

    sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
    • -m: 自动创建用户主目录 /home/ftpuser
    • -d /home/ftpuser: 指定用户主目录。
    • -s /sbin/nologin: 安全关键,禁止此用户通过 SSH 或控制台登录系统,只能用于 FTP。
  2. 设置用户密码

    sudo passwd ftpuser
    # 输入两次密码
  3. 设置目录权限: 为了让 ftpuser 能在其主目录下上传文件,需要给这个目录和其父目录正确的权限。

    # 设置主目录所有者为 ftpuser
    sudo chown -R ftpuser:ftpuser /home/ftpuser
    # 设置主目录权限为 755 (所有者可读写执行,组和其他用户可读和执行)
    sudo chmod -R 755 /home/ftpuser
    # 如果你希望用户上传的文件对所有用户可读,可以设置 umask (前面配置文件已设置)
    # 或者在上传后手动修改权限

第五步:重启 vsftpd 服务并测试

完成所有配置后,重启 vsftpd 服务使新配置生效。

sudo service vsftpd restart

使用 FTP 客户端进行测试

  1. 使用 Windows 资源管理器:在地址栏输入 ftp://你的服务器IP地址,然后输入用户名 ftpuser 和密码。
  2. 使用 FileZilla:新建一个站点,协议选 FTP,主机是你的服务器 IP,用户名和密码是 ftpuser 和其密码,端口默认 21。
  3. 使用命令行
    ftp 你的服务器IP地址
    # 输入用户名 ftpuser 和密码

如果能够成功登录并上传/下载文件,说明配置成功!


常见问题排查

如果连接失败,请按以下顺序检查:

  1. 防火墙:确认 iptables 的规则是否正确保存和加载。

    sudo service iptables status

    查看是否有关于 21 端口和被动端口的 ACCEPT 规则。

  2. SELinux:确认 SELinux 是否处于 PermissiveDisabled 状态。

    getenforce

    如果是 Enforcing,请暂时改为 Permissive (sudo setenforce 0) 再测试。

  3. vsftpd 服务状态:确认服务正在运行。

    sudo service vsftpd status
  4. 客户端连接模式:确保你的 FTP 客户端(如 FileZilla)设置为被动模式 (Passive Mode)

  5. 用户权限:确认用户存在,密码正确,并且其主目录权限设置正确。

  6. 查看日志vsftpd 的日志通常位于 /var/log/xferlog/var/log/vsftpd.log,查看日志文件可以找到具体的错误信息。

    tail -f /var/log/vsftpd.log

通过以上步骤,你应该就能在 CentOS 6.5 系统上成功开启并配置好一个安全的 FTP 服务器了。

分享:
扫描分享到社交APP
上一篇
下一篇