twbsd.org
 
  Select Language: Home  SmbFTPD Forum 
SmbFTPD
Forum -> SmbFTPD
一些功能性的問題!
deep -
王先生 您好,
個人任職於一間頗為知名的網路服務公司內的資訊部 ~
最近上級給了一個任務,要在 centos 架一個 FTP Server ~
於是我馬上聯想到之前在研究所時愛用的 FTP Sever(SmbFTPD)
但是有幾個需求無法達到 ~ 內容如下:

a.限制單檔大小
b.限制檔案類型(如:exe,cmd,bat…)
c.Virtual Chroot

會在這裡提問並不是要您開發新的功能,
而是想請問是否有什麼方式可以達成?
不論是 smbftpd 本身的功能 or 是使用輔助方式都行!
希望您能給個不錯建議 ~

最後若上級評估 FTP Sever 之後,
決定使用 SmbFTPD,我會寫信告知您這個消息 ~
Alex -
您的需求都必須改程式才做得到......

1. 限制上傳單一檔案大小, 修改 cmd/cmd_store.c, 在 receive_data_binary_mode(), for loop 中判斷 byte_count 是否已到上限
2. 禁止上傳特殊副檔名, 修改 cmd/cmd_store.c, 在 cmd_store(), 一開頭判斷 name 是不是有那些副檔名
3. Virtual chroot....不知道這指的是什麼?
deep -
不好意思 ~ 沒有特別解釋
您的回答已經很完善了 ~

virtual chroot
假設:
ftp_user_1 的 chroot 在他的家目錄 ~ /home/ftp_user_1

這裡產生一個連結指到他的家目錄
"ln -s /var/ftp/upload /home/ftp_user_1"

不過由於 chroot 已設定,所以肯定是看不到 "連結捷徑"

我有想到一個方法可以解決:(如下)
"mount --bind /var/ftp/upload /home/ftp_user_1"

謝謝指教~
deep -
for (len = cnt, bp = buf; len > 0;) {
cnt = write(fileno(outstr), bp, len);
.
.
.
            
if (byte_count > 10485760) /* 我加這一行,好像沒有效果 */
break;
}

請問這樣是否有錯誤呢?
謝謝!
alex -
for (len = cnt, bp = buf; len > 0;) {
            cnt = write(fileno(outstr), bp, len);
            if (sigurg_received()) {
                if (check_oob()) {
                    return -1;
                }
            } else if (cnt < 0)
                goto file_err;
            if (cnt == 0)
                continue;
            len -= cnt;
            bp += cnt;
            byte_count += cnt;
            if (byte_count > 10485760) {
                reply(452, "Error writing to file: file is too big.");
                return -1;
            }
        }

Copyright © 2002-2024 Alex Wang from www.twbsd.org. All rights reserved.