vsftpd是「very secure FTP daemon」的縮寫,是一個徹底免費的、開放源代碼的ftp服務器軟件。
html
vsftpd使用ftp協議,該協議屬於應用層協議。它是典型的c/s架構,ftp服務端用來存儲文件,ftp客戶端能夠經過ftp協議鏈接服務端實現上傳和下載資源。
ftp使用tcp的21端口進行命令傳輸,而後用tcp的20端口進行數據傳輸(主動模式)。
python
很是高的安全性需求、帶寬限制、良好的可伸縮性等。
vim
yum install vsftpd ftp lftp -y
PS:
vsftpd爲服務端軟件;ftp、lftp爲客戶端工具,推薦使用lftp。
部署詳情可參照《如何在Centos服務器上搭建起Oracle十、VNC、以及FTP》
安全
service vsftpd start
服務器
service vsftpd status
架構
本地用戶登陸: [root@TEST ~]# ftp ftp> open 8.8.8.8 Connected to 8.8.8.8 (8.8.8.8). 220 (vsFTPd 2.2.2) Name (8.8.8.8:root): root 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
登陸失敗時: [root@TEST ~]# ftp 8.8.8.8 Connected to 8.8.8.8 (8.8.8.8). 220 (vsFTPd 2.2.2) Name (8.8.8.8:root): root 331 Please specify the password. Password: 530 Login incorrect. Login failed. ftp> close 221 Goodbye. ftp> open 8.8.8.8 Connected to 8.8.8.8 (8.8.8.8). 220 (vsFTPd 2.2.2) Name (8.8.8.8:root): root 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
ftp客戶端匿名登陸: [root@TEST ~]# ftp 8.8.8.8 Connected to 8.8.8.8 (8.8.8.8). 220 (vsFTPd 2.2.2) Name (8.8.8.8:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
lftp客戶端鏈接: [root@TEST ~]# lftp 8.8.8.8 lftp 8.8.8.8:~>
能夠先切換到**本地指定目錄**(data)進行文件的下載,保存: ftp> lcd /data1/ Local directory now /data1 ftp> cd /data2/ ftp> get file001.txt
ps:
當客戶端已經鏈接上服務端,cd
是用於切換服務器中的目錄命令,lcd
是用於切換客戶端本地的目錄。
dom
ftp> mget file00* Total 7 files transferred
要想使用上傳命令,須要開啓上傳權限和可寫權限,可往下看。tcp
直接上傳不更名,能夠省去-o refile: ftp> !dir file001.txt file002.txt ftp> bin 421 Timeout. ftp> put /etc/file003.txt 501 bytes transferred ftp> !dir file001.txt file002.txt file003.txt
PS:
若是不知道本地目錄有哪些文件,可使用!dir
查看;
並且,必定要使用bin二進制傳輸!!!工具
上傳文件以後,並更名,就要帶-o refile了: ftp> bin 421 Timeout. ftp> put /etc/file003.txt -o file004.txt 501 bytes transferred ftp> ls drwx------ 2 14 50 6 Aug 08 06:27 file001.txt -rw------- 1 14 50 501 Aug 08 06:34 file002.txt -rw------- 1 14 50 501 Aug 08 06:34 file003.txt -rw------- 1 14 50 501 Aug 08 06:34 file004.txt
上傳多個文件,可使用put
和mput
命令上傳,多個文件之間用空格分隔;
若是想使用通配符,只有mput
命令支持:開放源代碼
ftp> bin 421 Timeout. ftp> put /etc/file005.txt /etc/file006.txt 1580 bytes transferred Total 2 files transferred ftp> ls drwx------ 2 14 50 6 Aug 08 06:27 abc -rw------- 1 14 50 1079 Aug 08 06:40 file005.txt -rw------- 1 14 50 501 Aug 08 06:40 file006.txt ftp> bin 421 Timeout. ftp> mput /etc/file00* 1688 bytes transferred Total 2 files transferred ftp> ls drwx------ 2 14 50 6 Aug 08 06:27 abc -rw------- 1 14 50 1079 Aug 08 06:41 file005.txt -rw------- 1 14 50 501 Aug 08 06:41 file006.txt
匿名用戶的默認配置只能進行文件的讀取和下載,不能進行寫入和上傳文件:
lftp 8.8.8.8:~> put /etc/fstab put: Access failed: 550 Permission denied. (fstab) lftp 8.8.8.8:/> mkdir abc mkdir: Access failed: 550 Permission denied. (abc) 能夠看到上傳命令和建立命令都失敗了,沒有響應的權限!
開啓匿名用戶建立文件,重命名,刪除,上傳權限:
#開啓上傳權限 anon_upload_enable=YES #開啓建立文件權限 anon_mkdir_write_enable=YES #開啓重命名,刪除權限 anon_other_write_enable=YES
重啓服務,再次進入,發現仍是無法建立目錄,可是報錯信息不同,以下:
lftp 8.8.8.8:/> mkdir abc mkdir: Access failed: 550 Create directory operation failed. (abc)
這是由於目錄沒有寫權限,給==pub目錄受權==,以下:
[root@localhost ~]# chmod o+w /var/ftp/pub/ [root@localhost ~]# ll /var/ftp/pub/ -d drwxr-xrwx 3 root root 192 8月 7 08:37 /var/ftp/pub/
再次進入,建立目錄,以下:
lftp 8.8.8.8:/pub> mkdir abc mkdir 成功, 創建 `abc'
PS:
要想匿名用戶有寫的權限,一是須要服務端配置文件開啓寫的權限,二是所在的目錄自己有其餘用戶寫的權限!
你甚至能夠修改配置文件,只讓本地用戶登陸:
vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES
若是重啓或者登錄服務器時,報錯以下:
[root@localhost ~]# systemctl restart vsftpd Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details. [root@localhost ~]# journalctl -xe -- Unit vsftpd.service has begun starting up. 8月 08 02:59:14 localhost.localdomain vsftpd[12751]: 500 OOPS: bad bool value in config file for: anonymous_en 8月 08 02:59:14 localhost.localdomain systemd[1]: vsftpd.service: control process exited, code=exited status=2
這種問題通常就是空格致使的,是每一行配置後面都不能有空格,也不能跟註釋。