[Pure-ftp] readme

看板FreeBSD作者時間21年前 (2004/10/12 10:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
因為真的很窮,所以靠這篇賺錢,若有人捐錢給我更好。 因為英文很爛,看了還不一定對,如果有錯請大力指正。 因為程度不好,有的根本看不懂,請會的幫忙解釋一下。 因為不是很熟,有重點若沒提到,請熟的幫忙補充一下。 ------------------------ 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
文章代碼(AID): #11Qq8f00 (FreeBSD)
文章代碼(AID): #11Qq8f00 (FreeBSD)