LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1000|回复: 2

[原创]推荐 MySQL+PureFTPD详细安装过程

[复制链接]
发表于 2005-9-10 00:17:26 | 显示全部楼层 |阅读模式

  1. Pureftpd是什么?不用我介绍了吧,听说是目前为止最安全的一个ftp软件 -_-!不知道是不是

  2. 那天参考shadow朋友的 mysql+pureftpd安装方法,他本人也希望有人可以帮他更完善他的文档,昨天我在我的RH9.0系统上测试通过了,今天在我的FreeBSD上也测试通过了。现结合shadow朋友的文档,给出我全部的安装过程:
  3. 由于FreeBSD安装在我的vmware机里比较方便切换,以便一步步写文档,以保证尽可能做到准确,所以我以在 FreeBSD系统下安装。Redhat/Fedora上安装方式大同小异。
  4. 准备工作:
  5. 1、FreeBSD系统和,我采用最小化安装(你完全安装也可:)),已经含有gcc及常用的头文件及库函数
  6. 2、MySQL包,如果是已经安装好的朋友,跳过第一步,如果下载的是源码,就跟我一起去第一步安装
  7. 3、Pure-ftpd包,我选择源码,建议用源码,这样可以有很多定制的选择。
  8. 假设上述二个包MySQL和Pure-ftpd已经放到了 /root/down目录,我分别用的是pure-ftpd-1.0.20.tar.gz和mysql-4.0.26.tar.gz
  9. 以 freebsd# 开头的表示 shell提示
  10. 好了,开始吧
  11. 第一步:安装MySQL,由于自己表达能力不够,大家跟着我做命令就行了
  12. freebsd#  cd /root/down                 #进入下载有2个包的目录
  13. freebsd#  tar zxvf mysql-4.0.26.tar.gz   
  14. freebsd#  mv mysql-4.0.26 mysqlsrc
  15. freebsd#  cd mysqlsrc
  16. freebsd#  ./configure  --prefix=/usr/local/mysql
  17. freebsd#  make
  18. freebsd#  make install                        #一般情况下,是不会出什么错误的
  19. 编译安装完成后,得对MySQL进行些配置,才能启动,不然是启动不了的哦
  20. freebsd#  pw groupadd mysql
  21. freebsd#  pw useradd  mysql -g mysql    #增加用来管理MySQL Server的帐户,你也可以直接用root
  22. freebsd#  chgrp -R /usr/local/mysql     #注意,这里我做了个不安全的做法,只是为了配置方便,实际时请注                意,并不需要开这么大的权限
  23. freebsd#  cd /usr/local/mysql/bin
  24. freebsd#  mysql_install_db --user=mysql       #安装数据库文件(mysql和test数据库)
  25. freebsd#  mysqld_safe --user=mysql            #好了,启动服务器吧,,,
  26. 我们来做个测试
  27. 我们要运行mysql client,初始时是默认用户为空,密码也为空,危 哦,我们要改了,最简单的方法是利用mysqladmin,如我们要把 root密码改成123456,可以这样做
  28. 方法1:
  29. freebsd#  ./mysqladmin -uroot password 123456        #注意这里的password是关键字,不是什么密码,123456不用引号,然后就可以连接了
  30. freebsd#  ./mysql -uroot -p123456
  31. mysql>                                    #进入后,提示符为 mysql>
  32. 方法2(直接进系统修改root密码)
  33. ./mysql                                 #初使时,我们可以用空用户连接进去,权限也是最大的哦,等下把他删了,不然非常危险
  34. mysql> user mysql;
  35. mysql> update user set password=PASSWORD('123456') where user='root';  #这行是把root的密码改为123456,注意了,在这里出现的2个password,前边的一个password是表中的列,而PASSWORD是个函数,你一定要加哦,不然,你登录不了(PASSWORD也可以用小写,我只是为了区分).
  36. mysql> delete from user where user='';            #删除空用户,强烈建议。
  37. mysql> flush privileges;                    #刷新权限表,以便可以使更改立即生效
  38. mysql> quit                                       #测试正常了,没问题了


  39. 第二步:我们来编译安装Pure-ftpd,老样子,来用命令
  40. freebsd#  cd /root/down
  41. freebsd#  tar zxvf pure-ftpd-1.0.20.tar.gz
  42. freebsd#  mv pure-ftpd-1.0.20  pure-ftpdsrc
  43. freebsd#  cd pure-ftpdsrc            
  44. #下边的这条命令,很大一部分可能会出错,这是很多玩这个配置下不去的因原,关键....哦
  45. freebsd#  ./configure --with-mysql=/usr/local/mysql
  46. ...
  47. ...
  48. ...
  49. ERROR:configure error:Your MySQL client libraries aren't properly installed.  #出这个错了
  50. 要怎么解决呢,后下边,用命令
  51. freebsd#  cp /usr/local/mysql/lib/mysql/*.*   /usr/lib    #把xxx复制到 /usr/lib,这个大家都会理解了
  52. 然后,直接这样编译
  53. freebsd#  ./configure --with-mysql                      #这个命令这次就能正确了
  54. make;make install                             #编译、安装
  55. ...
  56. ...
  57. ...Enjoy!

  58. OK,现在,只差小步步就可以了
  59. 对于 pure-ftpd来说,如果用MySQL认证,那么最重要的2个文件分别是 pure-ftpd.conf 和 pureftpd-mysql.conf,用源码安装,这2个文件是在安装的目标上找不到的。他在我们的源码里,只是个样本
  60. 我们把他们2个复制到 /etc 目录下,你也可复制到别处,但是在配置时又有所变动哦
  61. freebsd#  cp /root/down/pure-ftpdsrc/pureftpd-mysql.conf  /etc
  62. freebsd#  cp /root/down/pure-ftpdsrc/configuration-file/pure-ftpd.conf  /etc    #完整的目录我已经给你了,不用解释了吧


  63. 第三步:修改基本的配置文件
  64. 接下来,我们来对这2个配置文件做个简单配置

  65. 1、修改 /etc/pure-ftpd.conf
  66. freebsd#  vi /etc/pure-ftpd.conf
  67.                 #这里列出一部分,重要的
  68. /etc/pure-ftpd.conf
  69. ChrootEveryone            yes         # 锁定用户在主目录中,你不会希望,a1用户能进到a2目录里吧
  70. CreateHomeDir       yes                # 自动建立用户主目录,根据数据里的记录,自动建立用户目录
  71. MaxClientsNumber   10                # 最大可连接的用户数,自己决定吧
  72. MaxClientsPerIP            2        # 来自一个IP的最大连接数,知道有的站点,为什么只能一个线程了吧
  73. MaxIdleTime                # 客户端连接后的最大闲置时间
  74. MySQLConfigFile          /etc/pureftpd-mysql.conf   # 关键部分,你整合mysql就靠它了
  75. ProhibitDotFilesWrite  yes        # 禁止修改隐藏文件
  76. ProhibitDotFilesRead        yes # 禁止读取隐藏文件,这2项建议用yes,不然你不小心把某个.开头的(隐藏文件)弄没了,或改了,可能你的用户会有问题哦
  77. 根据自己的要求来设定,但注意一定要把注掉的MySQLConfigFile打开,还有注掉的CreateHomeDir打开。

  78. 2、修改/etc/pureftpd-mysql.conf
  79. freebsd#  vi /etc/pureftpd-mysql.conf
  80.                 #这里也是列出一部分,重要的
  81. # Optional : MySQL server name or IP. Don't define this for unix sockets.
  82. MYSQLServer     localhost     #SQL运行在本机,当然是 localhost了
  83. # Optional : MySQL port. Don't define this if a local unix socket is used.
  84. MYSQLPort       3306          #原来是注销掉的我们打开它,其实不打开也行,系统默认就OK
  85. # Mandatory : user to bind the server as.
  86. MYSQLUser       root             #这里的 MYSQLUser和MYSQLPassword是 pureftpd查询帐号数据库用的,我就用root得了,你也可指定,但是必须在 mysql.user表里有指定
  87. MYSQLPassword   123456           
  88. MYSQLDatabase    pureftpd       #这个是我们要在MySQL里建立的一个认证数据库
  89. 配置完成。

  90. 最后一步,建立ftp用户目录,在数据库里
  91. freebsd#  pw useradd ftpusers -u 10000             #建立一个ftpusers帐户,uid为10000,系统默认为这个用户建立主属群组 freebsd#  ftpusers, gid也是 10000,这里的 10000要记住哦,=下要用到
  92. freebsd#  mkdir /ftpdir
  93. freebsd#  chown -R  ftpusers:ftpusers /ftpdir    #把 /ftpdir目录及同以下的目录,设置所属用户和群组,这里的语法和linux下不一样,我晕了半天才弄对,linux下是这样的  chown -R ftpusers.ftpusers  /ftpdir
  94. 然后,进mysql做最重要的一件事,建立认证数据库,加个用户试试
  95. mysql -uroot -p123456
  96. mysql> create database pureftpd           #这里的数据名pureftpd和pureftpd-mysql.conf里的对应
  97. mysql> use pureftpd
  98. mysql> CREATE TABLE users (
  99. User varchar(16) NOT NULL default '',
  100. Password varchar(64) NOT NULL default '',
  101. Uid varchar(11) NOT NULL default '-1',
  102. Gid varchar(11) NOT NULL default '-1',
  103. Dir varchar(128) NOT NULL default '',
  104. ULBandwidth smallint(5) NOT NULL default '0',
  105. DLBandwidth smallint(5) NOT NULL default '0',
  106. comment tinytext NOT NULL,
  107. ipaccess varchar(15) NOT NULL default '*',
  108. QuotaSize smallint(5) NOT NULL default '0',
  109. QuotaFiles int(11) NOT NULL default 0,
  110. PRIMARY KEY (User),
  111. UNIQUE KEY User (User)
  112. ) TYPE=MyISAM;                          #建立认证表,对于简单的测试,可以不要ULBandwidth及以下的字段
  113. mysql> insert users (user,password,uid,gid,dir) values ('ftptest','ftptestpw',10000,10000,'/ftpdir/ftptest')
  114. #这里是在 pureftpd数据库里插入一个用户名为 ftptest,密码为 ftptestpw,gid和uid都为10000,家目录为 /ftpdir/ftptest,的帐号,千万要注意的是,这里的 password字段不能用 password()函数,我以前就是用了这个函数,以至于不能认证,这里的gid和uid是和 ftpusers是一样的
  115. mysql>quit
  116. 好了,完全OK。我们来测试下

  117. 我们得要把 pureftp运行起来再说,我们可以利用 /root/down/pure-ftpdsrc/configuration-file/pure-config.pl这个脚本来控制,注意,这是用perl语言写的。如果没有安装perl就安装一个吧
  118. freebsd#  chmod u+x /root/down/pure-ftpdsrc/configuration-file/pure-config.pl
  119. freebsd#  cp /root/down/pure-ftpdsrc/configuration-file/pure-config.pl  /etc   #放这里好找
  120. /etc/pure-config.pl  /etc/pure-ftpd.conf               #运行pureftpd服务器,看到如果下信息,就说明成功了
  121. Running: /usr/local/pure-ftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fnone -H -115 -l mysql:/etc/pureftpd-mysql.conf -lunix -L2000:8 -m4 -s -U133:022 -u100 -j -k99 -Z

  122. freebsd#  ftp localhost
  123. Connected to 127.0.0.1..
  124. 220---------- Welcome to Pure-FTPd ----------
  125. 220-You are user number 2 of 50 allowed.
  126. 220-Local time is now 23:59. Server port: 21.
  127. 220-IPv6 connections are also welcome on this server.
  128. 220 You will be disconnected after 15 minutes of inactivity.
  129. User (192.168.40.100:(none)): ftptest                      #输入数据库里插入的帐号
  130. 331 User ftptest OK. Password required
  131. Password:                         #密码 testpw
  132. 230-User ftptest has group access to:  ftpusers
  133. 230 OK. Current restricted directory is /
  134. ftp>
  135. ftp>quit
  136. 221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
  137. 221 Logout.

  138. freebsd#                                             #还有不懂的吗????
  139. 第一次这么认真,如果还是有错,请给我指出,谢谢

复制代码
 楼主| 发表于 2005-9-10 00:19:22 | 显示全部楼层
虽然能认证MySQL用户了,不过怎样实现匿名我还没搞清楚,希望高人指点。谢谢
回复 支持 反对

使用道具 举报

发表于 2005-9-10 10:29:00 | 显示全部楼层
设置
NoAnonymous       no
AnonymousCanCreateDirs    yes
AnonymousCantUpload       no
另外ChrootEveryone可以和TrustedGID一起使用,使得某组中用户不受chroot限制。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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