设为首页 收藏本站
查看: 898|回复: 0

[经验分享] ubuntu server 10.4下pure-ftpd配置

[复制链接]

尚未签到

发表于 2018-10-15 08:06:00 | 显示全部楼层 |阅读模式
  前言:
  什么是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用本地一账号登录,会 出现如下错误
DSC0000.png

  解决:在/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,把虚拟用户映射到不同的本地用户上,这样就可控制权限了。缺点是要建不同本地组和用户。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-621692-1-1.html 上篇帖子: SUSE Linux Enterprise Server 12 试用体验 下篇帖子: Ubuntu server10.10下安装配置SVN
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表