当前位置: 首页 > news >正文

FTP服务

部署vsftpd服务

实验环境

基于Linux CentOS7.9部署vsftpd服务
服务器防火墙和SElinux均为关闭状态
外部访问使用filezilla软件

实验步骤

1.安装vsftp服务以及相关工具包和依赖

yum-yinstallvsftpd* pam* db4*

vsftpd: ftp软件
pam: 认证模块
db4: 支持文件数据库
2.vsftpd配置文件说明
/etc/vsftpd/vsftpd.conf
vsftpd的核心配置文件

/etc/vsftpd/ftpusers
用于指定哪些用户不能访问FTP服务器

/etc/vsftpd/user_list
指定允许使用vsftpd的用户列表文件

/etc/vsftpd/vsftpd_conf_migrate_sh
是vsftpd操作的一些变量和设置脚本

/etc/ftp/
默认情况下匿名用户的根目录


3.配置解释

4.备份配置文件

cp-av/etc/vsftpd/vsftpd.conf /opt/vsftpd.conf.bak202605121412


注:尽量不要备份在原目录下,所有的.conf文件都有可能被vsftpd服务读取,导致服务报错。

5.启动服务并设为开机自启

【匿名用户】

1.提前备份好配置文件原文件后开始修改配置文件内容

原配置文件内容太多太复杂,全部删掉后输入以下内容

```bash anonymous_enable=YES anon_root=/var/ftp listen=YES listen_ipv6=NO #匿名用户权限 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES write_enable=YES #安全限制 #创建文件权限为750 (777-027=750) anon_umask=027 chroot_local_user=YES allow_writeable_chroot=YES #隐藏真实用户信息 #hide_ids=YES #上传目录限制 anon_world_readable_only=NO anon_world_readable_only=NO no_anon_password=YES #被动模式设置 pasv_enable=YES pasv_min_port=64000 pasv_max_port=64321 #替换为服务器公网IP pasv_address=your_server_ip #日志记录 xferlog_enable=YES xferlog_std_format=NO log_ftp_protocol=YES vsftpd_log_file=/var/log/vsftpd.log #连接限制 max_clients=50 max_per_ip=5 local_max_rate=1024000 anon_max_rate=512000 #超时设置 idle_session_timeout=300 data_connection_timeout=60 #安全增强 session_support=NO seccomp_sandbox=NO #require_shell=/sbin/nologin;
![image_3_1](https://i-blog.csdnimg.cn/img_convert/d04c28714a11041fc327957e09cbeea0.png) ### 2.配置完成之后,给匿名用户设置文件目录并给相应的权限 ```bash mkdir -p /var/ftp/upload(设置一个目录) chown ftp:ftp /var/ftp/upload(将新建目录用户和组都改为ftp) chmod 755 /var/ftp/upload(这个文件的权限是增删)

3.配置完成后进行重新启动服务

4.进入FTP的软件中进行访问,选择匿名用户进行登录

这里以filezilla演示

5.测试权限是否正确

5.1点开我们刚才所新建的目录upload,创建两个文件和目录


创建成功
删除一个文件和目录

删除成功
以上说明权限正确

5.2进入自带的pub目录

创建目录失败

使用root用户创建一个目录和一个文件

删除失败

可以成功下载

6.返回客户端查看匿名用户创建的文件和目录

【本地用户】

1.修改配置文件

anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESchroot_local_user=YESallow_writeable_chroot=YESuser_config_dir=/etc/vsftpd/vsftpd_user_conf

2.创建用户配置目录,要和配置文件中的目录保持一致

mkdir-pv/etc/vsftpd/vsftpd_user_conf

3.配置本地用户在刚才创建的目录中

4.创建用户fanzc,并加入FTP组中,设置密码为“1”

useradd-gftpfanzcecho1|passwd--stdinfanzcidfanzc

5.创建刚才文件中的目录,并设置权限

mkdir-pv/data/fanzc

chown-Rfanzc /data/fanzcls-ld/data/fanzcchmod755-R/data/fanzcls-ld/data/fanzc

6.配置完成后重启服务

systemctl restart vsftpd

7.进行测试

7.1在ftp客户端中输入刚才所创建的用户名和密码


创建目录成功

删除目录成功

回到服务器查看b目录是否存在

【虚拟用户】

1.创建本地系统用户和共享目录

创建一个无法登录系统的本地用户,并设置共享目录权限:

useradd-d/var/ftp/shared-s/sbin/nologin virtualftpmkdir-p/var/ftp/sharedchown-Rvirtualftp:virtualftp /var/ftp/sharedchmod755/var/ftp/shared

2.创建虚拟用户数据库

创建认证文件

cat>/etc/vsftpd/vusers.txt<<EOF teacher teacher123 student student123 EOF

3生成数据库文件:

