2010年6月3日 星期四

[教學] pure-ftpd 安裝組態設定

pure-ftpd 安裝組態設定

$ /usr/ports/ftp/pure-ftpd

先下載 source 及套用 patch

$ make patch

修正中文(許功蓋)的問題
轉載自 http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/pure-ftpd.html

修改 /usr/ports/ftp/pure-ftpd/work/pure-ftpd-1.0.20/src/ftpd.c

搜尋
代碼:
while (*namepnt != 0) {
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;

改成 (即加上紅色的字)
代碼:
while (*namepnt != 0) {
#if 0
if (ISCTRLCODE(*namepnt) || *namepnt == '\\') {
return -1;
}
#endif
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;


讓 log 中直接顯示中文....不再經過編碼
轉載自 http://bbs.openfind.com.tw/cgi-bin/x_list?VAL=2174780829&BOARD=tw.bbs.comp.386bsd&DISPLEN=15&NO=17

修改 altlog.c
搜尋
代碼:
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}


改成
代碼:
/*
if ((quoted_filename = urlencode(filename)) == NULL) {
return -1;
}*/
quoted_filename = filename;


開始安裝,加上繁體中文(訊息)支援

$ make WITH_LANG=traditional-chinese install clean

代碼:
┌───────────────────────────────────┐
│ Options for pure-ftpd 1.0.20_1 │
│ ┌────────────────────────────────┐ │
│ │ [ ] LDAP Support for users in LDAP directories │ │
│ │ [ ] MYSQL Support for users in MySQL database │ │
│ │ [X] PAM Support for PAM authentication │ │
│ │ [ ] PGSQL Support for users in PostgreSQL database │ │
│ │ [ ] PRIVSEP Enable privilege separation │ │
│ │ [X] PERUSERLIMITS Per-user concurrency limits │ │
│ │ [X] THROTTLING Bandwidth throttling │ │
│ │ │ │
├─└───────────────────────────────┘─┤
│ [ OK ] Cancel │
└───────────────────────────────────┘


1. 組態 /usr/local/etc/pure-ftpd.conf
代碼:
# 使用者被鎖在登入的目錄中,不能切換到上一層
ChrootEveryone yes

# 同時可連線的人數
MaxClientsNumber 5

# 每一個來源 IP 同時可連線
MaxClientsPerIP 2

# 不顯示以 . 為啟始檔名的檔案
DisplayDotFiles no

# 不允許暱名登入
AnonymousOnly no
NoAnonymous no

# syslogd 中的 log 對象
SyslogFacility ftp

# 不反查 ip
DontResolve yes

# 發呆 15 分鐘後,自動斷線
MaxIdleTime 15

# 儲存 virtual user 的帳號、密碼檔 (通常路徑會定在與組態檔同一個目錄)
PureDB /usr/local/etc/pureftpd.pdb
--login=puredb:/usr/local/etc/pureftpd.pdb

LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4

# 指定 Passive mode 所使用的埠號範圍
PassivePortRange 40000 40100

# 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用)
# 此處的 IP 是 FTP Server 的對外 IP
ForcePassiveIP 61.62.128.140

#
AntiWarez yes

# FTP Server 的服務埠號 (如 Server 上有多張網卡,逗號前面可指定要服務的 IP)
Bind ,2100

# 檔案遮罩 (檔案:目錄)
Umask 133:022

# 可登入 FTP Server 的最小 UID
MinUID 100

# 是否允許使用 FXP Protocol
AllowUserFXP no
AllowAnonymousFXP no

# 是否允許讀寫以一點為啟始檔名的檔案
ProhibitDotFilesWrite no
ProhibitDotFilesRead no

# 是否允許檔案自動更名
AutoRename no

# 是否允許暱名登入者上傳檔案
AnonymousCantUpload no

# 最大的磁碟使用量
MaxDiskUsage 99

#
CustomerProof yes

#
PerUserLimits 1

2. 組態 /etc/syslog.conf,讓 FTP Server 的 log 獨立於 syslog

2.1
找到 /var/log/messages 的那一行
在前一行加入
代碼:
ftp.* /var/log/ftplog

2.2
新增一個空白 log 檔

$ touch /var/log/ftplog

2.3
重新啟動 syslogd (重新讀取組態檔)

$ killall -HUP syslogd

3. 在系統中新增一個 FTP 帳號一個 FTP 群組給 virtual users 使用

$ pw group add FTP -g 5001
$ pw user add FTP -u 5001 -c FTP_USERS -d /nonexistent -s /nonexistent

4. 新增 virtual user

$ pure-pw useradd ftp001 -u FTP -g FTP -d /ftp/root/folder/for/ftp001/here -m
$ pure-pw useradd ftp002 -u FTP -g FTP -d /ftp/root/folder/for/ftp002/here -m

代碼:
useradd:新增一位使用者
-u:uid
-g:gid
-d:登錄後的根目錄
-m:即刻更新使用者資料檔


5. 列出 pure-ftpd 資料庫中的所有帳號

$ pure-pw list


6. 列出某一位使用者 (ftp001) 的所有設定

$ pure-pw show ftp001


7. 為某一位使用者加上下載檔案的頻寬限制

$ pure-pw usermod ftp001 -t 20 -T 100 -m

代碼:
usermod:修改已存在使用者的設定
-t:從 Server 下載檔案的頻寬限制 (單位KB/s)
-T:上傳檔案到 Server 的頻寬限制 (單位KB/s)
-m:即刻更新使用者資料檔

摘自:http://www.backup.idv.tw/viewtopic.php?t=1294

沒有留言:

wibiya widget