用户认证:

匿名用户:ftp,anonymous,对应Linux用户ftp,随便输密码,都能登录

系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow

虚拟用户:特定服务的专用用户,独立的用户/密码文件

nsswitch:networkservice switch名称解析框架

pam:pluggableauthentication module 用户认证

/lib64/security /etc/pam.d/ /etc/pam.conf

vsftpd服务
由vsftpd包提供

不再由xinetd管理

用户认证配置文件:/etc/pam.d/vsftpd

服务脚本:/usr/lib/systemd/system/vsftpd.service

/etc/rc.d/init.d/vsftpd

配置文件:/etc/vsftpd/vsftpd.conf

man 5 vsftpd.conf

格式:option=value

注意:=前后不要有空格

匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp(用户ftp的家目录),不能切根

系统用户共享文件位置:用户家目录,能够切根

虚拟用户共享文件位置:为其映射的系统用户的家目录

ftp服务的常见配置

命令端口
listen_port=21(默认)

可以认为更改命令端口,但是连接ftp服务器时就要指定端口了

主动模式端口
connect_from_port_20=YES 主动模式端口为20

ftp_data_port=20 指定主动模式的端口,可以认为指定主动模式端口

连接到ftp服务器默认传输文件是以被动模式传输的,想要以主动模式传输,敲passive,关闭被动模式就行了,再敲一遍passive就开启了别动模式

!rm 表示删除本机的文件

del表示删除上传的文件,不过要在ftp配置文件中配置才允许

被动模式端口范围
linux客户端默认使用被动模式

windows 客户端默认使用主动模式

pasv_min_port=6000 0为随机分配

pasv_max_port=6010

使用当地时间
use_localtime=YES 使用当地时间(默认为NO,使用GMT)

匿名用户
注意:匿名登录,ftp服务器根目录/var/ftp是不能有写权限的,否则匿名登录失败

anonymous_enable=YES 支持匿名用户 改为no,不支持匿名用户

no_anon_password=YES(默认NO) 匿名用户略过口令检查

anon_world_readable_only(默认YES)只能下载全部读的文件,当我们匿名上传一个文件f1时,这个文件的权限在其他人上是没有读权限的,其所属人和所属组都是ftp,而下载文件是以nobody的身份下载的,只有在其他人上有读权限时才能下载上传的f1文件

anon_upload_enable=YES 匿名上传,注意:文件系统权限,匿名上传文件是以ftp的身份上传的,如果/var/ftp/pub这个目录的其他人上没有wx权限,就不能上传文件,有两种方式能够上传文件,一是修改/var/ftp/pub这个目录其他人上的权限,二是对这个目录设置acl权限setfacl -m u:ftp:rwx /var/ftp/pub/

anon_mkdir_write_enable=YES 可创建文件夹

anon_other_write_enable=YES 可删除和修改上传的文件

anon_umask=077 指定匿名上传umask,默认是077,所以上传的文件权限为600,之所以不能够下载上传的文件就是因为设置上传umask为077,导致匿名上传的文件其他人上没有读权限,当把上传umask设置为033,这样上传的文件权限就为644,其他人上就有了读权限,这样就能下载上传的文件了

指定上传文件的默认的所有者和权限

chown_uploads=YES(默认NO)

chown_username=wang 设置上传文件的所属人为wang

chown_upload_mode=0644设置上传文件的权限为644

Linux系统用户
guest_enable=YES 所有系统用户都映射成guest用户

guest_username=ftp 配合上面选项才生效,指定guest用户

local_enable=YES 是否允许linux用户登录

write_enable-YES 允许linux用户上传文件

local_umask=022 指定系统用户上传文件的默认权限

local_root=/ftproot非匿名用户登录所在目录

禁锢所有系统用户在家目录中
chroot_local_user=YES(默认NO,不禁锢)禁锢系统用户

禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反
chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

当chroot_local_user=YES时,则/etc/vsftpd/chroot_list中用户不禁锢

当chroot_local_user=NO时,则/etc/vsftpd/chroot_list中用户禁锢

