一、FTP传输模式

FTP基于C/S模式
传输模式有:主动模式、被动模式

生产环境中,如果FTP客户端与服务端均开放防火墙,FTP需以主动模式工作
这样只在服务器端防火墙放行20、21端口即可

二、vsftpd 安装配置

1. 查看服务器是否已安装vsftpd:

[root@bogon ~]# rpm -qa | grep vsftpd
[root@bogon ~]# ps -ef | grep vsftpd

2. yum安装vsftpd:

[root@bogon ~]# yum -y install vsftpd*

3. 启动vsftpd

[root@bogon ~]# systemctl start vsftpd.service
[root@bogon ~]# systemctl enable vsftpd.service
[root@bogon ~]# systemctl status vsftpd.service
image.png

4. 配置文件

查看安装文件位置:
[root@bogon ~]# rpm -ql vsftpd | more
image.png
vsftpd的配置文件vsftpd.conf在/etc/vsftpd/目录下
[root@bogon ~]# ll /etc/vsftpd/
image.png

去掉配置文件注释:
[root@bogon ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
[root@bogon ~]# grep -v “#” /etc/vsftpd/vsftpd.conf.bak >/etc/vsftpd/vsftpd.conf
[root@bogon ~]# cat /etc/vsftpd/vsftpd.conf
image.png

备注:vsftpd默认以匿名用户访问
vsftpd默认匿名目录:/var/ftp/pub
FTP默认主动模式,如选择被动模式,需在配置文件/etc/vsftpd/vsftpd.conf里添加如下内容:

  1. pasv_enable=YES
  2. pasv_min_port=60000
  3. pasv_min_port=61000

三、vsftpd配置匿名用户访问

1. 匿名用户的权限

默认情况下,匿名用户只有查看权限,无法创建、删除、修改

Windows客户端连接FTP向vsftpd匿名目录上传test.txt文件时,提示权限限制:
image.png

2. 匿名用户权限开放

[root@bogon ~]# cd /etc/vsftpd
如果允许匿名用户能够创建、删除、修改文件,需在/etc/vsftpd/vsftpd.conf里添加如下内容:
[root@bogon vsftpd]# vim vsftpd.conf

anon_umask=22
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

完整的vsftpd.conf配置文件内容如下:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

修改匿名用户上传目录权限:
[root@bogon vsftpd]# chown root:root /var/ftp
[root@bogon vsftpd]# chmod 755 /var/ftp/

vsftp由于安全考虑,不允许匿名用户修改ftp用户的家目录,即/var/ftp/pub
如果要想匿名用户有创建、修改、删除文件权限,可在/var/ftp/下新建一个目录即可:
[root@bogon vsftpd]# cd /var/ftp/
[root@bogon vsftpd]# mkdir sharefile
[root@bogon vsftpd]# chmod 777 sharefile/
image.png

3. 重启vsftpd测试

[root@bogon ftp]# systemctl restart vsftpd
[root@bogon ftp]# systemctl status vsftpd

在Windows机上,打开ftp的sharefile,可成功创建、删除、修改文件
image.png

三、vsftpd配置本地用户访问

1. 创建本地用户

创建的本地用户不可以登录系统
[root@bogon ~]# useradd myb01 -s /sbin/nologin
[root@bogon ~]# useradd myb02 -s /sbin/nologin

设置用户密码
[root@bogon ~]# echo 123456 | passwd —stdin myb01
[root@bogon ~]# echo 123456 | passwd —stdin myb02

2. 修改vsftpd.conf配置文件

[root@bogon ~]# cd /etc/vsftpd/
[root@bogon vsftpd]# vim vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

reverse_lookup_enable=NO

备注:reverse_lookup_enable=NO表示禁用DNS反向解析,如果是YES会经常出现登录超时
(特别是Windows系统连接ftp超时情况特别严重,因此需禁用DNS反向解析)

修改其家目录权限:
[root@bogon vsftpd]# cd /home
[root@bogon home]# chmod 755 {myb01,myb02}

注释“pam_shells.so”行:
[root@bogon home]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@bogon home]# vim /etc/pam.d/vsftpd
注释掉 “auth required pam_shells.so”这行即可

3. 重启vsftpd测试

[root@bogon home]# systemctl restart vsftpd
[root@bogon home]# systemctl status vsftpd

访问的目录为:myb01 ——> /home/myb01
myb02 ——> /home/myb02

4. 用户访问指定目录

创建用户,并指定其家目录:
创建myb03用户指定其家目录为/data/whale_qyhz,且用户不可登录系统
[root@bogon ~]# useradd myb03 -d /data/whale_qyhz -s /sbin/nologin
[root@bogon ~]# passwd myb03 (回车输入密码)

设置配置文件:
[root@bogon ~]# cd /etc/vsftpd/
[root@bogon vsftpd]# vim vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

reverse_lookup_enable=NO

local_root=/data/whale_qyhz

备注:local_root=/data/whale_qyhz 表示指定用户访问家目录

修改家目录权限:
[root@bogon vsftpd]# cd /data/
[root@bogon data]# chmod 755 whale_qyhz/
image.png

5. 重启vsftpd测试

[root@bogon home]# systemctl restart vsftpd
[root@bogon home]# systemctl status vsftpd
image.png
image.png