pureftp+pureadmin安装配置

来源:互联网 发布:mac版梦幻西游更新失败 编辑:程序博客网 时间:2024/04/18 14:56

一、安装pureftpd

前提:已经配置好lamp环境

1、下载所需软件包
#wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.gz

2、编译安装
#./configure --prefix=/usr/local/pureftpd --with-mysql --with-throttling --with-puredb --with-virtualhosts --with-virtualroot --with-cookie --with-quotas --with-sysquotas --with-ratios --with-welcomemsg --with-peruserlimits --with-lanaguage=simplified-chinese

----------
如果出现configure: error: libmysqlclient is needed for MySQL support
解决:#yum install mysql-devel
----------
<configure后面如果用--with-everything表示包含所有功能<但是不保险>
                  --with-tls表示激活SSL/TLS,需要openssl>
# make

# make install

-----进入pure-ftp解压目录-----

3、复制必要的文件
# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/

# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

# mkdir -p /usr/local/pureftpd/etc/

# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/

4、添加pureftpd为系统服务

# cp contrib/redhat.init /etc/init.d/pureftpd

# vi /etc/init.d/pureftpd
修改18/19行
        fullpath=/usr/local/sbin/$prog
        pureftpwho=/usr/local/sbin/pure-ftpwho
  为:
        fullpath=/usr/local/pureftpd/sbin/$prog
        pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

修改24行
        $fullpath /etc/pure-ftpd.conf --daemonize
   为   $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize


# chmod 755 /etc/init.d/pureftpd
# chkconfig --add pureftpd
# chkconfig pureftpd on

5、修改配置文件
# vi /usr/local/pureftpd/etc/pure-ftpd.conf
其中可以修改最大连接数、空闲时间等,详细介绍见http://everspring.blog.51cto.com/497193/104618
其中有几项要修改:
chrootEveryone              yes   限定在自己的家目录
NoAnonymous                 yes   不允许匿名登录
Bind                      127.0.0.1,21        监听本机回环 <可选>
Bind                      192.168.0.254,21    监听本机IP  <自行添加的,非必须>
CreateHomeDir               yes   允许用户登录后自动创建家目录   <必须>

如果启用了iptables,还必须修改下面这一行:
PassivePortRange          30000 50000保存退出。

iptables开启相关端口:

iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 30000:50000 -j ACCEPT
/etc/rc.d/init.d/iptables save

6、配置虚拟用户登录环境
# mkdir /ftproot

# chmod -R 777 /ftproot  <这不不做可以能会引起登录时报421错误>

# useradd virtualftp -d /ftproot -s /sbin/nologin  <创建接下来的虚拟用户对应的系统用户>

# chown virtualftp:virtualftp /ftproot

7、设置环境变量
# echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile
# source /etc/profile

# pure-pw show tony                                   查看tony这个用户的详细信息
# pure-pw list                                        是看用户列表的
# pure-pw passwd tony -m                              修改tony的密码
# pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb   创建虚拟用户数据库。
# pure-pw show tony                                   查看用户
# pure-pw usermod                                     修改用户

8、启动pureftpd
#service pureftpd start  或者  #/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
出现
Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -E -fftp -H -I5 -L10000:8 -m4 -s -U133:022 -u100 -j -k99 -Z
表示正常

# netstat -anltp | grep 21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      13418/pure-ftpd (SE
tcp        0      0 :::21                       :::*                        LISTEN      13418/pure-ftpd (SE

二、虚拟用户使用篇

 (一)用pureDB认证

<1>#vi /usr/local/pureftpd/etc/pure-ftpd.conf
修改126行为:

PureDB                        /usr/local/pureftpd/pureftpd.pdb

<2>#pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 -m
说明:
user1是用户名,-u virtualftp是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D;如果需要不同的权限,可以建立新的linux用户与组

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

<3>建立用户数据库:
# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb
说明:今后每添加或修改用户数据库都应该执行一次mkdb

<4>虚拟用户的信息以每个用户一行的方式存放在相应的文件中,其格式如下所示:

<account>:<password>:<uid>:<gid>:<gecos>:<home directory>:<upload bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number of connections>:<files quota>:<size quota>:<authorized local IPs>:<refused local IPs>:<authorized client IPs>:<refused client IPs>:<time restrictions>
其中,除了帐号、口令、   uid   、   gid   和   home   目录之外,其它的可以是空值

<5>pure-pw 创建用户的语法规范如下:
pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]

      -D/-d <home directory> [-c <gecos>]

      [-t <download bandwidth>] [-T <upload bandwidth>]

      [-n <max number of files>] [-N <max Mbytes>]

      [-q <upload ratio>] [-Q <download ratio>]

      [-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]...]

      [-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]...]

      [-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]...]

      [-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]...]

      [-y <max number of concurrent sessions>]

      [-z <hhmm>-<hhmm>] [-m]
如果pure-ftpd启动时加入   -j(--createhome)   选项,则不需要创建/ftproot/tony目录。系统会在该用户第一次登陆时自动创建

<6>更改用户的语法
pure-pw usermod <user> -n '' :禁用文件配额

pure-pw usermod <user> -N '' :禁用文件大小配额

pure-pw usermod <user> -q '' -Q '' :禁用 ratio

pure-pw usermod <user> -t '' :禁用下载带宽限制

pure-pw usermod <user> -T '' :禁用上传带宽限制

pure-pw usermod <user> <-i,-I,-r or -R> '' :禁用 IP 过滤

pure-pw usermod <user> -z '' :禁用时间段约束

