用户认证:
匿名用户: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、测试匿名用户登录
一 搭建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失败