[zzerX@blog ~ ]:

CentOS 8配置搭建vsftpd

记录配置vsftpd过程,和遇到的问题。

安装

#安装并同意所有询问(-y)
yum -y install vsftpd 
systemctl start vsftpd #启动
systemctl enable vsftpd #设置开机自启

配置防火墙开放21端口

firewall-cmd --zone=public --add-port=21/tcp --permanent 
systemctl restart firewalld.service  #重启防火墙
firewall-cmd --reload #重载防火墙

–permanent 永久生效
–zone=public 区域:公共区
–add-port=21/tcp 添加端口
显示success则成功,如果防火墙未开启?->systemctl start firewalld.service开启防火墙。(建议开启)

创建用于ftp登录的账户

创建用户用于登录ftp的方式有两种,一种是创建虚拟用户依赖宿主用户进行登录,另一种是直接使用真实用户登录,因为不常使用ftp,打算使用完毕就关闭又不想使用匿名登录,所以选择较为简单的真实用户登录方式。(虚拟用户登录方式更安全)


useradd -s /sbin/nologin yourftpuser
passwd yourftpuser #修改密码

添加用户并禁止用户登录(/sbin/nologin),因为添加的用户是/sbin/而不是shell,vsftpd的pam模块会不通过导致无法登录,所以需要修改以下pam的配置。

vim /etc/pam.d/vsftpd

把第四行pam_shells.so注释:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

检查端口

#查看已开启的端口
firewall-cmd --list-ports
#查看21端口被哪一个进程占用
netstat -lnpt |grep 21

能看到21端口和占用程序为vsftpd说明开放状态正常

配置vsftpd.conf

vsftpd的配置文件默认在/etc/vsftpd/vsftpd.conf ,vsftp的配置中某些YES/NO的定义和平时的[开启/关闭]又有些不太一样,参考添加以下配置:

anonymous_enable=NO         # 不允许匿名访问
local_enable=YES            # 允许使用本地帐户进行FTP用户登录验证
chroot_local_user=YES       # 启用限定用户在其主目录下
userlist_deny=YES       # 否认/etc/vsftpd/userlist下的用户登录
  • 注意这里的userlist_deny为YES时,/etc/vsftpd/userlist的用户不能登陆,为NO时,只有/etc/vsftpd/userlist的用户才能登陆。
    这里我设置了yes,所以需要往/etc/vsftpd/userlist添加除了yourftpuser用户以外的其他用户,当然也可以改为NO,然后只存yourftpuser用户。

systemctl restart vsftpd #重启vsftpd

到这一步,基本上的配置已经完成,ftp当前的状态是:

  • 不能匿名登录
  • 本地用户只有yourftpuser可以登陆
  • 不允许切换目录
    接下来就可以使用ftp工具进行登录测试。

    报错分析

    530登陆失败

如有写错,欢迎指出!输入图片描述

, — Jun 1, 2022