pure-pw usermod <user> -y '' :禁用并发数限制


<7>删除一个用户
pure-pw userdel <login> [-f <passwd file>] [-m]
这时,用户的信息会被从指定的 passwd 文件中删除,但是用户的 home 目录会被保留,需要手工删除

<8>更改一个用户口令
pure-pw passwd <login> [-f <passwd file>] [-m]

<9>显示用户信息
/etc/pureftpd.passwd   文件中记录的信息不方便用户的阅读,因此   pure-ftpd   提供了显示用户信息的命令。其语法是:
pure-pw show <login> [-f <passwd file>]

<10> 使得pure-ftpd支持虚拟用户,需要在编译的时候加入选项--with-puredb 。这时,可以通过在启动服务是的   ’-l’   参数来设置。如:

/usr/local/pureftpd/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &

 (二)用mysql认证

<1>#vi /usr/local/pureftpd/etc/pure-ftpd.conf
修改116行为:

MySQLConfigFile               /usr/local/pureftpd/etc/pureftpd-mysql.conf

<2>下载web管理程序pureadmin0.3
# wget http://www.yiyou.org/docs/PureAdmin_03_php/PureAdmin-0.3.tar.gz

以下操作针对此web管理程序
<3>配置web程序
# tar xvf PureAdmin-0.3.tar.gz -C /var/www/html/
# cd /var/www/html/
# mv PureAdmin-0.3/ pureadmin
# cd pureadmin
       
<4>导入数据到mysql
# wget http://www.yiyou.org/docs/PureAdmin_03_php/pureftp.sql
# less pureftp.sql

注意其中的
     22 -- Login = ftp             此为登录数据库的用户
     23 -- Password = tmppasswd    此为登录数据库的密码

     31 CREATE DATABASE ftpusers;  创建名为ftpusers的库

     50 INSERT INTO admin VALUES ('admin',MD5('passwd'));  此为登录web用的用户密码,可自行修改

<导入数据,导入前可能需要修改此sql文件的15行:前2个减号空一格-- ------------------------------------------------------->
# mysql -u root -p < pureftp.sql

<5>查看mysql
添加连接mysql用户
先用root登录mysql,执行
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql>flush privileges;
mysql>quit;

# mysql -u ftp -p
Enter password:tmppasswd

mysql>use ftpusers;
mysql>show tables;
+--------------------+
| Tables_in_ftpusers |
+--------------------+
| admin              |
| users              |
+--------------------+
2 rows in set (0.01 sec)

mysql> select * from admin;
+----------+----------------------------------+
| Username | Password                         |
+----------+----------------------------------+
| admin    | 76a2173be6393254e72ffa4d6df1030a |
+----------+----------------------------------+
1 row in set (0.11 sec)

mysql>quit

<6>修改pureadmin的配置文件
# cd /var/www/html/pureadmin
# vi config.php   我的如下:
<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers';  //mysql db name                            所用的库<与前面导入的sql中要一致>
$cfg['dbuser']='ftp';           //mysql user                           登录mysql的帐号
$cfg['dbpasswd']='tmppasswd';           //mysql password               登录mysql的密码

//ftp config
$cfg['page']=10;                                                       每页显示的用户数量
//ftp passwd type : TEXT/CRYPT/MD5
$cfg['passwdtype']='MD5';                                              认证模式<要与pureftpd-mysql.conf中一致>
//ftp default
$cfg['uid']=500;  //uid                                                映射虚拟用户的UID,即刚创建的virtualftp用户
$cfg['gid']=500;        //gid                                          同上
$cfg['dir']='/ftproot/'; //dir                                          默认家目录
$cfg['qf']=0;   //quotafiles                                           文件个数限制,0为不限制
$cfg['qs']=100; //quotasize                                            总文件大小
$cfg['ul']=0;   //ULBandwidth                                          上传速率限制
$cfg['dl']=200; //DLBandwidth                                          下载速率限制
$cfg['ur']=0;   //ULRatio                                              上传比
$cfg['dr']=0;   //DLRatio                                              下载比
$cfg['status']=1; //status                                             状态,1为激活;0为禁止
$cfg['ip']= '*';        //ipaddress                                    可访问IP,*为所有
?>


<7>下载pureftpd-mysql.conf文件
# cd /usr/local/pureftpd/etc/
# wget http://www.yiyou.org/docs/PureAdmin_03_php/pureftpd-mysql.conf
# vi pureftpd-mysql.conf
修改如下:
MYSQLUser      ftp
MYSQLPassword   tmppasswd
MYSQLDatabase   ftpusers
MYSQLCrypt      md5

<8>现在可以登录使用了
http://localhost/pureadmin
登录:用户admin ; 密码passwd ;验证码不用

创建的虚拟用户家目录,会在虚拟用户第一次登录时自动创建
如创建了一个user1用户

# ll /ftproot/   没有任何文件
total 0

# ftp localhost
Connected to localhost.localdomain.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 16:16. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 5 minutes of inactivity.
500 This security scheme is not implemented
500 This security scheme is not implemented
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): user1
331 User user1 OK. Password required
Password:
230-Your bandwidth usage is restricted
230-OK. Current restricted directory is /
230 0 Kbytes used (0%) - authorized: 102400 Kb
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

# ll /ftproot/     自动创建了目录user1
total 4
drwxr-xr-x 2 virtualftp virtualftp 4096 Apr  1 16:16 user1

实现了web创建、管理虚拟用户
0 0
原创粉丝点击