FTP设置

配置ftp(系统自带)

引用:
# ee /etc/inetd.conf
代码:
ftp	stream	tcp	nowait	root	/usr/libexec/ftpd	ftpd	-l -h
引用:
# ee /etc/rc.conf
代码:
inetd_enable="YES"
启动ftp

引用:
# killall -HUP inetd
添加ftp用户组

引用:
# pw groupadd ftpgroup -g 10001
添加ftp用户

引用:
# adduser
Username:ftp
Full name:
Uid (Leave empty for default):1001
Login group [ftpuser]: ftpgroup
Login group is ftpgrou. Invite ftpuser into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]:
Home directory [/home/ftpuser]:/usr/www
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : ftpuser
Password : *****
Full Name :
Uid : 1001
Class :
Groups : ftpgroup
Home : /usr/www
Shell : /bin/sh
Locked : no
OK? (yes/no) : yes
adduser: INFO: Successfully added (ftpuser) to the user database.
Add another user? (yes/no): no
Goodbye!
禁止匿名用户登录

引用:
# ee /etc/ftpusers
代码:
anonymous
@guest
设定用户使用目录

引用:
# ee /etc/ftpchroot
代码:
ftpusr /usr/www
设置用户磁盘限额

引用:
# ee /etc/rc.conf
代码:
enable_quotas="YES"
check_quotas="YES"
引用:
# ee /etc/fstab
代码:
/dev/ad0s1f	/usr	ufs		rw,userquota,groupquota		2	2
引用:
# quotacheck -av
# repquota –a
# edquota –u ftpuser
代码:
/usr: kbytes in use: 0, limits (soft = 100000, hard = 100020)	# soft是警告容量,hard是强制容量
引用:
# edquota –t
代码:
/usr: block grace period: 1 minutes, file grace period: 1 minutes
引用:
# quotaon -a
安装pure-ftpd(推荐)

引用:
# pw groupadd ftpgroup -g 10001
# pw useradd ftp -u 10001 -g ftpgroup -s /sbin/nologin
# chown ftp:ftpgroup /usr/www
# cd /usr/ports/ftp/pure-ftpd
# ee Makefile
代码:
CONFIGURE_ARGS	=	--without-standalone		# 为将来以守护进程模式运行准备(可选)
引用:
# make install clean
选择MYSQL,PAM,PRIVSEP,PERUSERLIMITS,THROTTLING,BANNER,UPLOADSCRIPT,SENDFILE

建立pure-ftpd数据库
通过phpmyadmin执行

代码:
CREATE DATABASE pureftpd;
USE pureftpd;
CREATE TABLE `users` (
`User` varchar(16) NOT NULL default '',
`Password` varchar(32) binary NOT NULL default '',
`Uid` int(11) NOT NULL default '14',
`Gid` int(11) NOT NULL default '5',
`Dir` varchar(128) NOT NULL default '',
`QuotaFiles` int(10) NOT NULL default '500',
`QuotaSize` int(10) NOT NULL default '30',
`ULBandwidth` int(10) NOT NULL default '80',
`DLBandwidth` int(10) NOT NULL default '80',
`ipaccess` varchar(15) NOT NULL default '*',
`Comment` tinytext,
`Status` enum('0','1') NOT NULL default '1',
`ULRatio` smallint(5) NOT NULL default '1',
`DLRatio` smallint(5) NOT NULL default '1',
PRIMARY KEY  (`User`),
UNIQUE KEY `User` (`User`)
) TYPE=MyISAM;
通过phpmyadmin新建一用户名为ftpadmin,密码adminpassword,并赋予其pureftpd数据库的Select,Insert,Update,Delete权限。

配置pure-ftp

引用:
# cd /usr/local/etc
# cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
# ee pureftpd-mysql.conf
代码:
# 具体选项请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
MYSQLServer     localhost
MYSQLUser      ftpadmin
MYSQLPassword   adminpassword
MYSQLDatabase  pureftpd
MYSQLCrypt      crypt
MYSQLGetPW      SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
# MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
# MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
如果以standalone(独立进程)方式运行,还需要编辑pure-ftpd的配置文件

引用:
# cp pureftpd.conf.sample pure-ftpd.conf
# ee pure-ftpd.conf
让pure-ftpd随系统启动

如果以inetd(守护进程)方式运行

引用:
# ee /etc/rc.conf
代码:
inetd_enable=”YES”
引用:
# ee /etc/inetd.conf
代码:
# 详细启动参数请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
ftp	stream	tcp	nowait	root	/usr/local/sbin/pure-ftpd	pure-ftpd -A -b -c50 -C2 -D -E -fftp -H -i -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -m4 -s -u100 -j -k99 -Z -4
如果以standalone(独立进程)方式运行

引用:
# ee /usr/local/etc/rc.d/pure-ftpd.sh
代码:
#!/bin/sh
case "$1" in
start)
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
echo ‘pure-ftpd started!’
echo ‘’
;;
stop)
killall pure-ftpd
echo ‘pure-ftpd stopped!’
echo ‘’
;;
restart)
killall pure-ftpd
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
echo ‘pure-ftpd restarted!’
echo ‘’
;;
*)
echo ‘Usage: {start|stop|restart}’ >&2
exit 64
;;
esac
exit 0
引用:
# chmod u+x /usr/local/etc/rc.d/pure-ftpd.sh
# ee /etc/rc.conf
代码:
pure-ftpd_enable=”YES”
安装配置pureftpdadmin

引用:
# mount /cdrom
# cp –R /cdrom/pureftpdadmin /usr/www/pureftpdadmin
# ee /usr/www/pureftpdadmin/pureftp.config.php
代码:
$PUREFTP_CONFIG_FILE	= '/usr/local/etc/pureftpd-mysql.conf';
$DefaultUser = "ftpadmin";
$DefaultPass = "adminpassword";
引用:
# ee /usr/www/pureftpdadmin/goodies/Quota_Checker.php
代码:
$PUREFTP_CONFIG_FILE	= '/usr/local/etc/pureftpd-mysql.conf';
引用:
# chmod 755 /usr/local/sbin/pure-ftpwho
# chmod ug+s /usr/local/sbin/pure-ftpwho
设置pureftpdadmin安全

引用:
# ee /usr/local/etc/apache22/httpd.conf
代码:
<Directory "/usr/www/pureftpdadmin">
deny from all
Options None
AllowOverride AuthConfig
Order deny,allow
</Directory>
引用:
# ee /usr/www/pureftpdadmin/.htaccess
代码:
AuthType Basic
AuthUserFile /usr/local/ftpadmin.pwd
AuthName “操作前请登录”
require valid-user
satisfy any
引用:
# htpasswd -bc /usr/local/ftpadmin.pwd ftpadmin adminpassword