关于glftpd的一些东东
关于glftpd的一些东东
Section titled “关于glftpd的一些东东”谁要使用glftpd
Section titled “谁要使用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月份的):
Section titled “附killersftp的配置档(03年8月份的):”###########################################################################修改本配置档即时生效,无需重启或者reload服务;kw专用,其他root勿修改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地址 endifipendifip
####### 只允许小于一个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 permissionsallow_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-datapwd_path /etc/passwdgrp_path /etc/group#botscript_path /sitebotwelcome_msg /site/incoming/Skating/本站说明.txt -anonymous -ftp -skateopwelcome_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_uploadssim_xfers 80 -1#这里限制总共最多80个下载进程,无限个上载进程
#保留用户,禁止添加(site useradd)banned_users root kingway
# 关闭颜色模式 只有flag=5的用户才能看到颜色 ##############color_mode 0
# 小于8M的文件放到内存中:默认是4M:先测试下看mmap_amount 1freefile *.[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 =glftpdupload /site/incoming/* =upload =glftpd =splupload /site/DivxWareZ/* =glftpd -shealupload * =glftpdresume * *overwrite * =glftpdmakedir /site/incoming/Skating/incoming/* -anonymous -ftp =glftpdmakedir * =glftpd =upload -sheal =spldownload * !=upload *dirlog * *rename * =glftpdfilemove * =glftpdrenameown * =glftpd =upload -sheal =splnuke * =glftpddelete * =glftpddeleteown * =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] .messageignore_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 7requests /ftp-data/misc/requests 10lastonline /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 25000multiplier_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.shsite_cmd MOVE EXEC /bin/mvsite_cmd MAINTAIN EXEC /bin/maintainsite_cmd FILECOUNT EXEC /ftp-data/logs/filecount.shsite_cmd UNRAR EXEC /bin/unrar#site_cmd IPCOUNT TEXT /ftp-data/logs/ftpipcount
#custom-rules =glftpd#custom-locate =glftpdcustom-move =glftpdcustom-maintain =glftpdcustom-filecount =glftpdcustom-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#################
k68.org @ 2004
Copyright © 2004-2025 WL