看板FreeBSD
标 题[Pure-ftp] readme
发信站无名小站 (Tue Oct 12 10:26:03 2004)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!wretch
因为真的很穷,所以靠这篇赚钱,若有人捐钱给我更好。
因为英文很烂,看了还不一定对,如果有错请大力指正。
因为程度不好,有的根本看不懂,请会的帮忙解释一下。
因为不是很熟,有重点若没提到,请熟的帮忙补充一下。
------------------------ ADVANCED COMPILATION ------------------------
/--------------------
"--with-" switches
--------------------/
--with-altlog
除了本来的 syslog 格式,还支援特殊 log 输出格式
--with-brokenrealpath
Solaris 路径出问题时,重编所需加的参数
--with-certfile=<file>
支援凭证档,/etc/ssl/private/pure-ftpd.pem
--with-cookie
使用者进站看到的东西,类似进站画面
--with-diraliases
support directory aliases
--with-everything =_=
--with-extauth
支援外部凭证模组
--with-ftpwho
支援'pure-ftpwho'指令来看线上使用者,像是 Serv-u 的线上状态
--with-language=english
--with-language=german
--with-language=romanian
--with-language=french
--with-language=polish
--with-language=spanish
--with-language=danish
--with-language=italian
--with-language=brazilian-portuguese
--with-language=slovak
--with-language=dutch
--with-language=korean
--with-language=swedish
--with-language=norwegian
--with-language=russian
--with-language=traditional-chinese
--with-language=simplified-chinese
--with-language=hungarian
--with-language=catalan
--with-language=czech
预设语言是英文
--with-largefile
支援下载大於 2G 的单一档案
--with-ldap
支援 LDAP,如果已经有安装 OpenLDAP 则改成--with-ldap=<directory> syntax
--with-minimal
最小安装,需 GCC 3.3以上,如果是嵌入式系统所需,
可加入--without-globbing 让它更小
--with-mysql
支援 MySQL,如果安装在自订位置,则用--with-mysql=<directory> syntax
--with-nonroot
不需root权限,一般user即可启动ftpd
--with-pam
支援可插入认证模组
--with-paranoidmsg
隐藏 login 失败的真正讯息,只显示有错误
--with-peruserlimits
限制同一时间之使用者连线数
--with-pgsql
支援 Postgres SQL,如果安装在自订位置,则用--with-pgsql=<directory> syntax
--with-probe-random-dev
提供乱数,可在编译时即时侦测档案,适用於 Solaris 和 QNX
--with-puredb
支援与系统使用者帐号独立的虚拟使用者帐号
--with-quotas
支援虚拟配额
--with-ratios
支援上下传比例
--with-sysquotas
支援系统配额
--with-throttling
支援频宽限制
--with-uploadscript
支援一个档案被完整上传完後自动呼叫某一 script 去对这个档案处理
--with-virtualchroot
支援虚拟目录
--with-virtualhosts
支援虚拟主机
--with-welcomemsg
支援读其他主机的 welcome.msg 档,因为可能有漏洞,Pure-ftpd 使用 .banner 档
--with-boring
display "professionnal-looking" messages
--with-privsep
enable privilege separation
--withrendez-vous
支援 MacOS X 的指定路径
/-----------------------
"--without-" switches
-----------------------/
--without-ascii
不支援7-bits transfers ASCII,不适用於 Windows 的 scripts 和 HTML 档
--without-banner
不显示初始标题
--without-capabilities
忽略存取权力函数
--without-globbing
不包函全域,ls *.rpm 将不会被显示
--without-humor
(谜)
--without-inetd
如果总是在 standalone-mode,请服用,但请不要同时用--without-inetd
和 --without-standalone
--without-iplogging
不记录 IP 地址来保护机密
--without-nonalnum
支援非数字与字元的符号
--without-unicode
支援拉丁语系
--without-sendfile
不使用 sendfile 来做最佳化,因为在做 Samba 时可能会出错
--without-shadow
忽略 shadow 码
--without-standalone
不使用独立模式
--without-usernames
目录不显示使用者及群组名称,仅显示 UIDs 和 GIDs
--prefix=
改变安装目录
------------------------ STANDALONE INSTALLATION ------------------------
/usr/local/sbin/pure-ftpd -S 42
/usr/local/sbin/pure-ftpd -S 192.168.0.42,21
改 port
/usr/local/sbin/pure-ftpd -c 50 &
/usr/local/sbin/pure-ftpd -S ftp.rtchat.com,21 -c 50 &
同一时间最大连线数
ps auxw|grep pure-ftpd
root 15211 0.1 0.3 1276 452 ? S 13:53 0:00 pure-ftpd [SERVER]
root 15212 0.1 0.5 1340 672 ? S 13:54 0:00 pure-ftpd [IDLE]
root 15214 0.0 0.5 1340 672 ? S 13:56 0:00 pure-ftpd [DOWNLOADING]
[SERVER] is the main server
[IDLE] shows a client with no transfer activity
[DOWNLOADING] shows a client downloading a file
[UPLOADING] show a client uploading a file
------------------------ SUPER-SERVER INSTALLATION ------------------------
**** Usage with Inetd ****
如果很注重安全性的话,还是不要用 inetd。在预设的情况下,
如果特定 port 的连线率太高,inetd 将会停止服务,而且 inetd 也比较没有限制,
即使已经有限制连线数,恶意的使用者仍然可以塞满你的记忆体和符号表。
1) Check that inetd is up:
ps auxw | grep inetd
root 3699 0.0 0.3 1072 492 ? S 15:47 0:00 inetd
2) Edit /etc/inetd.conf and look for a line like:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd
The line may also end with "proftpd" or "wuftpd", but it should start with
"ftp stream tcp".
3) Replace that line with the following one:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/pure-ftpd
If /usr/sbin/tcpd is missing on your system, try the following line instead:
ftp stream tcp nowait root /usr/local/sbin/pure-ftpd pure-ftpd
4) Restart the inetd daemon:
killall -HUP inetd
If 'killall' is missing on your system, try this:
kill -HUP $(cat /var/run/inetd.pid)
------------------------------ OPTIONS --------------------------------
-0
当上传相同档名之档案时,会先将上传之档案放在 tmp 里,等上传完成时,
再自动把旧档更换成新档
-1
记录每一连线的 PID 到 syslog
-4
只监听 IPv4 连线
-6
只监听 IPv6 连线
-a <gid>
设计给系统使用者,让相同 GID 的成员可以存取,不适用於虚拟使用者
'root' (uid 0)拥有全部档案的存取权
-A
除了 root 外,每个使用者都可更改目录
-b
忽略 RFC 标准来让 NAT/Firewall 後的 client 连线
-B
让独立的伺服器在背景启动 (daemon)
-c <number of clients>
最多可有几个 client
-C <max connection per ip>
限制同一 IP 之最大连线数
-d
送除错讯息到 syslog
-D
列出以.为开头的档案
-e
只允许匿名使用者
-E
只允许通过认证者
-f <facility>
Use that facility for syslog logging. Logging can be disabled with '-f none'
-F <fortune file>
支援登入画面,当然要先编辑一文字档<fortune file>
-g <pid file>
在独立主机模式下改变 pid 档的位置,预设是 /var/run/pure-ftpd.pid
-G
不允许重新更名
-H
预设完整的主机名称会被记录下来,使用 -H 参数则不进行 DNS 反解,
可以提高连线数目及减少频宽使用量
-i
不允许匿名使用者上传,不论目录的权限为何
-I <timeout>
改变最大的 idle 时间,单位是每分,预设15分钟
-j
自动建立使用者家目录
-k <percentage>
当硬碟空间到 <percentage> 时,不允许上传
-K
允许档案续传及覆写,但不允许删除或更名,如果是空目录则允许删除
-l <authentication> or -l <authentication>:<config file>
新增认证规则
-L <max files>:<max depth>
避免恶意攻击,将不会显示超过 2000 个档案及第五层以後的子目录
如要更改限制则可用 -L
-m <cpu load>
当 CPU 负载超过一定限度时,不允许匿名使用者下载
-M
允许匿名使用者建立目录
-n <max files>:<max size>
限制虚拟配额的档案数及大小(MB)
-N
当 FTP 主机架在 NAT 後,而外面无法正常连线时启用
-o
把要上传的档案写入 /var/run/pure-ftpd.upload.pipe
当然你要有一支 pure-uploadscript 的程式
-O <format>:<log file>
把所有档案传输的记录写入<log file>,格式则有 CLF Stats W3C xferlog 等四种
-O clf:/var/log/pureftpd.log
以 CLF 档案格式记录在 /var/log/pureftpd.log (CLF 是 apache 预设格式)
-O stats:/var/log/pureftpd.log
<date> <session id> <user> <ip> <U or D> <size> <duration> <file>
-p <first port>:<last port>
只使用这区间的 port
-P <ip address or host name>
强迫指定的 IP 回覆 PASV/EPSV/SPSV 命令
-q <upload ratio>:<download ratio>
匿名使用者的上传下载比
-Q <upload ratio>:<download ratio>
全部使用者的上传下载比 (root 除外)
-r
不覆写已经存在的档案,当档名相同时会自动更名为 xyz, xyz.1, xyz.2
make AUTORENAME_REVERSE_ORDER=1
不覆写已经存在的档案,当档名相同时会自动更名为 xyz, 1.xyz, 2.xyz, 3.xyz
-R
不允许使用者使用 chmod 指令,root 不在此限
-s
不允许匿名使用者下载 ftp 拥有的档案(如其他人上传的档案),
直到管理者变更拥有权限
-S [<ip address>,|<hostname>,] [<port>|<service name>]
只对独立主机有影响,可接受指定的 IP、port、IPv4、IPv6
-T <bandwidth>' and '-t <bandwidth>
限制上传、下载频宽(KB/s)
-u <uid>
不允许低於 <uid> 的使用者登入,如 -u 1 不允许 root 登入
-U <umask for files>:<umask for dirs>
改变建立档案和目录的 mask,预设是 133:022
-V <ip address>
允许区域内 IP 以非匿名使用者存取档案,其他 IP 只能匿名存取
-v <name>
设定 MacOS X 的服务名称
-w
只对通过认证的使用者支援 FXP protocol。FXP 也支援 IPv4 和 IPv6
-W
支援 FXP protocol。允许远端伺服器不要求 client 端传输档案
FXP 是个不安全的 protocol,可以开放给内部,但不要开放给外面的使用者
-x
一般模式下,通过认证的使用者可以读、写开头为 . 的档案,匿名使用者不行,
加上 -x 参数後,通过认证的使用者可以下载 dot 档,但不能覆写或建立 dot 档,
如果要用的话要另外以符号连结来使用
-X
一般模式下,通过认证的使用者可以读、写开头为 . 的档案,匿名使用者不行,
加上 -X 参数後,通过认证的使用者将无法读取 dot 档
-y <max user logins>:<max anonymous logins>
编译时有加入 --with-peruserlimits 才能启用,
限制最大使用者登入数及匿名使用者登入数,0 则表不限制
/usr/local/sbin/pure-ftpd -y 3:20 -c 15 -C 5 -B
最多连线数 15
同一 IP 最高连线数 5
同一使用者最高连线数 3
匿名使用者最高连线数 20
-Y 0
关闭 SSL/TLS 加密
-Y 1
接受标准和加密连线
-Y 2
拒绝非使用 SSL/TLS 加密的连线,即使匿名连线也是,
编译时有加入 --with-tls 才能启用
-z
允许匿名使用者读取开头为 . 的档案和目录
-Z
防止使用者使用错误的 chmod 指令
------------------------ SETTING UP AN ANONYMOUS FTP ------------------------
当 ftp 帐号与家目录都存在时,将允许匿名登入,不过仅允许上传
------------------------ DISPLAYING BANNERS ------------------------
可借由 .banner 来修改登入画面,不过不能超过 4000 bytes,否则将不显示
每一目录都可有一 .message 档来显示重要资讯
------------------------ DISPLAYING A COOKIE -----------------------
借由 cookie 来随机显示登入欢迎讯息,前提是有安装 fortune
------------------------ PER-USER CHROOT() RULES ------------------------
mimi:x:501:100:Mimi:/home/mimi:/bin/zsh
mimi:x:501:100:Mimi:/home/mimi/./:/bin/zsh
多加了 . 以後就只能登入自己家目录下的子目录
mimi:x:501:100:Mimi:/home/mimi/./public_html:/bin/zsh
当 Mimi 登入时因为 chroot("/home/mimi") 所以只能看到自己家目录
因为 chdir("public_html") 所以预设目录是 public_html
------------------------ RATIOS ------------------------
-q 2:5
至少上传 2M 以後才可以下载,可下载 5M
-Q 2:5
全部使用者至少上传 2M 以後才可以下载,可下载 5M
------------------------ BANDWIDTH THROTTLING ------------------------
/usr/local/sbin/pure-ftpd -t 64
上传下载皆不超过 64 KB/sec
/usr/local/sbin/pure-ftpd -t 256:64
上传 256 KB/sec,下载 64 KB/sec
/usr/local/sbin/pure-ftpd -t 256:
上传 256 KB/sec,下载不限
/usr/local/sbin/pure-ftpd -t:64
不限上传,下载 64 KB/sec
------------------------ VIRTUAL SERVERS ------------------------
mkdir /etc/pure-ftpd
ln -s /home/customers/rtchat.com/ftp /etc/pure-ftpd/216.226.17.77
ln -s /home/customers/c9x.org/ftp /etc/pure-ftpd/212.73.209.252
为了新增 FTP 主机,需把虚拟目录与虚拟 IP 做符号连结
--------------------- LOGGING ---------------------
登入将会被 syslog 记录,可用 -f none 来取消记录
若想把记录独立出来到 /var/log/ftp,可更改 /etc/syslog.conf 的
ftp.* /var/log/ftp
再重跑 syslogd 即可
killall -HUP syslogd
--------------------- WATCHING CURRENT SESSIONS ---------------------
使用 pure-ftpwho 指令来观察连线情形,如果显示无指令,
那麽请将 /usr/local/sbin 加入路径设定里
+------+---------+-------+------+-------------------------------------------+
| PID | Login |For/Spd| What | File/IP |
+------+---------+-------+------+-------------------------------------------+
| 2239 | jedi | 00:17 | D/L | XFree86-clients-4.0.3.tar.gz |
| '' | '' | 41K/s| 33% | -> nestea.funboard.de |
+------+---------+-------+------+-------------------------------------------+
| 2385 | ftp | 00:02 | IDLE | |
| '' | '' | | | -> gw2.crn.kjop.co.uk |
+------+---------+-------+------+-------------------------------------------+
D/L 指 download U/L 指 upload
-c
CGI 界面
-h
参数摘要
-n
不要反解 DN,仅显示 IP 来加快速度
-s
以 shell script 来输出格式
-w
输出完整网页
-W
输出精简版网页
-x
XML 格式输出
-v
以文字模式输出
------------------------ AFTER AN UPLOAD ------------------------
可以写一个 shell script,当档案上传完後 mail 通知有新档案或是其他,
编译时需有--with-uploadscript,必须先启动 pure-ftpd 再启动 shell script
/usr/local/sbin/pure-uploadscript -r /bin/antivirus.sh
- UPLOAD_SIZE : 档案大小,in bytes.
- UPLOAD_PERMS : 权限,八进位值
- UPLOAD_UID : 拥有者的 UID
- UPLOAD_GID : 档案的 GID
- UPLOAD_USER : 拥有者的名称
- UPLOAD_GROUP : 群组的名称
- UPLOAD_VUSER : 使用者或虚拟使用者的全名
------------------------ VIRTUAL QUOTAS ------------------------
.ftpquota 限制上传档案数及大小
pure-quotacheck -u username/uid -d home directory [-g group/gid]
pure-quotacheck -u ftpusers -d /home/ftpusers/john
/usr/local/sbin/pure-ftpd -n 1000:10
所有使用者最多可上传1000个档案,档案大小不超过10MB
一般配额限制是达到上限时即无法上传,Virtual Quotas 可让使用者知道配额将满,
以便做相对应的动作
------------------------ AUTHENTICATION ------------------------
/usr/local/sbin/pure-ftpd -l unix
使用 unix 认证
/usr/local/sbin/pure-ftpd -l pam
使用 PAM 认证
/usr/local/sbin/pure-ftpd -l puredb:/path/to/puredb_database
使用 puredb 认证
/usr/local/sbin/pure-ftpd -l ldap:/path/to/ldap_config_file
使用 LDAP 认证
/usr/local/sbin/pure-ftpd -l mysql:/path/to/mysql_config_file
使用 MySQL 认证
/usr/local/sbin/pure-ftpd -l pgsql:/path/to/postgres_config_file
使用 Postgres databases 认证
/usr/local/sbin/pure-ftpd -l extauth:/path/to/authd/socket
使用外部认证
/usr/local/sbin/pure-ftpd -lldap:/etc/pureftpd-ldap.conf \
-lpuredb:/etc/pureftpd.pdb -lunix
一次使用多个认证
------------------------ DIRECTORY ALIASES ------------------------
目录别名而非目录连结,需建立 /etc/pureftpd-dir-aliases 档案,格式如下
pictures
/usr/misc/pictures
# This is for the OpenBSD port tree
pureftpd-port
/usr/ports/net/pure-ftpd
第一行是别名,第二行是实际位置,如要注解请加 #,以空白行来区分
------------------------ PRIVILEGE SEPARATION ------------------------
特权分化,每一连线都被划分为特权处理或客户处理
当 root 执行的程式与客户端相悖时,客户端将被取消所有特权
------------------------ OPTIMIZING FOR HIGH LOAD ------------------------
高负载最佳化
env CFLAGS="-O2 -fomit-frame-pointer -fgcse -Os"
./configure --with-minimal --without-inetd --without-pam make install-strip
在独立主机启动,不限制同一 IP 连线数(-C)、不启用 pure-ftpwho、
pure-uploadscript(-o)、per-user limits(-y)、
关闭输出 syslog 和 DNS lookups、 # /usr/local/sbin/pure-ftpd -f none -H
在 /etc/fstab 的所有档案系统加入 ",noatime"、
在 /boot/loader.conf 加上
hw.ata.wc="1"
kern.ipc.nmbclusters="60000"
在 /etc/sysctl.conf 加上
vfs.vmiodirenable=1
kern.ipc.maxsockbuf=2097152
kern.ipc.somaxconn=8192
kern.ipc.maxsockets=16424
kern.maxfiles=65536
kern.maxfilesperproc=32768
net.inet.tcp.rfc1323=1
net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
------------------------ KNOWN ISSUES ------------------------
在非 Linux 系统,-c 参数仅适用於独立主机模式
- You should always avoid the use of spaces in login names: applications
that are parsing log files often choke on this (谜)
不完整的传输将不会记录
在 Solaris 8,无法同时支援超过 2G 的档案及虚拟目录
- On Solaris, to get chroot to work with pure-ftpd you need a dev directory
in your new rootdir with these:
crw-rw-rw- 1 root other 11, 42 Dec 10 15:02 tcp
crw-rw-rw- 1 root other 105, 1 Dec 10 15:02 ticotsord
crw-rw-rw- 1 root other 11, 41 Dec 10 15:03 udp
crw-rw-rw- 1 root other 13, 12 Dec 10 15:03 zero
else you get this
ftp> ls
425 Can't create the data socket: Bad file number.
If all your users are chrooted, you have to create these files in every home
directory. Here's how:
mkdir dev
mknod dev/tcp c 11 42
chmod 0666 dev/tcp
mknod dev/udp c 11 41
mknod dev/zero c 13 12
mknod dev/ticotsord c 105 1
(谜)
拒绝 ASCII 续传,因为会同时消耗伺服器与客服端的 CPU,且会消耗较多的频宽,
但是允许客服端上传去除 ^M 符号的 script 到伺服器上。
在 Pure-FTPd,ASCII 传输被视为工具,但有意的不允许续传,
因为会同时消耗伺服器与客服端的 CPU,且会消耗较多的频宽。
另一个重点是当 RFC 描述了 ASCII 续传的方法,但许多人却用另一种,
所以整个都乱套了,这也是为什麽 Pure-FTPd 拒绝 ASCII 续传,
假如有人告知无法上传、下载部份的 ASCII 档,请叫他移除後重传。
--
http://www.pureftpd.org/README
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已相簿 http://www.wretch.twbbs.org/album 有布景主题 速度很快於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将知止知 218-162-168-244.dynamic.hinet.net海