# yum install httpd php php mysql mysql-server mysql-devel php-mysql php-cgi php-mbstring php-gd php-fastcgi php-mcrypt php-cli php-xcache
# chkconfig httpd on
# chkconfig mysqld on
二、准备工作:为Pure-FTPd添加用户并设置权限
# useradd ftpuser –g ftpgroup -d /data/ftp -s /sbin/nologin
# chown –R ftpuser:ftpgroup /data/ftp
三、编译安装Pureftpd
# make && make install
四、配置Pureftpd
# cp configuration-file/pure-ftpd.conf /etc/
# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
# chmod u+x /usr/local/pureftpd/sbin/pure-config.pl
五、安装Pure-FTPd为服务
将“pureftpwho=/usr/local/sbin/pure-ftpwho”修改为“pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho”
# chmod +x /etc/init.d/pure-ftpd
# chkconfig –add pure-ftpd
# chkconfig pure-ftpd on
六、安装配置User manager for PureFTPd:
# cp ../ftp/* /var/www/html //注意:config.php的文件权限为777
七、修改Pure-FTPd主配置文件及MySQL验证文件
1、
2、
“#MYSQLPort 3306”
并修改相关的参数如下:
MYSQLPassword tmppasswd
MYSQLDatabase ftpusers
MYSQLCrypt md5
八、启动Pure-FTPd
安装:
# cd /usr/ports/ftp/pure-ftpd
# make install clean
在/etc/rc.conf 加入下面内容,让pure-ftpd随系统自启动:
pureftpd_enable="YES"
复制配置文件模板为新的配置文件(一定要操作,否则pure-ftpd不会随系统启动,端口无法打开):
# cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf
用配置文件启动PureFTPd:
# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
接下来你得添加“ftp”这个账户和组,否则匿名登录的话会报错:
Running: /usr/local/sbin/pure-ftpd -g/var/run/pure-ftpd.pid -A -c50 -B -C8 -D -f ftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z
FreeBSD pure-ftpd: (?@?)[ERROR] Unable to find the 'ftpd' account
# mkdir /var/ftp
# pw groupadd ftp
# pw useradd ftp -g 14 -d /var/ftp -s /sbin/nologin
启动:/usr/local/etc/rc.d/pure-ftpd onestart
重启:/usr/local/etc/rc.d/pure-ftpd restart
接下来我们要为ftp添加虚拟用户,之所以成为虚拟用户是因为,你在ftp上建立的用户和FreeBSD系统内的用户是不一样的,因为我们新添加的虚拟用户会把用户信息添加到一个文本里面而不是添加到系统用户里。
为了方便管理我们为ftp创建一个特有的系统用户,来管理这些虚拟用户。
# pw groupadd ftpgroup
# pw useradd ftpuser -g ftpgroup -d /home/ftp -s /sbin/nologin
建立新的虚拟用户:zhxd
可以按照下面的格式来创建:
# pure-pw useradd zhxd -u ftpuser -d /home/ftp/zhxd
-u的意思是关联zhxd与ftpuser,-d是限制zhxd这个账户无法访问上级目录
为新建的用户创建个FTP文件夹
# mkdir /home/ftp
# mkdir /home/ftp/zhxd
查看新创建的用户信息
# cat /usr/local/etc/pureftpd.passwd
对虚拟用户进行限制,比如为zhxd用户添加一个限额,限制最多拥有1000个文件,最大10M空间:
# pure-pw usermod zhxd -n 1000 -N 10
删除虚拟用户
# pure-pw userdel zhxd
修改用户密码
# pure-pw passwd zhxd -m (-m的意思是可以让修改不需重启立刻生效)
显示用户信息
# pure-pw show zhxd
生成pureftpd.pdb索引文件使其修改生效。
# pure-pw mkdb
修改配置文件
# vi /usr/local/etc/pure-ftpd.conf
PureDB /usr/local/etc/pureftpd.pdb //Puredb路径
官方的教程:http://machiel.generaal.net/index.php?subject=pureftpd&language=eng#subject_3
注意:在使用官方教程,导入script.mysql数据库时,一定要先编辑script.mysql,去掉第15行的“---------------------------------------------------------”,否则会提示导入不成功,错误状况为:
[root@FreeBSD ~]# mysql -uroot -p < /root/script.mysql
Enter password:
ERROR 1064 (42000) at line 15: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '----------------
---------------------------------------
INSERT INTO m' at line 1
切记!!!
后来想起来,会不会是ftp帐号的目录不对所引起的,马上more /etcpasswd,果然ftp的默认目录指向的是/var/ftp,为了测试我的推断,在/var/ftp目录里创建了一些无用的txt文件,然后再用匿名帐号ftp登陆进去,证实了我的推断是正确的。
那现在就只有修改ftp帐号的默认主目录了。
OK,现在再使用ftp帐号登陆,可以正常显示FTP站点内的文件及目录了。
安装好pureftpd+mysql+pureftpd_php_manager以后,如何设置虚拟用户的权限呢,比如,如何设置用户只可以下载,不可以上传呢?以前装过Pureftpd,MySQL里的UID、GID与系统里的UID、GID之间是什么关系。我猜想,可能用户登录后,用数据库里的UID、GID去访问文件系统。于是,做了个测试:
如下表:
| User | UID | GID | Might |
| abc | 501 | 2001 | 无法创建目录、无法上传文件、无法新建文件、无法删除文件、无法删除目录 |
| test | 2001 | 501 | 可以创建目录、可以上传文件、可以新建文件、可以删除文件、可以删除目录 |
结论:
PureFTPD中的UID,GID是针对文件系统操作的有效ID,PureFTPD将用这个ID的权限去存取文件。
如果要设置虚拟用户的权限,只需设置其对应的UID,GID的权限了,
另:
如果在pureftpd_php_manager里创建的一个FTP虚拟用户的目录指向一个不存在的目录,pureftpd会自动创建该目录,目录默认属主为:ftpuser.ftpgroup。
pw groupadd ftpusers -g 1001
pw adduser ftpusers -u 1001 -g ftpusers -d /usr/www -s /sbin/nologin
chown ftpusers:ftpusers /usr/www
##其中用户、组、/usr/www等可根据自己的实际情况选择
tar jxvf pure-ftpd-1.0.20.tar.bz2
cd pure-ftpd-1.0.20
./configure --prefix=/usr/local/pureftpd --with-mysql --with-paranoidmsg --with-shadow --with-welcomemsg --with-uploadscript --with-quotas --with-cookie --with-virtualhosts --with-virtualroot --with-diraliases --with-sysquotas --with-ratios --with-ftpwho --with-throttling --with-altlog --with-language=simplified-chinese
make
make install
#########################################
以前用pureftpd的时候还不知道最好用ports安装,所以一直自己编译安装,现在要装,最好用ports安装。
cd /usr/ports/ftp/pure-ftpd
ee Makefile
改成这样就行了:
--with-paranoidmsg \
--with-virtualchroot \
--with-tls \
--with-largefile \
--sysconfdir=${PREFIX}/etc
然后make install clean即可。
注:多谢benbenblood 兄提示,原来写的不够清楚,容易误导大家 :em06:
######################################
mkdir /usr/local/pureftpd/etc
cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl
chmod u+x /usr/local/pureftpd/sbin/pure-config.pl
ee /usr/local/pureftpd/etc/pure-ftpd.conf
可参考其他文章进行设置,需要注意的是:
BrokenClientsCompatibility YES
#如果不设置的话,用IE登陆时.ftpquota会不计数,用户的磁盘配额将不起作用。
# MySQL configuration file (see README.MySQL)
# pureftpd-mysql.conf文件的位置
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
##这个文件的地方一定要写对
2:安装pureftpd_php_manager
tar zxvf pureftpd_php_manager.tar.gz
cp -R pureftpd_php_manager /usr/www/phpmanager
#或者直接mv,/usr/www目录为apache的主目录,如果不同请更换
find /usr/www/phpmanager -type d -exec chmod 755 {} \;
find /usr/www/phpmanager -type f -exec chmod 644 {} \;
cd /usr/www/phpmanager/
cp pureftpd-mysql.conf.sample /usr/local/pureftpd/etc/pureftpd-mysql.conf
ee /usr/local/pureftpd/etc/pureftpd-mysql.conf
#MYSQLSocket /var/lib/mysql/mysql.sock
MYSQLServer localhost
MYSQLPort 3306
MYSQLUser pureftpd
##注意此处的用户要和后面在数据库中添加的一致
MYSQLPassword abcdefg
##注意此处的密码要和后面在数据库中添加的一致
MYSQLDatabase pureftpd
##注意此处的数据库名字要和后面在数据库中添加的一致
MYSQLCrypt md5
##如果是默认的pureftpd_php_manager则不能用md5,要用crypt或者cleartext,不管是crypt还是cleartext都要和后面的一致
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
###############################################
ee /usr/www/phpmanager/pureftp.config.php
<?php
######################
####### SETUP ########
######################
// Your exactly located mysql config file for pureftpd
$PUREFTP_CONFIG_FILE = '/usr/local/pureftpd/etc/pureftpd-mysql.conf';
// The location where all the Forms directed to. (Mayby no change needed)
$SELF_URL = 'index.php';
// The location of your pure-ftpdwho binary (set this to chmod 4711)
$FTP_WHO = "/usr/local/sbin/pure-ftpwho";
#######################
# DEFAULT NEW-USER PARAMS #
#######################
$DefaultUser = ""; # Default User Logon
$DefaultPass = ""; # Default User Password
$DefaultUid = "1001"; # Default User ID ( must be a real user acct )
##此处填上安装pureftpd的时候添加的用户id
$DefaultGid = "1001"; # Default Group ID ( must be a real group acct )
##此处填上安装pureftpd的时候添加的用户组id
$DefaultDir = "/usr/www"; # Default User Dir ( use /./ at the end to chroot )
$DefaultUL = "2000"; # Default Upload Throttle ( 0 disables it )
$DefaultDL = "2000"; # Default Download Throttle ( 0 disables it )
$Defaultip = "*"; # Default IP restrictions ( * = any IP )
$DefaultQS = "2000"; # Default Quota Size ( 0 disables it )
$Defaultcmt = ""; # Default Comment for user
// UA
$DefaultQF = "200000"; # Default Quota Files ( 0 disables it )
$PWC = "24"; # Vorsatz fuerr Crypt Password
?>;
mysql -u root -p
mysql>;
drop database pureftpd;
CREATE DATABASE pureftpd;
use pureftpd;
DROP TABLE IF EXISTS ftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
grant all privileges on pureftpd.* to pureftpd@localhost identified by 'abcdefg';
##grant all privileges on 你刚建立的数据库名称.* to 你要建的mysql用户名称@localhost identified by 'mysql新用户密码'
FLUSH PRIVILEGES;
##重载受权表
3:启动pureftpd
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
为了以后方便的进行Ftp服务的管理,我自己在/usr/local/etc/rc.d中新建了一个pureftpd.sh文件。
ee /usr/local/etc/rc.d/pureftpd.sh
#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/pureftpd/etc/pure-ftpd.conf ]; then
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf >; /dev/null 2>;&1 && echo -n 'pure-ftpd Begin!'
fi
;;
stop)
/usr/bin/killall pure-ftpd >; /dev/null 2>;&1 && echo -n 'pure-ftpd Stop!'
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac
设置该文件的可执行权限
chmod u+x /usr/local/etc/rc.d/pureftpd.sh
以后可以用下列命令启动PureFTPd服务
/usr/local/etc/rc.d/pureftpd.sh start
用下列命令停止PureFTPd服务
/usr/local/etc/rc.d/pureftpd.sh stop
让它开机自动启动,在/etc/rc.conf里面加入pureftpd_enable="YES"或者不加也可以。
4:web界面管理
安装了pureftpd_php_manager以后就可以通过http://你的域名或ip/phpmanager/index.php来添加、删除用户了。
下载文件 (已下载 61 次)



