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 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 浏览器端测试非匿名账号 然后测试,用户的相关权限是否正常,正常测试如图: 新建 更改 而且能够删除 测试正常.