记录配置vsftpd过程,和遇到的问题。
#安装并同意所有询问(-y)
yum -y install vsftpd
systemctl start vsftpd #启动
systemctl enable vsftpd #设置开机自启
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,打算使用完毕就关闭又不想使用匿名登录,所以选择较为简单的真实用户登录方式。(虚拟用户登录方式更安全)
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的配置文件默认在/etc/vsftpd/vsftpd.conf
,vsftp的配置中某些YES/NO的定义和平时的[开启/关闭]又有些不太一样,参考添加以下配置:
anonymous_enable=NO # 不允许匿名访问
local_enable=YES # 允许使用本地帐户进行FTP用户登录验证
chroot_local_user=YES # 启用限定用户在其主目录下
userlist_deny=YES # 否认/etc/vsftpd/userlist下的用户登录
systemctl restart vsftpd #重启vsftpd
到这一步,基本上的配置已经完成,ftp当前的状态是:
如有写错,欢迎指出!