ubuntu server 10.4下pure-ftpd配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

前言:

什么是FTP,可以阅读"百度百科"http://baike.baidu.com/view/369.htm,在这我引用其中的觉的重要一的点:

FTP的工作方式

FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

下面介绍一个这两种方式的工作原理:

Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是 Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP 服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

在ubuntu中pure-ftpd是什么样

子可以参考:http://wiki.ubuntu.org.cn/Pure-ftpd,引用其中的一段:

Ubuntu/Debian 提供了三个不同的 Pure-FTPd 的 deb 安装包,分别是 pure-ftpd、pure-ftpd-ldap 和 pure- ftpd-mysql,其中 ldap 和 mysql 分别表示 Pure-FTPd 跟 ldap 和 mysql 集成,另外这三个包都依赖于 pure-ftpd-common。如果我们不需要 ldap 和 mysql 的话,选择 pure-ftpd 就可以了。

配置方式

不同于其他的多数守护进程(daemon),Pure-FTPd 的配置比较特别:它不读取任何的配置文件,配置选项都是通过命令行参数来实现的。例如:参数 '-H' 被设计为通过避免 DNS 查询来加快服务器的速度。要启用该特性,我们只需要将其加到命令行中: pure-ftpd -H 。备选的长参数也被支持的,下面是一个等价的命令 pure-ftpd --dontresolve

针对喜欢配置文件的用户,Pure-FTPd 官方给出了一种方案:通过一个封装(wrapper)工具,将配置文件解析并将其转换成命令行参数。首先根据自己的需要编辑配置文件 pure-ftpd.conf,而后通过下面的命令启动 pure-config.pl /etc/pure-ftpd.conf。pure-config.pl 是一个 perl 脚本,它根据配置文件采用合适的命令行选项来调用 pure-ftpd。

在 Ubuntu/Debian 中,开发人员采用了另外的一种 wrapper 方式:它没有采用单一的配置文件,而是在/etc下建立一个pure-ftpd的目录,其下又有 conf、auth、db 这三个目录和一个名为 pureftpd-alias-dir 的文件。每一个配置选项都以一个文件的形式存在于 /etc/pure-ftpd/conf 目录中,而且是以选项为文件名,选项值为文件内容。例如如果想配置AnonymousOnly=yes(只允许匿名用户),则在 /etc/pure-ftpd/conf 中创建一个名为 AnonymousOnly 的文件,里面只有一行内容:yes。

在 Ubuntu 中,我们只关注最后一种配置方式。

 

环境:

1,在一台ubuntu server 10.4 服务器上安装pure-ftpd配置成FTP服务器

2,在客户端上用FileZilla Client登录测试

操作:

1,安装pure-ftpd

#sudo apt-get install pure-ftpd

#sudo netstat –nl

查看21端口是否已开启。

2,在FileZilla Client用本地一账号登录,会 出现如下错误

ftp1-1

解决:在/etc/pure-ftpd/conf下创建DontResolve文件内容为yes,即可解决。这时本地账户已经可以使用FTP服务了。

3,利用虚拟账户的方式管理用户。

(1)手动创建主目录

#sudo mkdir /var/ftp

#sudo mkdir /var/ftp/js

(2)创建组及用户

#sudo groupadd ftpadmins

#sudo groupadd ftpusers

#sudo useradd –g ftpadmins –d /dev/null –s /bin/false ftpadmin

#sudo useradd –g ftpusers –d /dev/null –s /bin/false js

(3)改变相应的访问权限

#sudo chown –R ftpadmin /var/ftp/

#sudo chmod  -R 775 /var/ftp/js

*:为了防止同组中的一个用户删除另一个用户的文件作以下设置

在/etc/pure-ftpd/conf下建KeepAllFiles文件内容为yes #禁止用户删除文件,TrustedGID组中的除外

在/etc/pure-ftpd/conf下建TrustedGID文件内容为2002 #管理员组ftpadmins的GID,允许管理员删除文件,此处的2002是ftpadmins的GID

(4)增加虚拟用户

#sudo pure-pw useradd admin –u ftpadmin –d /var/ftp

#sudo pure-pw useradd  js001 –u js –d /var/ftp/js

这时会在/etc/pure-ftpd/下新增pureftpd.passwd及pureftpd.pdb两个文件

#sudo pure-pw list

#sudo pure-pw show js001

用以上两个命令查看相应用户信息,更多的pure-pw用法可以 man pure-pw查看

(5)使虚拟用户生效

#sudo pure-pw mkdb

(6)使用pureDB验证方式,如果没有以下步骤,虚拟用户是无法登录的,会出现530的错误信息。

#cd /etc/pure-ftpd/auth

#sudo ln –s ../conf/PureDB 60puredb

(7)重启pure-ftpd服务

#sudo /etc/init.d/pure-ftpd restart

总结:pure-ftpd配置完成了,简单的一个FTP搭建起来了。详细配置可以参考http://wiki.ubuntu.org.cn/Pure-ftpd。也可以参考http://www.ubuntu-howto.info/howto/how-to-install-and-configure-pure-ftpd

可是权限问题来了,在pure-ftpd的配置中没有看到严格的权限设置,相关的有:

1,如果你的 pure-ftpd 编译时加入了 pure-uploadscript 支持,这个指令将会使 pure-ftpd 
     发送关于新上传的情况信息到 /var/run/pure-ftpd.upload.pipe,这样 pure-uploadscript 
   就能读然后调用一个脚本去处理新的上传。 
   在/etc/pure-ftpd/conf下建CallUploadScript内容为 yes 就会在/var/run下产生pure-ftpd.upload.pipe,pure-ftpd.upload.lock

这个方法我还没试用。
http://linux.die.net/man/8/pure-uploadscript

http://blog.derjohn.de/space/start/2006-11-14/1

2,KeepAllFiles=yes #禁止用户删除文件,TrustedGID组中的除外

TrustedGID=1001 #管理员组ftpadmins的GID,允许管理员删除文件

ChrootEveryone=yes #把所有用户限制在其homedir下

3,把虚拟用户映射到不同的本地用户上,这样就可控制权限了。缺点是要建不同本地组和用户。


本文转自xcjgutong 51CTO博客,原文链接:http://blog.51cto.com/xuchengji/372181


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
|
16天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
37 2
|
1月前
|
网络协议 Ubuntu 网络安全
|
1月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
82 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
1月前
|
资源调度
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
40 2
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
321 3
|
2月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
102 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
2月前
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
181 1
|
1月前
|
Ubuntu 网络协议 Linux
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
113 0
|
2月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
283 3
下一篇
无影云桌面