一、服務器資源
服務器:阿里雲CentOS 7.3
二、安裝部署
檢測是否已安裝
rpm -qa | grep vsftpd //如果出現相應版本信息表示已安裝如:vsftpd-3.0.2-25.el7.x86_64
否則執行以下命令進行安裝:
yum install -y vsftpd
等待安裝結束執行檢測命令查看到相應版本信息表示安裝成功。
三、配置啓動
1、配置文件綜述:
vsftp的默認安裝目錄是:/etc/vsftpd/ 進入改目錄即可看到如下幾個文件:
/etc/vsftpd/vsftpd.conf // vsftpd 的核心配置文件
/etc/vsftpd/ftpusers //用於指定哪些用戶不能訪問FTP 服務器。 默認禁用登錄名單
/etc/vsftpd/user_list://自定義ftp登錄用戶名單,具體作用稍後講解
此外爲了控制用戶登錄目錄權限,我們自己在次目錄下再新建一個以下文件:
/etc/vsftpd/chroot_list //登錄用戶能否跳出其用戶家目錄的控制名單,具體作用稍後講解
2、創建ftp登錄用戶:
通常我們你推薦開放匿名用戶登錄而使用本地用戶(vsftp部署服務器的系統用戶),因此這裏創建一個本地用戶,以備配置vsftp的相關用戶名單所用:
創建用戶:【useradd -d 用戶家目錄 用戶名】
備註:執行以下命令創建用戶seally,同時指定並創建家目錄爲 /usr/local/ftpworkspace/seally
useradd -d /usr/local/ftpworkspace/seally seally
設定用戶密碼:【passwd 用戶名】
passwd seally //跟着提示輸入密碼
備註:一般用於ftp的登錄賬號,最好禁用其登錄ssh,因此我們可以執行以下命令,禁用制定的賬號登錄服務器:【chsh 賬號 -s /sbin/nologin】
chsh seally -s /sbin/nologin
3、開始配置:
編輯user_list,將賬號 seally 加入到該文件(如果原來有用戶列表,可先刪除所有默認用戶再加入,每個用戶獨佔一行)
編輯ftpusers,清理掉原有所有默認用戶列表,該文件中的用戶是ftp黑名單用戶,加入其中的賬號默認不能夠登錄。特殊情況下要禁用某些賬號時才需要配置進去。
編輯vsftpd.conf,清理掉所有原有配置,將最核心的配置進去,如下貼出一個核心配置,拷貝過去適當修改即可:
#vsftp最核心的配置示例:/etc/vsftpd/vsftpd.conf
#允許本地用戶寫入文件 設置爲YES
write_enable=YES
#開啓目錄限制名單可寫 一律設置爲YES 否則啓動目錄限制功能的的用戶不能夠登錄
allow_writeable_chroot=YES
#啓用記錄上傳下載日誌
xferlog_enable=YES
#設置日誌目錄
xferlog_file=/var/log/xferlog
#啓用日誌格式化
xferlog_std_format=YES
#開啓默認情況下的主動模式數據傳輸使用20端口
connect_from_port_20=YES
#設置空閒連接的超時時間
idle_session_timeout=6000
#設置數據傳輸的超時時間
data_connection_timeout=1200
#是否啓用獨立監聽
listen=YES
#自定義服務監聽端口
listen_port=21
pam_service_name=vsftpd
#啓用主機訪問控制機制,設置爲YES
tcp_wrappers=YES
#爲了安全性,關閉匿名訪問 配置爲NO
anonymous_enable=NO
#關閉匿名用戶上傳文件 設置爲NO 即使開啓也需 write_enable=YES
anon_upload_enable=NO
#關閉匿名用戶創建文件目錄 設置爲NO
anon_mkdir_write_enable=NO
#開啓本地賬號登錄 配置爲YES
local_enable=YES
#設置本地賬戶登錄後的主目錄,不設置或設置不存在路徑則登錄後會到各自家目錄
local_root=/usr/local/ftpworkspace/
#設備本地用戶上傳文件的默認文件掩碼(022代表最終文件權限爲755)
local_umask=022
#使用限制所有用戶只能在自己的主目錄
chroot_local_user=YES
#是否啓用目錄切換限制排除名單功能
chroot_list_enable=YES
#指定目錄切換限制排除名單文件路徑,即自己創建的chroot_list文件
chroot_list_file=/etc/vsftpd/chroot_list
#登錄名單限制類型 NO=user_list名單中的用戶可登錄 YES=名單中的用戶不可登錄
userlist_deny=NO
#是否啓用user_list登錄限制名單功能
userlist_enable=YES
#登錄名單文件路徑(每個用戶獨佔一行)
userlist_file=/etc/vsftpd/user_list
備註:vsftpd.conf文件中兩個比較繞的配置說明如下:
關於登錄名單
由3個配置項【userlist_deny、userlist_enable、userlist_file】共同決定,如果userlist_deny配置爲NO表示允許userlist_file中的用戶登錄,如果userlist_deny設置爲YES表示拒絕userlist_file中的用戶登錄,userlist_enable表示是否啓用userlist_file的自定義用戶用戶列表,開啓後即在userlist_deny=NO時控制userlist_file中的賬號能夠登錄,當userlist_deny=YES時userlist_file中的用戶不能夠登錄,因此通常我們會userlist_deny配置爲NO,將分配的賬號添加到userlist_file中,以達到只有分配的用戶可登錄。
關於限制目錄切換名單
由4個配置項【allow_writeable_chroot、chroot_local_user、chroot_list_enable、chroot_list_enable、chroot_list_file】共同決定,allow_writeable_chroot一律設置爲YES,否則在chroot_local_user開啓後用戶不能夠登錄(暫時不明原因,通過測試發現該現象),chroot_local_user表示是否限制所有用戶只能在主目錄切換,YES=表示所有用戶都只能在主目錄切換,NO=表示所有用戶都可在任意目錄切換,爲了方便安全管理,通常設置爲YES,chroot_list_enable表示是否添加爲chroot_local_user的限制添加排除項用戶,如果設置爲YES則表示chroot_list_file中的用戶不受chroot_local_user的限制,且剛好意義與其相反,即如果chroot_local_user=YES限制所有用戶,那麼chroot_list_file中的用戶則不受限制可任意切換目錄,如果chroot_local_user=NO不限制所有用戶,那麼chroot_list_file中的用戶則沒有這麼自由,只能在主目錄切換。
綜上所述:
登錄控制通常情況下的組合設置爲如下:
userlist_deny=NO、userlist_enable=YES、userlist_file中加入允許登錄的賬號。
目錄切換控制的組合設置爲如下:
chroot_local_user=YES、chroot_list_enable=YES、chroot_list_file中加入允許跳出其主目錄的賬號。
4、啓動服務,瀏覽器訪問測試:
執行以下命令啓動服務:
/bin/systemctl restart vsftpd.service
使用java客戶端登錄或是瀏覽器輸入地址 ftp://www.seally.cn/ 其中www.seally.cn爲部署vsftp服務器的域名或是ip,根據彈出的提示輸入seally用戶及其密碼即可登錄。
四、擴展配置
通常我們在創建新用戶同時指定好其家目錄後,將該新用戶添加到ftp登錄用戶列表文件中後,重啓ftp服務新的用戶便能夠進行登錄了,同時該用戶的ftp工作目錄也便限制在其家目錄裏面,只能上傳文件至其指定的目錄,ftp的主配置文件中只能指定一個主目錄,因此我們只能把許多用戶的家目錄建立在此主目錄之下,這樣有個弊端,不同的用戶可以看到別人的目錄,因此我們進一步擴展爲不同的用戶單獨指定其家目錄,來屏蔽它看到別人的目錄:
這裏假如又新加了一個ftp用戶seally2,目前兩個用戶的家目錄情況是:
seally --> /usr/local/ftpworkspace/seally
seally2 --> /usr/local/ftpworkspace/seally2
我們主配置文件vsftpd.conf中設置的本地用戶主目錄爲:local_root=/usr/local/ftpworkspace/
因此賬號seally、seally2登錄後會進入/usr/local/ftpworkspace/ 即能夠互相看到彼此的家目錄,雖然不能上傳文件到彼此家目錄裏面去,但是也不太合適,因此增加各自的家目錄配置來規避這個問題:
創建多用戶配置文件目錄:
mkdir /etc/vsftpd/userconfig
進入該配置目錄,建立與用戶名相同的文件如此處需要爲seally建立單獨的登錄目錄:
vi seally 並輸入:local_root=/usr/local/ftpworkspace/seally 然後保存。
vi seally2 並輸入:local_root=/usr/local/ftpworkspace/seally2 然後保存。
編輯主配置文件vsftpd.conf 加入以下配置項:
user_config_dir=/etc/vsftpd/userconfig/
重啓服務在兩個賬號各自的家目錄下放置不同的文件登錄查看即可驗證!