5月6

安装:
# 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


切记!!!

12月6
pure-ftpd创建ftp以后,发现用ftp帐号(即匿名帐号)登陆,FTP站点内是空白的,刚刚为了测试各个帐号的权限,明明用test帐号上传过一些东西的,为什么ftp帐号登陆进去是空白的呢?
后来想起来,会不会是ftp帐号的目录不对所引起的,马上more /etcpasswd,果然ftp的默认目录指向的是/var/ftp,为了测试我的推断,在/var/ftp目录里创建了一些无用的txt文件,然后再用匿名帐号ftp登陆进去,证实了我的推断是正确的。
那现在就只有修改ftp帐号的默认主目录了。
[root@CentOS ~]#usermod -d /var/ftpdir ftp //修改ftp帐号的默认目录为我的FTP主目录/var/ftpdir

OK,现在再使用ftp帐号登陆,可以正常显示FTP站点内的文件及目录了。
Tags: , ,
12月5

安装好pureftpd+mysql+pureftpd_php_manager以后,如何设置虚拟用户的权限呢,比如,如何设置用户只可以下载,不可以上传呢?以前装过Pureftpd,MySQL里的UID、GID与系统里的UID、GID之间是什么关系。我猜想,可能用户登录后,用数据库里的UID、GID去访问文件系统。于是,做了个测试:

如下表:

User UIDGID
Might
abc5012001 无法创建目录、无法上传文件、无法新建文件、无法删除文件、无法删除目录
test2001501可以创建目录、可以上传文件、可以新建文件、可以删除文件、可以删除目录


结论:

PureFTPD中的UID,GID是针对文件系统操作的有效ID,PureFTPD将用这个ID的权限去存取文件。

如果要设置虚拟用户的权限,只需设置其对应的UID,GID的权限了,

另:
如果在pureftpd_php_manager里创建的一个FTP虚拟用户的目录指向一个不存在的目录,pureftpd会自动创建该目录,目录默认属主为:ftpuser.ftpgroup。

12月2
1:安装pureftpd
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
改成这样就行了:
CONFIGURE_ARGS= --with-everything \
--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来添加、删除用户了。

Tags: , ,
12月1
Pureftpd的web管理工具!(webpureftp)

进入WebPureftp解压后的目录,编辑文件SQL/pureftp_0.1.sql,找到语句“DROP TABLE IF EXISTS‘depart_info’;”,在该语句前加入以下两条语句:

CREATE DATABASE pureftp;
USE pureftp;

最后执行以下命令生成MySQL数据库:

mysql -u root -p < SQL/pureftp_0.1.sql

输入MySQL的root用户的口令后即可自动生成pure-ftpd使用的数据库。

3.生成Pure-ftpd配置文件

进入WebPureftp解压后的目录,编辑其配置文件docs/pureftpd-mysql.conf:

vi docs/pureftpd-mysql.conf

(1)设置连接MySQL数据库用户
找到语句“MYSQLUser network”,将其改为“MYSQLUser root”。

(2)设置连接MySQL数据库密码
找到语句“MYSQLPassword 123456”,将其改为“MYSQLPassword mygoodpwd”。

(3)设置Pure-ftpd使用数据库表
找到语句“MYSQLDatabase network”,将其改为“MYSQLDatabase pureftp”。

使用以下命令将docs/pure-ftpd.conf和docs/pureftpd-mysql.conf复制到/etc目录中:

cp docs/*.conf /etc

4.配置WebPureftp的参数

编辑文件config/config.inc.php,找到语句“ $default_ftp_root="/data/ftp";”,将其修改为FTP实际的目录,如本例改为 “ $default_ftp_root="/ftproot/";”(注意:必须在目录后加上“/”号);找到语句“$obj_db=new db("localhost","root","","pureftp");
”,修改其中的root口令为实际的口令,如本例改为:

$obj_db=new db("localhost","root","root","pureftp");

5.将WebPureftp目录放置在Apache的主目录中

本例Apache的目录是/var/www/html,使用以下命令将WebPureftp解压后的目录放置在Apache的主目录中,这样我们才能通过Web方式来配置Pure-ftpd服务器。

mv pureftp /var/www/html

6.使用WebPureftp配置Pure-ftpd

在任何一台计算机上,通过IE来访问WebPureftp:

http://Linux服务器的IP或域名/pureftp/index.php

此时打开的是WebPureftp的认证页面,使用账号码“admin”进行登录(口令也是“admin”)。登录后就会进入WebPureftp管理主页面(见图3),在这个页面中有“系统管理”和“FTP管理”两大功能。

下载文件 (已下载 277 次)
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]