实验环境
关闭selinux
vim /etc/sysconfig/selinux 状态改为disabled
reboot关闭火墙 systemctl disable --now firewalld
ip设置,软件仓库搭建
1.ftp介绍
ftp:file transfer proto
互联网中最老牌的文件传输协议
2.vsftpd安装及启用
1.安装ftp服务软件
dnf install vsftpd.x86_64 lftp.x86_64 -y
systemctl enable --now vsftpd
2. 使用
带用户名的访问方式
lftp 172.25.254.251 -u westos
匿名用户的访问 :要修改配置文件
vim /etc/vsftpd/vsftpd.conf
改为yes
systemctl restart vsftpd 重启服务
如何在浏览器上访问:
systemctl start firewalld.service 火墙开启了才能进行设置
systemctl status firewalld.service
firewall-cmd --permanent --add-service=ftp 把ftp服务加入火墙
firewall-cmd --reload
firewall-cmd --list-all
浏览器输入: 可以看到默认目录
ftp://172.25.254.251/
3.vsftpd基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
1.家目录控制
新建一个目录 /root/test
编写配置文件vim /etc/vsftpd/vsftpd.conf
令添 anon_root=/root/test/
systemctl restart vsftpd
2.匿名用户上传控制
一般情况匿名用户不能上传:把自己主机里的东西传到服务器
措施:
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
systemctl restart vsftpd
然后:
put: /etc/passwd: Access failed: 553 Could not create file. (passwd) ##553报错
ls -ld /var/ftp/pub/
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
ls -ld /var/ftp/pub/
##权限过小
##更改所有组和权限
systemctl restart vsftpd
结果:这里的失误是没有进入pub直接put,所以报错
3.删除、目录建立、下载控制
anon_other_write_enable=YES
##删除重命令控制
anon_mkdir_write_enable=YES
##目录建立控制
anon_world_readable_only=NO
##下载控制
##匿名用户可以下载不能读的文件
重启服务。 结果测试
4.匿名用户上传文件权限设定
anon_umask=xxx
777-022=644
##设定ftp上传文件预留权限值
systemctl restart vsftpd
##重启服务
5.匿名用户上传文件的用户身份设定
##上传文件时所有人指定为westos
vim /etc/vsftpd/vsftpd.conf
chown_uploads=YES
chown_username=westos
##重启服务
(此时之前权限不生效)
chown_upload_mode=0644
##指定上传的文件权限为0644
systemctl restart vsftpd
##再次重启服务
lftp 172.25.254.251
##测试时,权限生效
效果:
登陆数量控制 &上传速率控制
登陆连接默认最大建立50个 如何限定登陆个数?
如何限制匿名用户的下载速度?
1.登陆数量操作
效果:两个shell连接251之后,第三个shell无法连接
2.下载速率操作
先制造一个够大的文件
文件产生:
##匿名用户的上传速率被控制在每秒100K
dd if=/dev/zero of=/mnt/bigfile bs=1M count=1000
du -sh /mnt/bigfile
vim /etc/vsftpd/vsftpd.conf
(anon_max_rate=102400)
systemctl restart vsftpd
效果:
5.本地用户的访问
本地用户登陆位置为自己的家目录
默认访问根下的home下的子目录用户是服务器上的用户
新建用户:
1.登陆控制:是否允许本地用户登录
vim /etc/vsftpd/vsftpd.conf
local_enable=YES ####允许本地用户登录
2.家目录控制
local_enable=YES
local_root=/root/cui
#
# Uncomment this to enable any form of FTP write command.
write_enable=NO
6.虚拟用户访问
1.建立虚拟用户过程
建立系统认证文件
vim /etc/vsftpd/virt_users
cat /etc/vsftpd/virt_users
##建立认证文件模板
加密认证文件
加密认证文件
db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db
##使用哈希算法进行转换加密
##否则系统不识别
##-T 转换
##-t type
##-f 指定转换文件
编辑认证策略
account
##账号
auth
##密码
session
##认证级别
required
##认证策略必须通过
pam_userdb.so
##利用插件去拒绝错误认证
db=/etc/vsftpd/virt_user
##认证名单
cat /etc/pam.d/westos
account required pam_userdb.so db=/etc/vsftpd/westos_pam
auth required pam_userdb.so db=/etc/vsftpd/westos_pam
更改配置参数
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
pam_service_name=westos
userlist_enable=YES
guest_enable=YES
guest_username=ftp
效果测试
2.虚拟用户家目录的独立设定
建立目录
mkdir -p /ftphome/user{1..3}
touch /ftphome/user1/user1file
touch /ftphome/user2/user2file
touch /ftphome/user3/user3file
mkdir /ftphome/user{1..3}/pub
配置文件中:
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphomedir/$USER
##指定用户家目录,$USER是变量不是字符串
user_sub_token=$USER
##$符声明,家目录独立 表示$USER不是一个字符串
配置文件+结果
3.用户配置独立
vim /etc/vsftpd/vsftpd.conf : user_config_dir=/etc/vsftpd/westos
mkdir /etc/vsftpd/westos
vim /etc/vsftpd/westos/user1 用户配置文件 : anon_upload_enable=YES
重启服务 systemctl restart vsftpd
chgrp ftp /ftphome/user{1..3}/pub
chmod 775 /ftphome/user{1..3}/pub
效果测试:分别以三个用户的身份上传文件,只有1用户能成功