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中的如下字段,如果类型还是不通过就用手工 的方法,输入那些创建指令
插入到数据库(ftpuser)表(admin)中一行名为“admin”(指后台管理员的账号表)的字段,并对表中的值values进行MD5加密,此为上步操作的含义
另外在导入时还发现这个文件存在一个不足的地方,即如下所示的红线部分应该有一个空格,但是没有,所以要手工加入空格。
pureftp.sql该文件还指明了在数据库中创建了一个名为ftpusers的数据库,在user库中创建可一个“ftp”用户,密码为tmppasswd,如下图:
[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
数据库中的有关信息如下图所示
安装后台的登录页面
[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
修改的内容如下:
[root@localhost pureadmin]# chmod -R o+rw /ftproot/
这些配置如ul(上传),dl(下载)值在页面显示时都会以默认值的形式出现,后期可以修改
修改完之后我们就可以进行页面测试,如图
登录后出现连接错误,如图
原因为会话不允许,然后我们回到服务端修改防火墙规则,(所以,这也提醒我们,以后再进行测试前要先记得修改防火前)
[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 ]
重新测试
新建一个本地映射用的账号,然后就可以在后台进行用户的登记注册了
[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/
新建用户,(此时就可以看到前面配置文件的默认参数了)
从后台的数据库中也可以看到正常的反馈信息了
搭建前台的服务器
[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
[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
修改内容如下
[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
修改内容如下
[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
修改如下的三项内容:
因为前面我们已经新建本地用户用于映射虚拟用户,而虚拟账号是存放在数据库中的,它和本地账号存在一种映射,本地账号存放在本地的passwd文件中,如下图,(接下来就是产生映射文件)
然后在文件配置好后,用相关命令产生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
[root@localhost etc]# cd /ftproot/
[root@localhost ftproot]# ll
total 4
drwxr-xr-x. 2 1000 1000 4096 Feb 16 02:16 user2
[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
浏览器端测试匿名账号
[root@localhost etc]# mkdir -pv /var/ftp
mkdir: created directory `/var/ftp'
[root@localhost etc]# touch /var/ftp/f1.pub
浏览器端测试非匿名账号
然后测试,用户的相关权限是否正常,正常测试如图:
新建
更改
而且能够删除
测试正常.