↓ 快轉到主要內容
用docker架FTP vsftpd on docker
技術文章Docker

用docker架FTP vsftpd on docker

Posted by Alvin Chen on

用docker架FTP vsftpd on docker

·1005 字·3 分鐘
作者
Alvin Chen
相信寫 Code 可以改變世界

用docker架FTP vsftpd on docker
#

如果你需要很迅速的架起一個FTP伺服器,docker確實是個很好的方式

一條指令就完成伺服器建立以及使用者設定

這次遇到的狀況是公司換了新的NAS之後,原本NAS上的FTP卻無法讓傳真機連接

原本公司的傳真機跟印表機都可以連線到NAS,收到傳真後直接透過SMB的方式將檔案轉存,印表機也是可以直接掃描儲存到NAS上

而這次更換了NAS硬體後印表機的部分連線沒有問題,傳真機卻掛了

SMB無法認證,FTP無法建立檔案,經過了一天從設定值中找不到任何解法後我決定轉用docker試著來處理這個問題

概念是 : 透過QNAP的docker station架設FTP後將原本儲存傳真的資料夾綁定到docker FTP的根目錄中

參考連結 :

https://hub.docker.com/r/fauria/vsftpd/

https://www.5yun.org/17060.html

https://devanswers.co/vsftp-default-permissions-uploaded-files-folders-600/

如果你還沒有閱讀過以下文章,請先閱讀

MAC安裝docker

Reverse Proxy on Nginx docker 使用QNAP Container Station

1. vsftpd docker參數設定
#

vsftp有許多可設定的參數,先整理幾個比較重要的參數

參數用途預設值
FTP_USER可登入使用者亂數
FTP_PASS登入使用者密碼亂數
PASV_MIN_PORT被動模式port最小值21100
PASV_MAX_PORT被動模式port最大值21110
LOCAL_UMASK檔案權限遮罩077

上面幾個參數是本次設定有用到的,其他參數可以上docker hub參考描述

2. 啟動FTP
#

所以,基於以上幾個參數我們就可以很輕易地透過下列使令來啟動FTP

docker run -p 21:21 -e FTP_USER=fax -e FTP_PASS=fax -v /share/fax:/home/vsftpd/fax --name vsftpd fauria/vsftpd

指令的部分跟containser station的畫面我就不再截圖說明,-v 就是container station中的共用資料夾,-e 就是container station中的環境變數,而-p 則可以在命令中直接設定

另外,值得一提的是 -v參數,/home/vsftpd/ 資料夾是vsftp給使用者的預設根目錄,但是在這層目錄下還會區分不同的使用者,因此fax使用者的根目錄就是 /home/vsftpd/fax,所以我們必須把這個資料夾映射到原本儲存傳真資料的資料夾中

就這樣子,傳真機已經順利連線到這個新架設好的FTP上,並且順利將檔案存入,但是緊接著問題還是來了

3. 設定檔案權限
#

按照以上設定好的方式,上傳的所有檔案權限都會是600,導致除了admin管理員以外其他NAS上的使用這會沒有辦法存取檔案

當然如果你只有給個人使用那有枚有這樣子的問提,要解決這個問題就必須將上傳的檔案權限修改為755才能讓其他非擁有者也可以存取

所以,我們講指令改成以下

docker run -p 21:21 -e FTP_USER=fax -e FTP_PASS=fax -e LOCAL_UMASK=022 -v /share/fax:/home/vsftpd/fax --name vsftpd fauria/vsftpd

將 LOCAL_UMASK設定為022即可