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

linux上部署ftp服务

今天同事让帮忙部署一个ftp服务,以前折腾过几次,不过总会有奇奇怪怪的问题.今天的 话结合chatglm4,整理了一下部署.

在CentOS 7上部署FTP服务,可以使用VSFTP(Very Secure FTP Daemon),这是一个安全、快速的FTP服务器。以下是部署FTP服务的步骤:

  1. 安装VSFTP:
sudo yum install vsftpd
  1. 启动VSFTP服务并设置为开机启动:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
  1. 创建FTP用户tj,并设置密码为123456。同时,为了安全起见,我们会创建一个没有登录shell权限的用户:
sudo useradd -d /data -m tj
echo "123456" | sudo passwd --stdin tj
  1. 配置VSFTP以使用本地用户:
    编辑VSFTP配置文件/etc/vsftpd/vsftpd.conf,确保以下参数设置正确:
sudo nano /etc/vsftpd/vsftpd.conf

找到并修改或添加以下参数:

local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

确保anonymous_enable=YES被注释掉,以禁用匿名登录。

这里补充一个过程中遇到的问题,修改为配置,重启ftp服务失败了,提示:vsftp 500 oops un recognize variable in config file cp_wrappers. 这里根据提示修改了配置文件,注释掉了cp_wrappers项目,就启动成功了.

  1. 配置用户tj的FTP根目录为/data
    创建一个文件/etc/vsftpd/user_conf/tj,并设置FTP用户tj的配置:
sudo mkdir -p /etc/vsftpd/user_conf
sudo nano /etc/vsftpd/user_conf/tj

添加以下内容:

local_root=/data
write_enable=YES
  1. 设置正确的权限:
    确保FTP根目录/data及其父目录对tj用户和组可写,并设置正确的所有者和组:
sudo chown tj:tj /data
sudo chmod 750 /data
  1. 重启VSFTP服务以应用更改:
sudo systemctl restart vsftpd

如果FTP客户端位于防火墙或路由器后面,请确保相应的端口(默认为21号端口)已正确转发。

注意: 请根据实际情况调整防火墙设置,以确保FTP服务能够正常访问。在生产环境中,出于安全考虑,可能还需要进一步配置VSFTP,例如限制IP地址、使用SSL/TLS加密等。

相关文章:

  • Python:批量url链接保存为PDF
  • Flink 1.18.1的基本使用
  • 全面理解jvm
  • 板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 来自【汤米尼克的JAVAEE全套教程专栏】
  • 网络异常案例六_IP冲突
  • 【C语言】三子棋游戏实现代码
  • Java赋能:大学生成绩量化新篇章
  • 【机器学习】AAAI 会议论文聚类分析
  • Antd+React+react-resizable实现表格拖拽功能
  • 通过docker-compose部署NGINX服务,并使该服务开机自启
  • DQN的理论研究回顾
  • nvm安装node后,npm无效
  • vue - 指令(一)
  • 在 CentOS 7上使用 Apache 和 mod_wsgi 部署 Django 应用的方法
  • ‘javax.sql.DataSource‘ that could not be found的问题
  • JS 中的深拷贝与浅拷贝
  • 【刷算法】求1+2+3+...+n
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android优雅地处理按钮重复点击
  • ES6 ...操作符
  • java概述
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • laravel 用artisan创建自己的模板
  • Making An Indicator With Pure CSS
  • Mithril.js 入门介绍
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SAP云平台里Global Account和Sub Account的关系
  • vue数据传递--我有特殊的实现技巧
  • 漂亮刷新控件-iOS
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何进阶一名有竞争力的程序员?
  • 设计模式 开闭原则
  • 思否第一天
  • 译有关态射的一切
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Semaphore
  • 阿里云重庆大学大数据训练营落地分享
  • 容器镜像
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #单片机(TB6600驱动42步进电机)
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (zhuan) 一些RL的文献(及笔记)
  • (ZT)出版业改革:该死的死,该生的生
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (数据结构)顺序表的定义
  • (原)Matlab的svmtrain和svmclassify
  • (转)程序员疫苗:代码注入
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core引入性能分析引导优化
  • .NET Core中Emit的使用
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