1、查看系统是否安装ftp
rpm -qa|grep vsftpd
2、安装
2.1、使用 yum 安装 vsftpd
yum install -y vsftpd
2.2、启动 vsftpd
安装完成后,启动 FTP 服务:
systemctl start vsftpd.service
启动后,可以看到系统已经监听了 21 端口:
netstat -nltp | grep 21
2.3、设置vsftpd服务开机自启
systemctl enable vsftpd.service
3、配置 FTP
3.1、了解 VSFTP 配置
vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:
vsftpd.conf 为主要配置文件
ftpservers 配置禁止访问 FTP 服务器的用户列表
user_list 配置用户访问控制
3.2、 配置
3.2.1、必要配置
vim /etc/vsftpd/vsftpd.conf
# 是否允许匿名用户访问
anonymous_enable=NO
# 是否将所有用户限制在主目录
chroot_local_user=YES
3.2.2、按需求配置(可选)
# 是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器
local_enable=YES
# 是否允许本地用户对FTP服务器文件具有写权限
write_enable=YES
# 掩码,本地用户默认掩码为077,也可根据个人喜好将其设置为其他值
local_umask=022
# 是否激活目录欢迎信息功能
dirmessage_enable=YES
# 是否让系统自动维护上传和下载的日志文件
xferlog_enable=YES
# 是否设定FTP服务器将启用FTP数据端口的连接请求
connect_from_port_20=YES
# 是否以标准xferlog的格式书写传输日志文件
xferlog_std_format=YES
# 是否允许用户在主目录中上传
allow_writeable_chroot=YES
# 是否允许监听,如果设置为YES,则vsftpd将以独立模式运行
listen=YES listen_ipv6=NO
# 设置PAM外挂模块提供的认证服务所使用的配置文件名
pam_service_name=vsftpd
# 是否允许ftpusers文件中的用户登录FTP服务器
userlist_enable=NO
# 是否使用tcp_wrappers作为主机访问控制方式
tcp_wrappers=YES
3.3、创建 FTP 用户
创建一个用户 ftpuser
useradd ftpuser
为用户 ftpuser 设置密码
echo "ftp123456" | passwd ftpuser --stdin
3.4、限制该用户仅能通过 FTP 访问
限制用户 ftpuser只能通过 FTP 访问服务器,而不能直接登录服务器:
usermod -s /sbin/nologin ftpuser
3.5、为用户分配主目录
为用户 ftpuser创建主目录并约定:
/data/ftp 为主目录, 该目录不可上传文件
/data/ftp/uploadfile文件只能上传到该目录下
在/data中创建相关的目录
mkdir -p /data/ftp/uploadfile
设置访问权限
chmod a-w /data/ftp && chmod 777 -R /data/ftp/uploadfile
设置为用户的主目录:
usermod -d /data/ftp ftpuser
4、注意事项:
4.1、pam 保护机制
该配置项的含义为仅允许用户的shell为 /etc/shells
文件内的shell命令时,才能够成功
而创建ftp用户时,为了禁止ssh登录,一般多为/bin/false 、/usr/sbin/nologin 等,显然不是一个有效的bash,也就无法登录了。
解决方法:可选一种方式
vim /etc/pam.d/vsftpd
(1)将auth required pam_shells.so修改为
auth required pam_nologin.so
(2)注释掉auth required pam_shells.so
vim /etc/pam.d/vsftpd
重启vsftpd
systemctl restart vsftpd.service
4.2、去除用户主目录的写权限(可选)
用命令"chmod a-w 你要设置的路径"去除用户主目录的写权限,或者在vsftpd的配置文件中增加下列一项:
vim /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
4.3、防火墙配置
注意:记得关闭防火墙或者开放FTP默认端口(21)
CentOS 7默认使用的是firewall作为防火墙
4.3.1、查看防火墙状态
firewall-cmd --state
4.3.2、停止firewall
systemctl stop firewalld.service
4.3.3、禁止firewall开机启动
systemctl disable firewalld.service
4.3.4、关闭selinux
进入到/etc/selinux/config文件
vi /etc/selinux/config
将
SELINUX=enforcing
改为
SELINUX=disabled
5、访问FTP
通过 Windows 资源管理器访问
Windows 用户可以复制下面的链接
ftp://服务器ip
到资源管理器的地址栏访问:
ftp://192.168.10.220
其中为登录FTP的用户名,ftp123456为登录FTP的密码
账号密码
ftpuser
ftp123456
6、日志查看
如果需要查看vsftpd的日志,需要在配置文件中,加入配置项:
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log