[Pure-ftp] readme
因為真的很窮,所以靠這篇賺錢,若有人捐錢給我更好。
因為英文很爛,看了還不一定對,如果有錯請大力指正。
因為程度不好,有的根本看不懂,請會的幫忙解釋一下。
因為不是很熟,有重點若沒提到,請熟的幫忙補充一下。
------------------------ 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海
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章