前言
今天被經理要求搭建ftp服務器,然后就去網上搜索了一下教程。搭建成功后(遇到的坑不少)特此記錄一下。因為是為了記錄一下整個操作流程以防以后使用所以比較啰嗦。
目錄
1、安裝vsftpd
2、創建用戶和用戶組
3、修改配置文件及創建例外用戶文件chroot_list
4、設置防火牆端口開放和服務器端口開放
安裝vsftpd
使用yum指令進行安裝(安裝這個東西還真的是簡單)
yum install vsftpd* -y
然后可以使用以下命令開始,停止,或重啟
/bin/systemctl start vsftpd.service #啟動vsftpd
/bin/systemctl stop vsftpd.service #停止vsftpd
/bin/systemctl restart vsftpd.service #重啟vsftpd
然后可以使用以下指令查看啟動狀態
systemctl status vsftpd
執行正常結果如下所示:
創建用戶和用戶組
新創建一個用戶和用戶組,因為需要我們要對用戶限制訪問空間和位置,這些會在下一節講到。
創建用戶組,其實從最終結果來說我沒有用到用戶組上的東西,但是還是跟着教程創建了一個用戶組,如下所示:
groupadd ftpgroups #創建一個名為ftpgroups的用戶組
可以一步到位的創建用戶同時分配用戶根目錄和用戶組如下所示,其中/home/test目錄不存在需要自己創建:
useradd -d /home/test -g ftpgroups test
當然會有麻煩一些的方法,首先創建用戶然后給用戶分配組別。設置密碼passwd+用戶名這個我就不解釋了。ok如果你不限制用戶的權限訪問目錄什么的到這里應該就能使用本機訪問了,如果想要遠程訪問需要設置一些其他東西。不過接下來因為我們需要限制用戶的訪問目錄所以我們先講一下如果限制用戶的訪問目錄。
修改配置文件及創建例外用戶文件chroot_list
首先找到vsft的配置文件 /etc/vsftpd/vsftpd.conf,在配置文件中我們找到如下三個屬性
chroot_local_user=YES #是否將所有用戶限定在主目錄內 chroot_list_enable=YES #是否啟動限制用戶名單 chroot_list_file=/etc/vsftpd/chroot_list #是否限制在目錄下的用戶名單,沒有的話需要自己創建
allow_writeable_chroot=YES #報503錯誤的時候添加
上面三個屬性在限制用戶的訪問權限中是相當重要的,其中chroot_list_file屬性中的作用還取決於chroot_local_user和chroot_list_enable的組合,具體可以參考這個博客:https://blog.csdn.net/bluishglc/article/details/42398811,我同時從上面摘抄下來一段話如下所示:
chroot_local_user的值,我們可以這樣記憶: chroot_local_user總是一個全局性的設定,其為YES時,全部用戶被鎖定於主目錄,其為NO時,全部用戶不被鎖定於主目錄。那么我們勢必需要在全局設定下能做出一些“微調”,即,我們總是需要一種“例外機制",所以當chroot_list_enable=YES時,表示我們“需要例外”。而”例外“的含義總是有一個上下文的,即,當”全部用戶被鎖定於主目錄“時(即chroot_local_user=YES),"例外"就是:不被鎖定的用戶是哪些;當"全部用戶不被鎖定於主目錄"時(即chroot_local_user=NO),"例外"“就是:要被鎖定的用戶是哪些。這樣解釋和記憶兩者之間的關系就很清晰了!
ok,那么從上面的解釋我們就可以將chroot_local_user設定為NO,將chroot_list_enable設置為yes並在chroot_list中添加需要限制的用戶就可以了。接下來設置防火牆什么的就是問題最多的地方了。
設置防火牆端口開放和服務器端口開放
按照上面的基本沒有什么問題就可以直接使用本地ftp進行連接了然后就是遠程連接。遠程連接的話一般都涉及到防火牆、服務商安全組這兩個部分。So,我們先說一下防火牆,centos7的防火牆默認是firewalld,所以你需要先在防火牆上打開你的端口,還需要你添加ftp服務,可以參考博客:https://blog.csdn.net/u011383596/article/details/80869114,操作步驟就是添加服務,重啟防火牆這里我把命令給粘貼了過來:
firewall-cmd --permanent --add-service = ftp #添加服務
systemctl restart firewalld.service #重啟防火牆
接下來如果你的服務器是雲服務器列如阿里雲的話你需要設置一下你的安全組,將端口21添加進去。
這些都操作完的話可以用telnet ip port來測試一下時候能夠訪問到,如果訪問到基本就大功告成了。然后可以用一些工具進行連接如果找不到目錄的話需要修改為主動連接。這些我就不廢話了。
結束語
其實整個流程是不麻煩的,但是在中間還是遇到了很多問題。比如我遠程一直連接不上,我檢查了自己防火牆關了,安全組加了但是就是訪問不到,后來我一想我用的是測試服務器然后這個服務器的環境不是我搭的然后我就問搭建的人發現他用的是iptables,因為這個問題我撓了2個小時的頭。期間還遇到python多版本問題,還無意間把用戶添加到了user_list這個文件中(這個文件里面的用戶是不能使用ftp的)等等問題。不管怎么說還是把問題解決了,寫個文章來記錄一下吧。