目录

1. 前言

2. 安装

2.1. 环境版本

2.2. 创建用户和目录

 2.2.1. 创建用户

2.2.2. 分配权限

2.3. 安装和配置

2.3.1. 安装

2.3.2.  配置

2.3.3. 启动

3. 排错


1. 前言

       最近在做一个项目需要配置FTP服务,于是先在网上找资料来看结果发现灌水文章太多,大部分都是抄来抄去人云亦云甚至还有错误让人忍无可忍,在一番试错后决定把安装过程整理出来和大家做一个分享同时也给自己留一份记录,下面以在Centos7上安装vsftpd为例来分步骤详细讲解。

2. 安装

       网上部分文章描述安装过程比较混乱且有些东西没有讲清,在这里我按照底层逻辑重新编排了安装顺序,并选择了一种比较简单但又能满足大部分需求的方式来进行讲解。实际上整个过程可以简化为的理解为创建用户、启动服务、登录FTP三步。

2.1. 环境版本

  • 操作系统版本:CentOS Linux release 7.9.2009 (Core)
  • FTP软件版本:version 3.0.2

2.2. 创建用户和目录

       首先创建linux用户用于来登录ftp,这种方式较ftp虚拟用户的安装配置来说简单且能满足大部分需求,其实这部分你可以理解为和ftp无关因为它本身就是创建linux用户。

 2.2.1. 创建用户

useradd -d /home/ftp/lh -s /sbin/nologin -g ftp lh  # 创建用户并指定主目录(不能ssh远程登录)

passwd lh # 为用户设置密码
  • "-d /home/ftp/lh":指定该用户的主目录为"/home/ftp/lh";
  • "-s /sbin/nologin":指定该用户登录时使用的shell为"/sbin/nologin",即禁止该用户登录系统;
  • "-g ftp":将该用户添加到"ftp"用户组中。

2.2.2. 分配权限

mkdir -p /home/ftp/lh  # 创建用户目录

chown lh:ftp /home/ftp/lh # 将刚创建的目录拥有者更换为ftp用户组下的lh用户

chmod 700 /home/ftp/lh # 为lh目录设置访问权限,700的意识是除目录拥有者外同组或其他用户均无权限

2.3. 安装和配置

2.3.1. 安装

 yum -y install vsftpd

2.3.2.  配置

(1)编辑FTP主配置文件

vim /etc/vsftpd/vsftpd.conf # 编辑ftp配置文件

 anonymous_enable=NO  #关闭匿名用户
在文件末尾添加如下配置
chroot_local_user=YES  #所有用户都限制在其FTP主目录下
chroot_list_enable=NO  #不使用列外的用户列表
allow_writeable_chroot=YES  #允许用户对主目录有写权限
user_config_dir=/etc/vsftpd/userconfig  #配置FTP用户登录指向主目录配置文件位置
userlist_deny=NO  #NO代表userlist是白名单
userlist_file=/etc/vsftpd/user_list  #配置登录FTP白名单用户文件位置

(2)向FTP登录白名单添加用户

vim /etc/vsftpd/user_list  # 在文件末尾加入之前创建的linux账号

 lh

(3)创建用户FTP目录配置文件

mkdir /etc/vsftpd/userconfig #创建存放用户ftp主目录配置文件的文件夹

vim /etc/vsftpd/userconfig/lh #创建与用户同名的文件在其中配置用户目录路径

local_root=/home/ftp/lh

2.3.3. 启动

systemctl restart vsftpd

3. 排错

每台服务器环境和版本均不一样不一定都会出现,因此这部分仅供参考希望大家都能直接启动成功!

3.1. 防火墙开启端口

firewall-cmd --add-port=21/tcp --permanent #永久添加21端口

firewall-cmd --reload  #重启防火墙

3.2. 读取目录列表失败

firewall-cmd --add-service=ftp --permanent  # 在防火墙上开启ftp服务

3.3. 530 Login incorrect.

pam_service_name=vsftpd  #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。

进入/etc/pam.d将vsftpd文件中的pam_shells.so改为pam_nologin.so,然后systemctl restart vsftpd重启服务,连接ftp成功

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