vsftpd超實用技巧詳解

簡介:

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
 架構

用戶登陸:

  • 用本地用戶登陸須要輸入用戶名及密碼驗證。
  • 用ftp客戶端匿名登陸須要輸入用戶名及密碼驗證,匿名用戶名爲:ftp或者anonymous,密碼爲空。
  • 用lftp客戶端匿名登陸則不須要輸入以上信息。
本地用戶登陸:

[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:~>

 

下載命令:

get用於下載單個文件:

能夠先切換到**本地指定目錄**(data)進行文件的下載,保存:

ftp> lcd /data1/
Local directory now /data1
ftp> cd /data2/
ftp> get file001.txt

ps:
當客戶端已經鏈接上服務端,cd是用於切換服務器中的目錄命令,lcd是用於切換客戶端本地的目錄。
 dom

mget用於批量下載:

ftp> mget file00*
Total 7 files transferred

 

上傳命令:

put用於下載單個文件:

要想使用上傳命令,須要開啓上傳權限和可寫權限,可往下看。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

 

mput用於批量上傳:

上傳多個文件,可使用putmput命令上傳,多個文件之間用空格分隔;
若是想使用通配符,只有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

解決辦法:

這種問題通常就是空格致使的,是每一行配置後面都不能有空格,也不能跟註釋。

相關文章
相關標籤/搜索