使用yum 进行安装
# 在线安装FTP
yum install -y vsftpd
安装完成后查看ftp状态
# 查看ftp状态
systemctl status vsftpd.service
# 启动ftp状态 重启:restart,停止:stop,开机自启:enable,关闭开机自启:disable
systemctl start vsftpd.service
FTP配置
配置文件路径
/etc/vsftpd/vsftpd.conf
# 编辑vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
# 显示行号
:set nu
# 修改配置12行,不允许匿名访问,默认YES允许
anonymous_enable=NO
#修改配置83、84行 允许ascii文件上传下载
ascii_upload_enable=YES
ascii_download_enable=YES
# 修改配置87行
ftpd_banner=Welcome to blah FTP service.
#修改配置101,102,104行 将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#添加下列内容到vsftpd.conf末尾
use_localtime=YES
# 监听端口
listen_port=21
idle_session_timeout=300
# 允许写
allow_writeable_chroot=YES
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
# ftp默认使用GMT时间与系统时间相差8小时
use_localtime=YES
# Esc :wq保存
FTP账号、组、目录配置
# 新建一个ftpuser组
groupadd ftpuser
# 新建一个ftpuser账号,并且该账号不需要登录服务器,设定家目录在 /home/ftpuser,-d '用户主目录'
useradd -g ftpuser -M -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/ftpuser 的所有权给ftpuser
chown -R ftpuser:ftpuser /home/ftpuser
# 在home目录下先创建文件夹,作为后续ftp账号的默认目录
mkdir -p /home/ftpuser
# 设置目录权限为755
chmod 755 -R /home/ftpuser
ftp账号,密码设置
# 进入/etc/vsftpd/目录
cd /etc/vsftpd/
# 创建用户密码信息文件
vim vuser_passwd
#编辑如下内容,创建ftp账户信息
ftpuser
123456
# Esc :wq保存退出
# 生成ftp用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
# 将该目录的权限改成600
chmod 600 /etc/vsftpd/vuser_passwd.db
编辑pam认证文件
# 查看系统位数
getconf LONG_BIT
# 备份pam认证文件
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
# 新建pam认证文件
vim /etc/pam.d/vsftpd
# 根据自己的操作系统选2行,不要全部都填写哟,下面两个选择一个就行了
# 注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。
# 系统为32位:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd
# 系统为64位:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
# Esc :wq 保存内容
创建chroot_list文件
# 进入目录/etc/vsftpd
cd /etc/vsftpd
#创建使当前配置的虚拟用户允许访问的文件列表
vim chroot_list
#写入FTP用户名
ftpuser
# Esc :wq 保存退出
防火墙配置,selinux 等配置
# SELINUX不对vsftp不做任何限制
setsebool -P ftpd_full_access on
# 防火墙设置 IPtables 的设置方式:(没有不用配置)
vi /etc/sysconfig/iptables
#编辑iptables文件,添加如下内容,开启21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT
#没有不用配置
#firewall 的设置方式,以下指令
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent
测试ftp连接
在windown中 输入指令
ftp xxx.xxx.xxx.xxx
输入用户名 后再输入密码。
这样就可以去使用了
连接错误解决
报认证失败,可能是由于ftp用户指定的主目录其所在绝对路径每一层目录权限都属于其拥有者,并未设置其他用户权限,可在ftp主目录的绝对目录下的每一层目录执行如下命令后,重试ftp连接。
#查看用户权限
ls -ld /home/ftpuser/
设置权限
chmod o+rwx 'ftp用户目录的各层级目录'