db_load-T-thash-f/etc/vsftpd/vusers.txt /etc/vsftpd/vusers.dbchmod600/etc/vsftpd/vusers.dbrm-f/etc/vsftpd/vusers.txt

4.配置pam认证文件

cat>/etc/pam.d/vsftpd_virtual<<EOF auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers EOF

5.修改配置文件

cat>/etc/vsftpd/vsftpd.conf<<EOF anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES listen_ipv6=NO pam_service_name=vsftpd_virtual userlist_enable=YES #虚拟用户配置 guest_enable=YES guest_username=virtualftp virtual_use_local_privs=NO user_config_dir=/etc/vsftpd/user_conf allow_writeable_chroot=YES hide_ids=YES hide_ids=YES EOF

6.创建用户配置文件目录和配置文件

mkdir-p/etc/vsftpd/user_conf

创建老师用户的配置文件(/etc/vsftpd/user_conf/teacher):

cat>/etc/vsftpd/user_conf/teacher<<EOF anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES EOF


创建学生用户的配置文件** (/etc/vsftpd/user_conf/student):

cat>/etc/vsftpd/user_conf/student<<EOF anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=NO EOF

设置 SELinux 和防火墙然后启动服务

工作环境中如下配置,学习实验环境直接关闭防火墙和selinux

设置 SELinux

setsebool-Pftp_home_dir on setsebool-Pallow_ftpd_full_access on semanage fcontext-a-tpublic_content_rw_t"/var/ftp/shared(/.*)?"restorecon-Rv/var/ftp/shared

配置防火墙

firewall-cmd--permanent--add-service=ftp firewall-cmd--reloadsystemctl start vsftpd systemctlenablevsftpd

登录ftp

教师权限可以上传下载,新建和删除文件目录
学生权限可以上传下载,不可以新建和删除文件目录

http://www.jsqmd.com/news/806050/

相关文章:

  • 2026年AI大模型API聚合平台技术横评:五大可靠选择与工程化选型参考
  • 工业HMI系统核心技术解析与TI解决方案实践
  • AI Agent 如何重构 App 稳定性治理流程
  • 对比了8款测试管理平台,最适合中小团队的居然是它
  • 从零构建3D虚拟人对话应用:BabylonJS与LLM的Web端整合实践
  • 嵌入式AI实战:VR/AR与认知计算融合的技术架构与工程实现
  • 2026电摩高端灯具技术分享:行业电动两轮高端灯具/顶级灯具设计研发/高端两轮灯具/高端改装灯具/高端灯具研发首家/选择指南 - 优质品牌商家
  • 可穿戴显微镜:软硬协同攻克生物组织散射成像难题
  • 2026年知名的转向器总成厂家综合对比分析 - 行业平台推荐
  • ComfyUI-Manager 依赖管理架构深度解析:智能包管理系统的技术演进与实践
  • ngx_pfree
  • 华为会议转任务AI精准识别整理,省事更清晰,轻松搞定工作落地
  • 全栈算力筑底,智联千行百业——视程空间六大产品系列,定义边缘智能新生态
  • 深度神经网络在辐射环境下的容错设计与实现
  • 基于Web Audio与Three.js的VR音乐可视化系统开发实践
  • 2026年Q2全国自助云打印专业服务商排行盘点:社区自助打印机/身份证复印一体机/远程云打印/便民自助打印机/共享云打印机/选择指南 - 优质品牌商家
  • NOMIK:基于AI与图数据库的代码知识图谱构建与应用
  • Power PMAC玩转EtherCAT:手把手教你用PDO配置Elmo驱动器循环力矩模式(CST)
  • 现代柴油机清洁化技术:从高压共轨到SCR后处理的工程实践
  • 观察使用Taotoken Token Plan套餐后模型API成本的可控变化
  • PXI/PXIe模块化测试系统:从总线演进到系统集成的实战指南
  • M2M互操作性:从标准到实践,构建物联网统一服务层
  • Git项目太大无法一次性拉取--分支过多版
  • 国产AI模型平台突围战:从“大厂光环“到“落地为王“
  • 2026年5月新消息:防撞墙生产厂商综合实力解析,鼎跃顺鑫防撞墙专家为何脱颖而出? - 2026年企业推荐榜
  • 分布式爬虫凭证管理中间件:claw-gatekeeper 架构设计与实战
  • Harness:驯服AI这匹“野马”,为什么它成了2026年最火的技术话题?
  • API淘宝关键词搜索:运用场所、使用方式及获客逻辑
  • 2026年Q2餐厅设计全流程解析及务实对接指南:饭店设计/中式餐厅设计/中餐厅设计/特色餐厅设计/餐厅装修/餐饮全案设计/选择指南 - 优质品牌商家
  • AMD Ryzen处理器深度调试指南:SMU Debug Tool架构揭秘与实战优化方案