关于glftpd的一些东东
谁要使用glftpd
我应该是2年前开始用glftpd的,这个东西至今我还没见多少人用,能看到的中文资料
也就是一些娱记写的弱智IT文章。现在要毕业了,走出学校估计没什么机会再弄,先做
个小小的总结在这里。
当初我找到过一篇一个ror组织的成员写的glftpd文章,给了我很大帮助,然后自己很
仔细的把自带的几千行文档看了一遍,才真正了解到glftpd的魅力。它并不适合所有的
ftp站,要是简单的匿名上传下载,用系统自带的ftpd即可,要是准备做一个linux或者
freebsd下的多用户高负荷的ftp站,自己不想参与管理却又不找不到熟悉unix的管理
员,同时又需要一些特殊的功能比如sfv校验,wareZ或MovieZ的整理,提取mp3的tag,
等等,那么glftpd就是一个好的选择。
基本安装
很不幸的,现在无法获得glftpd的全部代码,服务器的核心部分以二进制形式发布。这
其中有一个很大的渊源,现在的openftpd,雷电ftpd,glftpd,ioftpd都是从同一个
叫做FTP4ALL的开源程序开发而来,可能还有其他的,这其中可能有一些事情让glftpd
的开发者很不痛快,所以决定暂时的不开放源代码。但你可以获得许多平台的二进制包,
比如linux,freebsd,spac,等等。没有源码会带来一些问题,比如在早期的版本里面
你无法上传超过2G的文件,而其他的ftpd,编译的时候加参数便可支持。但总的来说,
没源码倒让安装简单了不少~
安装很简单,下载,解开,一个install.sh搞定,除了中间创建一个key,其他都很快。
我的经验
本文最后我会附一份我加中文注解的配置档,关于配置也没有什么好多说的,RTFM之后
基本没有问题。
只说一些经验之谈:
- 用组来管理用户。glftpd内建了1到8的flag来标志用户的权限,这不方便和友好,
可以建立诸如管理组,特殊用户组,一般用户组,然后在配置档里限定各种权限。
- 用!/path/to/ip.txt来绑定IP。我个人是认可一人一帐号的方式,不绑IP,这样谁干
了什么看的清楚,而且也没有使用者搬家换IP又要改一次的麻烦,基本上,也没有碰到
帐号被盗或者公用的情况。如果要用单一帐号而限定IP,glftpd里面用命令行可以限定
10个IP地址,可以用通配符,但对大站可能还是不够。
修改这个用户的使用档,IP限定里写!/path/to/ip.txt这样,然后在ip.txt里写,一
行一个IP。
- 善用precheck和postcheck以及其他的脚本。这恐怕是glftpd最大的魅力了,网络上
有相当多的脚本供你使用,你只需要在配置档里指定即可。precheck是上载之前执行
的,比如可以检查文件扩展名什么的,postcheck则是上载之后,比如可以检查文件
大小。当然这些只是小儿科,只需了解$0,$1,$2这几个参数,你可以用你自己喜欢的
语言来写你的脚本。可以参考自带的一个zipscript。可惜,曾经写过的一些脚本都
丢失了,包括一个朋友用php写的可以向一个电影数据库提交信息的程序。
- 善用site命令。这是glftpd的另一大特色了,默认的ftp命令可能不够强,效率也不
高,比如删除大量零碎文件,查找一个文件,在线解压rar卷,等等。同时,要注意
这方面的安全问题。
有关glftpd的性能,我曾经在raid卡加ide硬盘,100M网络环境下,每秒8M的输出,
这包括对校内4-6M/s,对教育网2M/s的输出,30-50用户在线,稳定的开放了一年。
这个负荷其实对于专用的服务器来讲并不算高,我想各种ftpd在性能上应该相差不大,
要是要建几千人在线的站,那就不清楚了。
言尽于此,各位linux老手可能都嫌罗嗦了。不过话说回来,要把glftpd玩个过瘾,
是需要一些unix-clone系统的使用经验的。最近2.0正式版就要出来,恐怕我是没
机会玩了。
附killersftp的配置档(03年8月份的):
##########################################################################
#修改本配置档即时生效,无需重启或者reload服务;kw专用,其他root勿修改
#glftpd.conf
timezone +8
####### 关站但是允许管理组登入 #########
#shutdown 1 =glftpd
####### 关站,不允许任何人登入 #########
#shutdown !*
####### 正常运做,允许任何人登入 #########
shutdown 0
####### 针对某些IP的设定 #########
ifip 10.*71.*
upload * !-anonymous !-ftp *
makedir * !-anonymous !-ftp *
elseip
ifip 10.* 210.32.*
download * !-zju *
elseip
pasv_addr killers.8866.org 1 #浙大用动态IP上,需手工制定pasv地址
endifip
endifip
####### 只允许小于一个byte的文件用ascii模式传输,就是关闭ascii了啦###
#ascii_downloads 1 *.*
####### 站点完整名称,[:space:]是一个空格 #############
sitename_long KillerS[:space:]MovieZ[:space:]Server
####### 站点名缩写 #############################
sitename_short KillerS
# 绑定的IP,全部注释掉则允许任何IP,否则只能选一个!
#valid_ip 10.xx.61.209
#valid_ip 10.xx.61.211
#valid_ip 127.0.0.1
# pasv模式的端口范围
#pasv_ports 30000-33000
# 设置fxp权限
# downloads uploads logging permissions
allow_fxp yes yes yes =glftpd =spl
# 这里允许glftpd组和spl组fxp,并做日志
#替代默认的登入提示。默认的是sitename_long(glftpd version)ready。
login_prompt KillerS[:space:]MovieZ[:space:]Ftp[:space:]Server[:space:]ready.
###### 最高用户,它可以修改其他任何管理员帐号,只能有一个###
master glftpd
email [email protected]
####### glftpd共享内存的ipc_key,跑多个glftpd时才需要设定
#ipc_key 0x01234567
##### FTP服务器的根 / #############################
rootpath /jail/glftpd
# 一些文件和目录,相对于rootpath的位置
datapath /ftp-data
pwd_path /etc/passwd
grp_path /etc/group
#botscript_path /sitebot
welcome_msg /site/incoming/Skating/本站说明.txt -anonymous -ftp -skateop
welcome_msg /ftp-data/misc/welcome.msg *
goodbye_msg /ftp-data/misc/goodbye.msg *
newsfile /ftp-data/misc/newsfile *
banner /ftp-data/misc/banner
#
#bouncer_ip 10.111.154.66
#速度限制 [flags/=groups/-usernames]
speed_limit /* 20000000 0 *
#这里限制所有用户在所有路径下的下载总速20M/s,上载速度无限
#同时传输 max_downloads max_uploads
sim_xfers 80 -1
#这里限制总共最多80个下载进程,无限个上载进程
#保留用户,禁止添加(site useradd)
banned_users root kingway
# 关闭颜色模式 只有flag=5的用户才能看到颜色 ##############
color_mode 0
# 小于8M的文件放到内存中:默认是4M:先测试下看
mmap_amount 1
freefile *.[Nn][Ff][Oo] *.[Tt][Xx][Tt] *.[Zz][Ii][Pp] *.[Mm][Hh][Tt] *.[Ss][Ff][Vv] *
##############################################################################
# SECTION # KEYWORD DIRECTORY SEPARATE CREDITS #
##############################################################################
stat_section DEFAULT * yes
##############################################################################
################## THE RIGHTS SECTION BEGINS HERE ####################
##############################################################################
# (you can use a ! in front of any group/user/flag to negate it) #
# The default is no, you don't need to add "!*" at the end #
# #
# Function Path =GROUP or -username or X (flag) #
##############################################################################
upload /site/incoming/Skating/incoming/* -anonymous -ftp =glftpd
upload /site/incoming/* =upload =glftpd =spl
upload /site/DivxWareZ/* =glftpd -sheal
upload * =glftpd
resume * *
overwrite * =glftpd
makedir /site/incoming/Skating/incoming/* -anonymous -ftp =glftpd
makedir * =glftpd =upload -sheal =spl
download * !=upload *
dirlog * *
rename * =glftpd
filemove * =glftpd
renameown * =glftpd =upload -sheal =spl
nuke * =glftpd
delete * =glftpd
deleteown * =glftpd =upload -sheal =spl
##############################################################################
################### THE RIGHTS SECTION ENDS HERE #####################
##############################################################################
# 禁止文件下载记数,这个记数没有用
file_dl_count 0
# 隐藏文件
hidden_files *.hidden
########### 这个好象没有用 #######################################
#use_dir_size b /
#show_totals *
#show_diz .message
########### 反空闲命令 ##############################################
idle_commands noop pwd cwd* list* pasv syst rest*
########### 空间小于20M时禁止上传 ######################################
free_space 100
# 最多100用户在线,没有豁免用户 !!!!有人在线的时候不要修改本项!!!!!
max_users 100 0
# 最多可添加的用户,限制vip发放
total_users 90
# dupecheck how many days? ignore file case like Windows?
dupe_check 0 no
# 禁止下载未上载完整的文件
dl_incomplete 1
# 禁止下载的文件
noretrieve passwd passwd- group group-
# 最小的家目录:p 不过还是可以直接改passwd跳出这个限制
min_homedir /site
#############################################################################
# character conversions...
#file_names 0 lower [:space:]_
#dir_names 1 none [:space:]_
#############################################################################
#tagline No[:space:]Tagline[:space:]Set
ignore_type *.[tT][xX][tT] *.[nN][fF][oO] [rR][eE][aA][dD][mM][eE] .message
ignore_type *.[sS][fF][vV] *.[cC][rR][cC] *.[dD][iI][zZ]
#############################################################################
#预先检查目录的脚本
#pre_dir_check /bin/dirscript
#
#上载文件前检查文件的脚本
#禁止对DivxWareZ目录做检查
pre_check none /site/DivxWareZ/* *
pre_check none /site/incoming/Skating/*
pre_check /bin/myscript *
#
#上载文件后执行的脚本
post_check none /site/incoming/Skating/*
post_check /bin/jzipscript
#
#执行crc check的文件
calc_crc *.[rR][aA][rR] *.[rR0-9][0-9][0-9]
#
#检查重复的文件
#xdupe *.avi
#############################################################################
############## Location #################### Max number of lines in Display #
oneliners /ftp-data/misc/oneliners 7
requests /ftp-data/misc/requests 10
lastonline /ftp-data/misc/lastonline 10
#############################################################################
############################################################################
# Nukedir_Style:
# 1st. Option [Format: %N = DIR]
# 2nd. Option 0 = Delete ALL, 1 = Save main dir., 2 = Save ALL (UNNUKE)
# 3rd. Option [Byte Size] for nuker to discount.
############################################################################
nukedir_style NUKED-%N 2 50000
empty_nuke 25000
multiplier_max 20
############################################################################
# Private Groups: privgroup GROUPNAME GROUPDESC #
############################################################################
privgroup STAFF My[:space:]Private[:space:]Group
############################################################################
# PRIVPATHS: Directories should be uniquely named (no wildcards) #
############################################################################
#privpath /site/privatedir 1 =STAFF
############################################################################
# CUSTOM SITE COMMANDS #
# site_cmd [CMD NAME] [EXEC/TEXT] [PATH TO FILE] #
############################################################################
#site_cmd RULES TEXT /ftp-data/misc/site.rules
#site_cmd LOCATE EXEC /bin/locate.sh
site_cmd MOVE EXEC /bin/mv
site_cmd MAINTAIN EXEC /bin/maintain
site_cmd FILECOUNT EXEC /ftp-data/logs/filecount.sh
site_cmd UNRAR EXEC /bin/unrar
#site_cmd IPCOUNT TEXT /ftp-data/logs/ftpipcount
#custom-rules =glftpd
#custom-locate =glftpd
custom-move =glftpd
custom-maintain =glftpd
custom-filecount =glftpd
custom-unrar =glftpd =spl =upload
#custom-ipcount =glftpd
-addip =glftpd
-adduser =glftpd
-change =glftpd
-changeflags =glftpd
-changeratio =glftpd
-changesratio =glftpd
-changehomedir =glftpd
-chmod =glftpd
-chgrp =glftpd
-chgrp-priv =glftpd
-chpass =glftpd
-delip =glftpd
-deluser =glftpd
-dirs *
-errlog =glftpd
-flags =glftpd
-gadduser =glftpd
-ginfo =glftpd
-give =glftpd
-group =glftpd
-groups =glftpd
-grpadd =glftpd
-grpdel =glftpd
-grplog =glftpd
-grpnfo =glftpd
-grpren =glftpd
-grpstats =glftpd
-help =glftpd
-info =glftpd
-kick =glftpd
-kill =glftpd
-logins =glftpd
-misc =glftpd
-msg =glftpd
-msg* =glftpd
-msg= =glftpd
-msg{ =glftpd
-nuke =glftpd
-onel =glftpd
-oneladd =glftpd
-predupe =glftpd
-passwd =glftpd =spl
-purge =glftpd
-readd =glftpd
-renuser =glftpd
-reqlog =glftpd
-request =glftpd
-requestadd =glftpd
-show =glftpd
-stat =glftpd
-stats =glftpd
-swho =glftpd
-take =glftpd
-syslog =glftpd
-undupe =glftpd
-unnuke =glftpd
-update =glftpd
-user =glftpd
-users =glftpd
-usercomment =glftpd
-userextra =glftpd
-who =glftpd
-wipe =glftpd
-seen =glftpd
-laston =glftpd
-userothers =glftpd
-traffic =glftpd
####全文完####by####kingway###at###gmail###dot###com#################
|