凌峰创科服务平台

centos架设ftp服务器

在CentOS系统中架设FTP服务器,通常使用vsftpd(Very Secure FTP Daemon)软件,它是一款轻量级、高性能且安全的FTP服务程序,以下是详细的架设步骤及相关配置说明。

centos架设ftp服务器-图1
(图片来源网络,侵删)

安装vsftpd服务

首先需要通过yum包管理器安装vsftpd,打开终端,执行以下命令:

sudo yum update -y  # 更新系统软件包
sudo yum install vsftpd -y  # 安装vsftpd服务

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

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

可通过systemctl status vsftpd检查服务状态,确保显示“active (running)”。

配置防火墙与SELinux

CentOS默认启用防火墙和SELinux,需要开放FTP相关端口,FTP服务默认使用21端口,被动模式还需指定端口范围。

centos架设ftp服务器-图2
(图片来源网络,侵删)
  1. 开放防火墙端口
    sudo firewall-cmd --permanent --add-service=ftp  # 添加FTP服务到防火墙规则
    sudo firewall-cmd --permanent --add-port=21/tcp  # 开放21端口
    sudo firewall-cmd --reload  # 重新加载防火墙配置
  2. 配置SELinux: 若SELinux enforcing模式阻止FTP访问,需执行以下命令:
    sudo setsebool -P ftpd_full_access on  # 允许FTP目录访问

    可通过getsebool -a | grep ftpd验证设置是否生效。

修改vsftpd配置文件

vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,建议先备份原文件:

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

使用vinano编辑器打开配置文件,根据需求修改以下关键参数:

参数 说明 推荐值
anonymous_enable 是否允许匿名用户访问 NO(禁止匿名)
local_enable 是否允许本地用户登录 YES(允许)
write_enable 是否允许上传文件 YES(允许)
chroot_local_user 是否限制本地用户仅能访问主目录 YES(安全限制)
allow_writeable_chroot 是否允许被限制在主目录的用户写文件 YES(需配合chroot_local_user)
pasv_enable 是否启用被动模式 YES(推荐)
pasv_min_port 被动模式最小端口 10000
pasv_max_port 被动模式最大端口 10100
user_config_dir 用户自定义配置目录路径 (可选,如/etc/vsftpd_user_conf)

修改完成后保存文件,重启vsftpd服务使配置生效:

centos架设ftp服务器-图3
(图片来源网络,侵删)
sudo systemctl restart vsftpd

创建FTP用户并设置权限

  1. 创建系统用户: 假设创建名为ftpuser的用户,主目录为/home/ftpuser
    sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser  # 创建禁止登录的用户
    sudo passwd ftpuser  # 设置用户密码
  2. 设置目录权限: 确保用户对主目录具有读写权限:
    sudo chmod 755 /home/ftpuser
    sudo chown ftpuser:ftpuser /home/ftpuser
  3. 限制用户访问特定目录(可选): 若需将用户限制在指定目录(如/var/www/ftp),可创建用户时指定主目录,或通过软链接实现:
    sudo mkdir -p /var/www/ftp
    sudo useradd -m -d /var/www/ftp ftpuser  # 重新设置用户主目录

配置匿名访问(可选)

若需允许匿名访问,修改vsftpd.conf中的anonymous_enable=YES,并设置匿名用户权限:

anon_upload_enable=YES  # 允许匿名上传
anon_mkdir_write_enable=YES  # 允许匿名创建目录
anon_umask=022  # 匿名用户创建文件的默认权限掩码

匿名用户的主目录默认为/var/ftp,需确保该目录权限为755,且ftp用户(匿名用户)对目录有写权限。

常见问题排查

  1. 无法连接FTP服务器

    • 检查防火墙和SELinux设置是否正确开放端口。
    • 确认vsftpd服务状态正常(systemctl status vsftpd)。
    • 检查客户端是否使用了正确的IP地址和端口(被动模式需检查端口范围是否开放)。
  2. 用户无法上传文件

    • 确认write_enable=YES已启用。
    • 检查用户对目标目录的写权限(ls -ld /目录路径)。
    • 若启用chroot_local_user,确保用户主目录不属于root(可执行sudo chown ftpuser:ftpuser /home/ftpuser)。

相关问答FAQs

问题1:如何限制FTP用户只能访问特定目录,而不能切换到其他目录?
解答:通过设置chroot_local_user=YES可将用户限制在其主目录内,若用户主目录为/home/ftpuser,需确保该目录及其所有上级目录的权限设置正确(主目录权限为755,文件权限为644),若使用SELinux,需执行setsebool -P ftpd_full_access on允许FTP访问受限目录。

问题2:如何配置FTP服务器支持IPv6连接?
解答:在vsftpd.conf中添加以下参数:

listen=YES          # 监听IPv4地址  
listen_ipv6=YES     # 监听IPv6地址  

若需同时支持IPv4和IPv6,可将listen设置为NO,启用listen_address6指定IPv6地址(如listen_address6=::),修改后重启vsftpd服务,并在防火墙中开放IPv6的FTP服务(firewall-cmd --permanent --add-service=ftp)。

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