一、匿名用户登录
Yum方式安装:
[root@hadoop103 ~]# yum -y install vsftpd ftp (加安装比较快)
[root@hadoop103 ~]# systemctl start vsftpd
[root@hadoop103 ~]# systemctl status vsftpd
[root@hadoop103 ~]# systemctl enable vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
默认情况下,安装完vsftpd即可匿名用户登录(匿名用户名为:ftp/anonymous,无密码)
匿名用户只有下载权限,而无上传权限,是因为一下原因:
- /etc/vsftpd/vsftpd.conf 配置文件中“anon_upload_enable=YES”选项没有开启
(开启需去掉注释)
- 匿名用户默认/var/ftp文件写入目录无其他用户写入权限
1. 匿名权限控制
anonymous_enable=YES # 启用匿名用户访问anon_umask=022 # 匿名用户所上传文件的掩码anon_root=/var/ftp # 匿名用户FTP的根目录anon_upload_enable=YES # 允许上传文件anon_mkdir_write_enable=YES # 允许创建目录anon_other_write_enable=YES # 允许其他写入权限(删除、覆盖、重命名)anon_max_rate=0 # 限制最大传输速率(0为不限速,单位:bytes/秒)
1)实现匿名用户上传
- 开启 anon_upload_enable=YES 配置项
- 在/var/ftp目录下创建上传目录
- 修改上传目录的权限或所有者,让匿名用户有写入权限
(建议不要直接修改/var/ftp目录权限或者修改/var/ftp/pub目录权限)
[root@hadoop103 ~]# vim /etc/vsftpd/vsftpd.conf 去掉下面配置项前面的注释
# anon_upload_enable=YES 改为 anon_upload_enable=YES
[root@hadoop103 ~]# cd /var/ftp/
[root@hadoop103 ftp]# mkdir upload (创建单独的上传目录)
[root@hadoop103 ftp]# chmod o+w upload (给上传目录设置权限)
[root@hadoop103 ftp]# getsebool -a|grep ftp
(查看ftpd_full_access、ftpd_use_passive_mode 此两项是否为 on)
[root@hadoop103 ftp]# setsebool ftpd_full_access on
[root@hadoop103 ftp]# setsebool ftpd_use_passive_mode on
[root@hadoop103 ftp]# systemctl restart vsftpd (重启vsftpd服务)
2)实现创建目录和文件其他操作
- 配置文件开启 anon_mkdir_write_enable=YES 允许创建目录权限
- 配置文件开启 anon_other_write_enable=YES 允许其他写入权限
3)用于进入某个目录时弹出相应说明
(说明语首次进入目录时会显示)
- 在对应目录下面创建 .message 文件,并写入说明内容
- 配置文件开启 dirmessage_enable=YES
- 配置文件设置 message_file=.message (.message文件存放默认在FTP当前创建的目录下)
4)实现上传的文件其他人可下载
默认情况下开放上传权限后,上传的文件是无法下载的,因为文件的其他人位置没有 r 权限
- 配置文件设置 anon_umask=022 允许其他人可下载
二、本地用户登录
1. 本地用户权限控制
local_enable=YES # 启用本地系统用户
local_umask=022 # 本地用户所上传文件的权限掩码
local_root=/var/ftp # 设置本地用户的FTP根目录
chroot_local_user=YES # 将登录FTP的用户禁锢在主目录
local_max_rate=0 # 显示最大传输速率
ftpd_banner=Welcome to blah FTP service # 用户登录时显示的欢迎信息
userlist_enable=YES & userlist_deny=YES # 禁止/etc/vsftpd/user_list文件中出现的用户登录FTP
userlist_enable=YES & userlist_deny=NO # 仅允许/etc/vsftpd/user_list文件中出现的用户登录FTP
注意:/etc/vsftpd/ftpusers 配置文件为禁止登录FTP的用户黑名单,权限比user_list权限更高
( /etc/vsftpd/ftpusers文件设置好后会及时生效)
1)服务端创建FTP本地用户并设置密码
(所创建的用户仅用来登录Vsftp,不可登录操作系统)
useradd -s /sbin/nologin username (username为所需要创建的用户名)
passwd username (给username设置密码)
[root@hadoop103 ~]# useradd -s /sbin/nologin muyb
[root@hadoop103 ~]# passwd muyb (密码:123456)
[root@hadoop103 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 改为 # anonymous_enable=YES (注释掉匿名用户登录)
reverse_lookup_enable=NO (添加此配置项)
[root@hadoop103 ~]# systemctl restart vsftpd
备注:reverse_lookup_enable=NO 表示禁用DNS反向解析,如果是YES经常会出现登录超时
(特别是Windows系统连接ftp超时情况特别严重,因此需禁用DNS反向解析)
[root@hadoop103 ~]# vim /etc/pam.d/vsftpd 注释掉下面行
auth required pam_shells.so 改为 # auth required pam_shells.so
客户端连接测试:
备注:本地用户登录FTP后,会在自己/home/用户 的家目录下
2)将所用FTP用户禁锢在自己的家目录
配置文件 chroot_local_user=YES 开启 禁止切换目录功能
本地用户在没有设置禁锢家目录的情况下,可以进入系统的/目录,容易造成安全事故
禁锢本地用户在其/home/用户 家目录:
[root@hadoop103 ~]# vim /etc/vsftpd/vsftpd.conf (去掉下面配置项的注释)
# chroot_local_user=YES 改为 chroot_local_user=YES
[root@hadoop103 ~]# systemctl restart vsftpd
客户端登录报错:
原因:/home/用户 用户家目录其它用户没有执行权限
处理:给/home/用户 用户家目录授权
[root@hadoop103 ~]# chmod 755 /home/muyb
3)将部分用户禁锢在自己的家目录
- 配置文件 choor_list_enable=YES 开启白名单功能 (允许白名单里的用户随意切换目录)
- 配置文件设置 choor_list_file=/etc/vsftpd/chroot_list (手动设置白名单文件位置)
[root@hadoop103 ~]# vim /etc/vsftpd/vsftpd.conf 去掉下面配置项的注释,并添加
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@hadoop103 ~]# cd /etc/vsftpd/
[root@hadoop103 vsftpd]# touch chroot_list
[root@hadoop103 vsftpd]# cat chroot_list
[root@hadoop103 vsftpd]# systemctl restart vsftpd
4)黑名单设置不允许登录FTP
所有写入/etc/vsftpd/ftpusers 配置文件 的用户都不允许登录FTP,设置后将立即生效
[root@hadoop103 vsftpd]# echo “muyb” > ftpusers
5) 本地用户访问指定目录
创建用户,并指定其家目录:
创建myb03用户指定其家目录为/data/muyb03,且用户不可登录系统
[root@hadoop103 ~]# useradd muyb03 -d /data/muyb03 -s /sbin/nologin
[root@hadoop103 ~]# echo 123456 | passwd —stdin muyb03
配置文件添加如下内容:
[root@hadoop103 ~]# vim /etc/vsftpd/vsftpd.conf
local_root=/data/muyb03
修改/data/muyb03家目录权限:
[root@hadoop103 ~]# chmod 755 /data/muyb03
客户端muyb03用户登录测试:
6)修改被动模式数据传输使用端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000
创建一个1G的test.txt文件(dd if=/dev/zero of=./test.txt bs=1M count=1000)
三、虚拟用户登录
示例:
1)建立虚拟用户数据库文本文件
[root@hadoop103 ~]# cd /etc/vsftpd/
[root@hadoop103 vsftpd]# vim /etc/vsftpd/vsftpd.user
muyaobin01
123456
muyaobin02
123456
将数据库文本文件转换为数据库文件
[root@hadoop103 vsftpd]# db_load -T -t hash -f vsftpd.user vsftpd.db
修改用户数据库文件,保证其安全性
[root@hadoop103 vsftpd]# chmod 600 vsftpd.db
注意:虚拟用户数据库文本文件名可自己定义,奇数行为用户名,偶数行为密码
2)创建虚拟用户的映射用户,并指定其家目录
[root@hadoop103 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
virtual:为虚拟用户的映射用户
/var/ftproot:为家目录
[root@hadoop103 vsftpd]# chmod o+r /var/ftproot
3)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
[root@hadoop103 vsftpd]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
编辑vsftpd.pam文件:
[root@hadoop103 vsftpd]# vim /etc/pam.d/vsftpd.pam (清空内容,添加如下两行)
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
修改/etc/vsftpd/vsftpd.conf配置文件,添加支持配置
[root@hadoop103 vsftpd]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd 改为 pam_service_name=vsftpd.pam
# 添加如下配置行
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir
创建/etc/vsftpd/dir目录<br />[root@hadoop103 vsftpd]# mkdir /etc/vsftpd/dir<br />4)为虚拟用户建立独立的配置文件
注意:做虚拟用户配置文件设置时,必须将主配置文件里的自定义匿名用户的相关设置项注释掉
# anon_mkdir_write_enable=YES
# anon_other_write_enable=YES


