1:实验环境
设定服务端主机,关闭selinux
vim /etc/sysconfig/selinux 设定为disabled
然后reboot
systemctl enable --now vsftpd ##启动vsftpd
firewall-cmd --permanent --add-service=ftp ## 设置允许权限
firewall-cmd --reload ## 加载
安装lftp #ftp协议文本浏览器
dnf install vsftpd -y ##服务端
dnf install lftp -y ##客户端
2:ftp介绍
ftp:file transfer proto 互联中最老牌的文件传输协议
3:vsftpd基本信息
服务名称: vsftpd.service
配置目录: /etc/vsftpd
主配置文件: /etc/vsftpd/vsftpd.conf
默认发布目录: /var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
4:匿名用户访问控制
lftp 172.25.254.200 ##当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.200 -u westos ##本地用户访问
①家目录控制: anon_root=/westos
mkdir /westos
vim /etc/vsftpd/vsftpd.conf 写入anon_root=/westos 家目录控制
systemctl restart vsftpd
在/westos建立文件;匿名用户可以在200主机上访问
如果出现500报错说明给的权限过大
②上传控制: anon_upload_enable=YES|NO
vim /etc/vsftpd/vsftpd.conf 写入
用于用户接入后默认在/var/ftp目录下,要在pub目录中上传文件需要设定ftp用户组对于pub目录的权限
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
设定之后可以以匿名用户的方式上传文件passwd
③目录建立控制:anon_mkdir_write_enable=YES|NO
vim /etc/vsftpd/vsftpd.conf 写入anon_mkdir_write_enable=YES
④下载控制:anon_world_readable_only=NO ##匿名用户可以下载不能读的文件
vim /etc/vsftpd/vsftpd.conf 写入anon_world_readable_only=NO
⑤删除重命令控制:anon_other_write_enable=YES|NO
vim /etc/vsftpd/vsftpd.conf 写入anon_other_write_enable=YES
⑥匿名用户上传文件权限设定
anon_umask=xxx
anon_umask=022 ##当设定chown_username之后上传文权限将不是用此参数设定
⑦匿名用户上传文件的用户身份设定
vim /etc/vsftpd/vsftpd.conf 写入
chown_upload=YES
chown_username=lee
chown_upload_mode=0644
指定用户的id ,设定的文件权限为0644
⑧登陆数量控制: max_clients=2 只能登录两个
⑨上传速率控制:anon_max_rate=102400
vim /etc/vsftpd/vsftpd.conf 写入anon_max_rate=102400
限制后的速率约为100K/s
5:本地用户访问
①登陆控制
useradd ly
useradd lee
vim /etc/vsftpd/vsftpd.conf 写入local_enable=NO 设定本地用户不能登录
用户lee不能登录
②家目录控制:local_root=/westos #设定家目录为/westos
ftp 172.25.254.200 -u lee 会进入到/westos目录下
③上传文件权限控制:
local_umask=077
anon_umask=022
设定后文件权限为600
④用户登陆控制
/etc/vsftpd/ftpusers ##永久黑
写入的用户lee则不能登录
/etc/vsftpd/user_list ##默认黑
写入的用户lee暂时不能登录
⑤用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list位白名单
#不在名单中的用户不能登陆ftp
systemctl restart vsftpd 写入用户westos
仅名单内的用户可以登录
⑥锁定用户到自己的家目录中
chmod u-w /home/*
chroot_local_user=YES
用户westos只能在自己的家目录中
⑦锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list 写入用户lee
⑧锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list 写入用户lee 只有写入的用户lee被锁住
6:虚拟用户访问
1)建立虚拟用户过程
①vim /etc/vsftpd/ftp_auth_file #建立认证文件模板
vim /etc/vsftpd/users 写入用户以及密码
②db_load -T -t hash -f user user.db ##加密认证文件
-T 转换 -t type -f 指定 转换文件
③vim /etc/pam.d/westos
vim /etc/pam.d/authfile 写入认证策略文件
pam_userdb.so 为认证插件 db=/etc/vsftpd/users 为加密指向
④vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
pam_service_name=westos ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
################虚拟用户家目录的独立设定#################
mkdir -p /ftpuserdir/user{1..3}
touch /ftpuserdir/user1/userfile1
touch /ftpuserdir/user2/userfile2
touch /ftpuserdir/user3/userfile3
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
#########用户配置独立##############
user_config_dir=/etc/vsftpd/userconf #在此目录中与用户名称相同的文件为用户配置文件
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
mkdir /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1
写入anon_upload_enable=YES
vim /etc/vsftpd/vsftpd.conf 注释掉anon_upload_enable=YES
systemctl restart vsftpd
设定完成后user1用户可以上传文件
user1和user3不行