作者falcon (falken)
看板Windows
標題[問題] Windows 上架設的 FTP 伺服器問題
時間Mon Jul 15 03:41:46 2024
使用 vsftpd 架設 FTP 伺服器
環境為 Podman on Windows
之所以使用容化是為了方便管理
只需兩個步驟就能啟動或關閉所有伺服器端程式
不想在實體機上執行一堆常駐背景的程式
先附上 Docker Compose 檔案內容
```yaml
version: "3"
services:
vsftpd:
image: fauria/vsftpd
container_name: vsftpd
environment:
- FTP_USER=username
- FTP_PASS=password
restart: always
ports:
- 20:20
- 21:21
- 21100-21110:21100-21110
volumes:
- ./home:/home/vsftpd
- ./logs:/var/log/vsftpd
```
首先是客戶端問題
在 Windows 主機中使用檔案總管開啟 ftp://127.0.0.1 時發生 FTP 資料夾錯誤
在其他裝置 Android 中使用 MiXplorer 開啟 ftp://電腦名稱 則沒有問題
**Windows 檔案總管錯誤訊息**
```
關啟FTP伺服器的資料夾時發生錯誤。請確定您有存取這個資料夾的權限。
詳細資料:
200 Switching to ASCII mode.
227 Entering Passive Mode (10,89,8,1,82,112).
```
嘗試了網路上查到的方法
關閉「使用被動 FTP(以與防火牆及 DSL 數據機相容)」
結果無效
第二個問題則是要如何將其他目錄或磁碟區掛載到 FTP 根目錄下的子資料夾
vsftpd 似乎本身不支援為同一使用者指定多個目錄
於是我嘗試過了兩種方式
在 FTP 根目錄下建立了
- 掛接目標磁碟區的資料夾
- 目標目錄的符號連結
https://i.imgur.com/v4TTAUZ.png
在 Android 使用 MiXplorer 開啟 ftp://電腦名稱
點開前者內容為空
點進後者彈出錯誤訊息 "Failed to change directory."
請鄉民大大們幫忙解惑
--
Sent from
PTTopia
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.196.178 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Windows/M.1720986108.A.382.html
※ 編輯: falcon (39.9.196.178 臺灣), 07/15/2024 03:51:28
1F:→ smallreader: 內建的SMB不好用嗎~07/15 04:08
映像中是遇到路徑字元問題才統一改用 ftp
好像是某個 Android 上的 App
存取長 Unicode 路徑的檔案會失敗
詳細情形已經忘了…
※ 編輯: falcon (39.9.196.178 臺灣), 07/15/2024 04:33:01
問題二找到解法了
volumes:
- ./logs:/var/log/vsftpd
- ./home:/home/vsftpd
- /mnt/d/Media:/home/vsftpd/username/Media
- /mnt/f:/home/vsftpd/username/ExternalMedia
我發現當卦載來源如果是根目錄時
由於其中存在 $RECYCLE.BIN 這個系統資料夾
它不會被忽略,容器的 LOG 會有一連串與其子目錄相關的沒有權限訊息
chown: cannot read directory '/home/vsftpd/username/f/$RECYCLE.BIN/...':
Permission denied
不知道是不是因此影響 FTP 啟動時間?
之前耐心不夠還以為失敗了
現在大問題只剩 Windows 檔案總管為何無法開啟 FTP 根目錄
※ 編輯: falcon (39.9.196.178 臺灣), 07/16/2024 01:00:14