1、ftp介绍
ftp : file transfer proto
互联中最老牌的文件传输协议
2、vsftpd安装及启用
dnf install vsftpd.x86_64 lftp.x86_64 -y
getenforce #查看selinux状态,若开启则编辑/etc/selinux/config文件,将其中状态改为disabled
firewall-cmd --permanent --add-service=ftp #防火墙允许ftp服务
systemctl enable --now vsftpd #开启ftp服务
firewall-cmd --reload #重置
vim /etc/vsftpd/vsftpd.conf #编辑配置文件,允许匿名用户访问
systemctl restart vsftpd #重置一下
lftp 172.25.254.213 #查看ftp服务是否可用
3、vsftpd基本信息
服务名称:vdftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/selinux/config
默认发布目录 :/var/ftp
报错信息
550 #程序本身拒绝
553 #文件系统权限限制
500 #权限过大
530 #认证失败
4、匿名用户访问控制
lftp 172.25.254.213 #当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.213 -u westos #本地用户访问
登陆控制(编辑配置文件)
anonymous_enable=YES #允许匿名用户登陆
anon_root=/westosdir #更改家目录位/westosdir
anon_upload_enable=YES #允许匿名用户上传
systemctl restart vsftpd
#但注意此时不仅要更改配置文件,还要更改文件所有组和权限
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
put /etc/passwd
anon_mkdir_write_enable=YES #允许匿名用户新建目录
anon_other_write_enable=YES #匿名用户可删除,可重命名
anon_world_readable_only=NO #匿名用户可以下载不能读的文件
systemctl restart vsftpd
lftp 172.25.254.213
get passwd
匿名用户上传文件权限设定
#当设定chown_username之后上传文件权限将不再是用此参数设定
anon_umask=022
chown_uploads=YES
chown_username=lee
chown_upload_mode=0644
#匿名用户上传文件的用户身份设定
#注意,ls能列出东西才算登陆成功
登陆数量控制
#ftp服务能接受的最大数量
max_clients=2
匿名用户上传速率控制
anon_max_rate=102400 #上传速率每秒钟100M左右
5、本地用户的访问
#注意,ls能列出东西才算登陆成功
登陆控制
useradd westos
echo lee | passwd --stdin westos
lftp 172.25.254.213 -u westos
local_enable=YES #允许本地用户登陆
write_enable=YES #允许写
local_umask=077
#上传文件权限控制,指定本地用户上传的默认权限
#用户登陆控制
/etc/vsftpd/ftpusers #永久黑名单,只要在此名单内永久不能登陆
/etc/vsftpd/user_list #临时黑名单,如果只写这个里面为黑名单
#但如果配置文件中,当userlist_deny=NO参数生效,默认用户不能使用ftp登陆只有在user_list中的用户可以登陆(此时user_list变成白名单,所以处user_list里面的用户除外,其余用户皆不可以登陆)
用户家目录控制
local_root=/westosdir #设定本地用户家目录为/westosdir
锁定本地用户到自己的家目录中,使用户不能浏览根目录
chroot_local_user=YES
chmod u-w /home/*
#如果锁定用户到自己家目录中,需要关闭根目录写权限,因为此时有写权限会导致禁止访问
#当不锁定用户到家目录时(用户默认可以浏览根目录),名单功能开启,此名单为黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#当所有用户被锁定到自己的家目录时(用户默认不可以浏览根目录),名单功能开启,此时名单为白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6、虚拟用户访问
建立虚拟用户过程
书写认证文件
vim /etc/vsftpd/virt_users
加密认证文件
db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db #会生成virt_users.db,-T转换,-t type -f 指定转换文件
书写认证策略文件
/etc/pam.d/virt_users
#第一行为账号,验证方式,认证插件,验证对比文件
#第二行为密码,验证方式,认证插件,验证对比文件
书写配置文件
pam_service_name=virt_users #这里等号后面是你在/etc/pam.d/底下手写的规则名称,指定认证策略文件
guest_enable=YES #指定虚拟用户功能开启
guest_username=ftp #指定虚拟用户在ftp服务器上的用户身份
此时你所设置的虚拟用户可访问
虚拟用户家目录的独立设定
local_root=/ftphomedir/$USER #指定用户家目录$USER是变量方式指定
user_sub_token=$USER #声明$USER是变量不是字符串
user_config_dir=/etc/vsftpd/userconfdir #设定所有虚拟用户的配置目录为/etc/vsftpd/userconfdir
mkdir -p /ftphomedir/user{1,2}/pub
chmod 775 /ftphomedir/user1
chgrp ftp /ftphomedir/user1
vim /etc/vsftpd/userconfdir/user1
anon_upload_enable=YES