PureFtp的安装与配置


PureFTPd由Troll-FTPd发展而来,Troll-FTPd是Arnt Gulbrandsen于1995年到1999年在Trolltech工作时所作。Gulbrandsen停止维护Troll-FTPd项目后,Frank Denis于2001年开始维护并将其改名为PureFTPd,目前的开发维护者是由Denis领导的团队。


pureftpd的后台实现就需要依赖于lamp环境,首先HTTP服务会在监听端口监听ftp协议的服务从而打开一个pureaftpadmin的管理页面(基于php),管理页面会调出后台的数据库服务,这是后台管理的共作模式,在前台会直接以ftp协议来访问,然后在接受到ftp请求后会启动pureftpd服务,共同点是前后台都要访问数据库,访问数据库的接口文件叫pureftp-mysql,数据库中账号其实是映射到本地用户上的(所以要针对本地账号设置权限)



PureFtp的安装与配置的具体步骤:(后台服务器管理)


[root@bogon ~]# cd ./pureftpd/

[root@bogon pureftpd]# ll

total 10780

-rw-r--r--. 1 root root    29148 Feb 15 22:06 PureAdmin-0.3.tar.gz

-rw-r--r--. 1 root root   578781 Feb 15 22:06 pure-ftpd-1.0.36.tar.gz

-rw-r--r--. 1 root root     4718 Feb 15 22:06 pureftpd-mysql.conf

-rw-r--r--. 1 root root     2105 Feb 15 22:06 pureftp.sql

所要用到的有关压缩包和文件

# wget http://www.yiyou.org/docs/PureAdmin_03_php/pureftp.sql

# wget http://www.yiyou.org/docs/PureAdmin_03_php/PureAdmin-0.3.tar.gz


因为pureftp要用到后台的数据库,所以就要完成与数据库的连接和进行数据库的有关配置,为了简化配置步骤,我们将所要用到的有关命令,写入到一个文件中来完成一次性导入。而在实际操作中会发现这个文件有一些错误及需要改正的地方,具体操作如下所示


说明:

在数据库5.5之前的MySQL数据库使用inodb引擎,而在5.5之后的数据库引擎中使用的是MYISAM,所以如果是使用5.5之前的版本或5.6的源码包安装,需改动pureftp.sql中的如下字段,如果类型还是不通过就用手工 的方法,输入那些创建指令


wKioL1MBhmnwtvo3AAAy4c7WlUs054.jpg


wKiom1MBgNGDfGZDAAAP9ydBo2U587.jpg

插入到数据库(ftpuser)表(admin)中一行名为“admin”(指后台管理员的账号表)的字段,并对表中的值values进行MD5加密,此为上步操作的含义


另外在导入时还发现这个文件存在一个不足的地方,即如下所示的红线部分应该有一个空格,但是没有,所以要手工加入空格。

pureftp.sql该文件还指明了在数据库中创建了一个名为ftpusers的数据库,在user库中创建可一个“ftp”用户,密码为tmppasswd,如下图:

wKioL1MBgKyh2GC3AABCOT1pUOs575.jpg



[root@bogon ~]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install httpd mysql-server mysql php php-gd php-mysql pam-devel mysql-devel

[root@bogon ~]# service mysqld start

Starting mysqld:                                           [  OK  ] #初始化操作会慢一点

[root@bogon ~]# chkconfig mysqld on

[root@bogon ~]# service httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

                                                          [  OK  ]

(该处可以修改配置文件的主机名字段,也可以不修改,因为这不算错误)


[root@bogon ~]# chkconfig httpd on

[root@localhost ~]# mysqladmin -u root -p password '123'

Enter password:     #此处无密码


[root@localhost pureftpd]# mysql -u root -p <pureftp.sql

Enter password:           #导入需要数据库管理员MySQLadmin的密码,123

数据库中的有关信息如下图所示

wKiom1MBjR6QHYkmAAAueo_8XFs727.jpg



wKioL1MBjPmSOPKHAAC8sLMbM7c227.jpg



安装后台的登录页面


[root@localhost pureftpd]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html


[root@localhost pureftpd]# cd /var/www/html/

[root@localhost html]# ll

total 4

drwxr-xr-x. 4 root 80 4096 Mar 22  2009 PureAdmin-0.3

[root@localhost html]# mv PureAdmin-0.3/ pureadmin


因为我们的php要完成与MySQL的连接,所以谁可以连接,怎么连接这些问题都要指明,所以在页面目录下(PureAdmin-0.3)有这样一个config.php来专门指明这些问题