wu-ftp日志:默认启用
xferlog_enable=YES (默认)启用记录上传下载日志

xferlog_std_format=YES (默认)使用wu-ftp日志格式

xferlog_file=/var/log/xferlog(默认)可自动生成

vsftpd日志:默认不启用
dual_log_enable=YES 使用vsftpd日志格式,默认不启用

vsftpd_log_file=/var/log/vsftpd.log(默认)可自动生成

登录提示信息
ftpd_banner="welcometo mage ftp server"

banner_file=/etc/vsftpd/ftpbanner.txt 优先上面项生效

目录访问提示信息
dirmessage_enable=YES (默认)

message_file=.message(默认)信息存放在指定目录下.message

你要访问哪个目录,就在哪个目录下面建一个.message,里面写着目录访问的提示信息,当你访问这个目录时,就会显示.message里的提示信息

使用pam(Pluggable Authentication Modules)完成用户认证
pam_service_name=vsftpd

pam配置文件:/etc/pam.d/vsftpd

如果/etc/pam.d/vsftpd中是deny,/etc/vsftpd/ftpusers默认文件中用户拒绝登录

是否启用控制用户登录的列表文件
userlist_enable=YES 默认有此设置

userlist_deny=YES(默认值)黑名单,不提示口令,NO为白名单

userlist_file=/etc/vsftpd/users_list此为默认值

/etc/pam.d/ftpusers和/etc/vsftpd/users_list中的用户是不能登陆ftp服务器的,只有同时满足/etc/pam.d/vsftpd中是allow和userlist_deny=no,/etc/pam.d/ftpusers和/etc/vsftpd/users_list中的用户才能登陆ftp服务器

连接限制
max_clients=0 最大并发连接数

max_per_ip=0 每个IP同时发起的最大连接数

vsftpd服务指定用户身份运行
nopriv_user=nobody

传输速率:字节/秒
anon_max_rate=0 匿名用户的最大传输速率

local_max_rate=0 本地用户的最大传输速率

连接时间:秒为单位
connect_timeout=60 主动模式数据连接超时时长

accept_timeout=60 被动模式数据连接超时时长

data_connection_timeout=300 数据连接无数据输超时时长

idle_session_timeout=60 无命令操作超时时长

优先以文本方式传输(默认是以二进制方式传输,文本方式传输会造成数据丢失)
ascii_upload_enable=YES

ascii_download_enable=YES

前期准备

FTP服务器: CentOS6.8
IP地址:192.168.4.69

操作步骤

1、禁用selinux
[root@edu ~]# setenforce 0
[root@edu ~]# getenforce
Permissive
[root@edu ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

2、关闭iptalbes
[root@edu ~]# service iptables stop
[root@edu ~]# chkconfig iptables off

3、安装vsftp,ftp

[root@edu ~]# yum -y install vsftpd ftp
[root@edu ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@edu ~]# netstat -tnlp | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11806/vsftpd

4、测试匿名用户登录

vsftpd功能介绍_第1张图片

一 搭建FTP服务,要求 ,student1和student2登录ftp后,只能在自己的家目录下,student3不能登录ftp,不允许从192.168.0.0/24以外的其它地方登录 

1、 创建三个用户
[root@edu ~]# useradd student1
[root@edu ~]# useradd student2
[root@edu ~]# useradd student3
[root@edu ~]# echo student1 | passwd --stdin student1
[root@edu ~]# echo student2 | passwd --stdin student2
[root@edu ~]# echo student3 | passwd --stdin student3

2、修改vsftpd配置文件
[root@edu ~]# cd /etc/vsftpd
vim vsftpd.conf
chroot_local_user=YES #开启禁锢所有用户在自己目录下
userlist_deny=YES # 开启黑名单

[root@edu ~]# cd /etc/vsftpd
vim user_list # 配置黑名单
student3

3、 重启vsftpd服务
[root@edu vsftpd]# service vsftpd restart
4、 验证结果,student2登录成功,student3失败
vsftpd功能介绍_第2张图片