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