[root@localhost pureadmin]# vim config.php

修改的内容如下:

wKiom1MBjYHie4LGAADZJLWdcOA815.jpg


[root@localhost pureadmin]# chmod -R o+rw /ftproot/


这些配置如ul(上传),dl(下载)值在页面显示时都会以默认值的形式出现,后期可以修改

修改完之后我们就可以进行页面测试,如图

wKioL1MBjY2wlri5AABe2ZF2MLE174.jpg

登录后出现连接错误,如图

wKiom1MBjcjh2RGyAAArN2GxlCk640.jpg


原因为会话不允许,然后我们回到服务端修改防火墙规则,(所以,这也提醒我们,以后再进行测试前要先记得修改防火前)

[root@localhost pureadmin]# setenforce 0

[root@localhost pureadmin]# service iptables stop

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Unloading modules:                               [  OK  ]

重新测试

wKioL1MBjl3A0nQUAAC0eNSrmeg537.jpg


新建一个本地映射用的账号,然后就可以在后台进行用户的登记注册了

[root@localhost pureadmin]# useradd -d /ftproot ftpaccount

[root@localhost pureadmin]# ll -d /ftproot/

drwx------. 4 ftpaccount ftpaccount 4096 Feb 16 00:45 /ftproot/

[root@localhost pureadmin]# chmod -R o+rw /ftproot/

新建用户,(此时就可以看到前面配置文件的默认参数了)

wKiom1MBjxiAZSQaAABoWM4-ExQ204.jpg

从后台的数据库中也可以看到正常的反馈信息了

wKiom1MBj1OhXvkKAABrGDiHMzE236.jpg


搭建前台的服务器

[root@localhost ~]# cd ./pureftpd/

[root@localhost pureftpd]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src


[root@localhost pureftpd]# cd /usr/local/src/

[root@localhost src]# ll

total 4

drwxr-xr-x. 10 root root 4096 Feb 16 00:58 pure-ftpd-1.0.36

[root@localhost src]# cd ./pure-ftpd-1.0.36/     #编译参数如下

./configure \

--prefix=/usr/local/pureftpd \

--with-mysql \

--with-shadow \

--with-pam  \

--with-welcomemsg   \

--with-uploadscript  \

--with-cookie   \

--with-virtualchroot \

--with-virtualhosts \

--with-diraliases \

--with-quotas \

--with-puredb \

--with-sysquotas \

--with-ratios \

--with-ftpwho \

--with-throttling \

--with-language=simplified-chinese

wKiom1MBj6zDpXfEAACLamy6qWo634.jpg


wKioL1MBj5uQ6LNtAABkr9h5i00339.jpg

[root@localhost src]# ll /usr/local/pureftpd/

total 12

drwxr-xr-x. 2 root root 4096 Feb 16 01:11 bin

drwxr-xr-x. 2 root root 4096 Feb 16 01:11 sbin

drwxr-xr-x. 3 root root 4096 Feb 16 01:11 share


如果在安装完成之后的share文件中找不到有关的配置文件或控制脚本,那么我们要们可以自己创建,还可以去解压释放的目录下找到样本文件

同样的,在接受到请求之后就要完成身份的验证,要验证就要完成与MySQL的连接,所以谁可以连接,(账户)怎么连接(方式),怎么样验证(验证),这些问题都要指明,所以也需要一个来专门的连接(或接口)文件来指明这些问题

新建配置文件,可利用./configure --help |less来查看配置参数,找到配置和脚本目录


[root@localhost pure-ftpd-1.0.36]# mkdir /usr/local/pureftpd/etc

