用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/
如果你還沒有閱讀過以下文章,請先閱讀
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
1 |
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才能讓其他非擁有者也可以存取
所以,我們講指令改成以下
1 |
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即可