实验环境
准备一台主机,配置好软件仓库与网络
1.Vsftpd的安装及启用
ftp:file transfer proto
文本传输协议
互联网中最老牌的文件传输协议
dnf install vsftpd -y
#安装软件
dnf install lftp -y
#安装浏览器
systemctl enable --now vsftpd
#开启服务
systemctl disable --now firewalld
#关闭火墙
匿名访问:
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
#重启服务
测试安装发布:
lftp 192.168.13.200
必须能列出资源才算访问成功,使用完成后输入exit退出lftp
2.客户端登录命令lftp的使用方法
lftp ip
#进入匿名用户访问模式
quit退出
lftp ip -u username
put file
#上传文件
get file
#下载文件,下载文件到当前主机目录里
默认情况下匿名用户登录无法上传文件
4.匿名用户登录控制及默认发布目录的控制及上传功能的实现
vsftpd基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限控制
500 ##权限过大
530 ##认证失败
实验过程中一定要保证selinux处于关闭状态
登陆控制
anonymous_enable=YES|NO
家目录控制
anon_root=/westos
默认家目录为/var/ftp/
还原设置注释掉anon_root=/westos即可
上传控制
anon_upload_enable=YES|NO
systemctl restart vsftp
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
#修改权限
目录建立控制
anon_mkdir_write_enable=YES|NO
systemctl restart vsftpd
下载控制
anon_world_readable_only=NO
#匿名用户可以下载不能读的文件
删除命令控制
man 5 vsftpd.conf
anon_other_write_enable=YES
匿名用户上传文件权限设定
anon_umask=022
#当设定chown_username之后上传文件权限将不是用此参数设定
匿名用户上传文件的用户身份设定
chown_upload=YES
#打开功能
chown_username=westos
#设定身份为用户westos
chown_upload_mode=0644
#指定上传权限0644
登陆数量控制:
max_clients=2
#同时承载的用户数量不超过2个
上传速率控制:
anon_max_rate=102400
建立一个较大文件
dd if=/dev/zero of=/mnt/bigfile bs=1M count=500
进行限速:
5.本地用户登陆控制
登陆控制
lftp 192.168.13.200 -u westos
local_enable=NO|YES
#控制本地用户是否能登录
家目录控制
local_root=/westos
写权限控制
write_enable=NO|YES
默认情况开启
上传文件权限控制
local_umask=077
systemctl restart vsftpd
用户登录控制
/etc/vsftpd/ftpusers
##永久黑名单,在此名单中出现的用户被永久禁止登录ftp
/etc/vsftpd/user_list
##临时黑名单,当设定相应参数后可以变成白名单
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
锁定用户到自己的家目录中:
chmod u-w /home/*
chroot_local_user=YES
锁定用户到自己家目录中的白名单:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#当chroot_local_user=YES,此名单为白名单
#当chroot_local_user=NO,此名单为黑名单
锁定用户到自己家目录中的黑名单:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6. 为ftp设定虚拟账号
建立虚拟用户过程:
1)vim /etc/vsftpd/westos
#建立认证文件模板
2)db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db
#加密认证文件
#-T 转换
#-t type
#-f 指定转换文件
3)vim /etc/pam.d/westos
一行用户一行密码
4)vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
虚拟用户只被ftp承认,安全性高
虚拟用户家目录的独立设定
mkdir -p /ftphomedir/{user1,user2}/pub
touch /ftphomedir/user1/user1file
touch /ftphomedir/user2/user2file
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphomedir/$USER
user_sub_token=$USER
systemctl restart vsftpd
用户配置独立
chmod 775 /ftphomedir/user{1,2}/pub
chgrp ftp /ftphomedir/user{1,2}/pub
让user1独立有上传权限