[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd

[root@localhost contrib]# chmod a+x /etc/init.d/pureftpd

[root@localhost contrib]# pwd

/usr/local/src/pure-ftpd-1.0.36/contrib  #在这样一个目录下我们可以搜索到所需要的支持文件


[root@localhost pure-ftpd-1.0.36]# cd ./configuration-file/

[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/

[root@localhost configuration-file]# pwd

/usr/local/src/pure-ftpd-1.0.36/configuration-file

[root@localhost configuration-file]# vim /etc/init.d/pureftpd

修改内容如下

wKioL1MBkiGAz-RLAABRqZarPW8567.jpg


[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl

[root@localhost configuration-file]# chmod a+x /usr/local/pureftpd/sbin//pure-config.pl



启动服务并查看端口情况:

[root@localhost configuration-file]# service pureftpd start

Starting pure-config.pl: Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z


[root@localhost configuration-file]# netstat -tupln |grep 21

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      20030/pure-ftpd (SE

tcp        0      0 :::21                       :::*                        LISTEN      20030/pure-ftpd (SE

[root@localhost configuration-file]# chkconfig --add pureftpd

[root@localhost configuration-file]# chkconfig pureftpd on

[root@localhost configuration-file]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

修改内容如下

wKioL1MBkBfR2_V0AACVJHbeta0745.jpg


wKioL1MBktfSXs4VAAAfj7CY1bo464.jpg


[root@localhost ~]# cd /usr/local/pureftpd/etc/

[root@localhost etc]# ll

total 12

-rw-r--r--. 1 root root 11244 Feb 16 01:52 pure-ftpd.conf

[root@localhost etc]# cp /root/pureftpd/pureftpd-mysql.conf ./

[root@localhost etc]# ll

total 20

-rw-r--r--. 1 root root 11244 Feb 16 01:52 pure-ftpd.conf

-rw-r--r--. 1 root root  4718 Feb 16 01:57 pureftpd-mysql.conf

[root@localhost etc]# vim pureftpd-mysql.conf

修改如下的三项内容:

wKiom1MBkzOQwRsNAAA56Y3_Q7Y107.jpg


wKioL1MBkw6BnukMAABIXJHy3IE671.jpg

因为前面我们已经新建本地用户用于映射虚拟用户,而虚拟账号是存放在数据库中的,它和本地账号存在一种映射,本地账号存放在本地的passwd文件中,如下图,(接下来就是产生映射文件)


wKioL1MBmEiQgXyZAACp00QlPt4881.jpg


然后在文件配置好后,用相关命令产生pureftpd.passwd映射文件

[root@localhost etc]# pwd

/usr/local/pureftpd/etc

[root@localhost etc]# ../bin/pure-pw useradd user1 -u ftpaccount -g ftpaccount -d /ftproot/user1 -m

Password:       #此处为本地的ftpaccount用户的密码,它可以有也可以无,视创建时而定

Enter it again:


说明:

user1是用户名,-u virtualftp是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D;如果需要不同的权限,可以建立新的linux用户与组


  如果用的系统自带的ftp用户,这样的话还需修改配置文件pure-ftpd.conf中的MinUID为ftp用户的UID 14,否则登录时会出现530错误;所以这里建议创建另一个非系统自带的用户做映射


[root@localhost etc]# ll

total 28

-rw-r--r--. 1 root root 11244 Feb 16 01:52 pure-ftpd.conf

-rw-r--r--. 1 root root  4714 Feb 16 02:01 pureftpd-mysql.conf

-rw-------. 1 root root    80 Feb 16 02:06 pureftpd.passwd

-rw-------. 1 root root  2146 Feb 16 02:06 pureftpd.pdb




[root@localhost etc]# service pureftpd restart #重启服务并测试

Stopping pure-config.pl:

Starting pure-config.pl: Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fftp -H -I15 -lmysql:/usr/local/pureftpd/etc/pureftpd-mysql.conf -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L10000:8 -m4 -s -U133:022 -u100 -j -k99 -Z



wKiom1MBlbzAoFIjAADajxG8rdc570.jpg


[root@localhost etc]# cd /ftproot/

[root@localhost ftproot]# ll

total 4

drwxr-xr-x. 2 1000 1000 4096 Feb 16 02:16 user2



wKiom1MBlTmQf2W1AABkGG923Yo842.jpg


wKioL1MBlerRJ9sqAAC0gLtpIw4416.jpg

[root@localhost etc]# ll /ftproot/

total 8

drwxr-xr-x. 2 1000 1000 4096 Feb 16 02:26 user2

drwxr-xr-x. 2 1000 1000 4096 Feb 16 02:31 user3

浏览器端测试匿名账号


wKioL1MBllejTLFoAABxq3k_lwU961.jpg

[root@localhost etc]# mkdir -pv /var/ftp

mkdir: created directory `/var/ftp'

[root@localhost etc]# touch /var/ftp/f1.pub

wKiom1MBlp7R2KFHAABZg8zmaGM090.jpg


浏览器端测试非匿名账号

wKiom1MBlyvwPL8cAACQyJ-QK2A850.jpg


wKioL1MBlyHSpgNqAABhKjOxpLY900.jpg


然后测试,用户的相关权限是否正常,正常测试如图:

新建

wKiom1MBl5ezTiUoAABqyiWKHRI777.jpg

更改

wKiom1MBl8PDYM8RAABW-nDauEY107.jpg

而且能够删除

wKiom1MBl9vT83xwAACiBTCo7Kc884.jpg


测试正常.