【Linux服務】vsftpd文件傳輸協議

来源:https://www.cnblogs.com/HeiDi-BoKe/archive/2019/10/09/11642444.html
-Advertisement-
Play Games

vsftpd文件傳輸協議 系統環境:CentOS Linux release 7.6.1810 (Core) 一、簡介 FTP(文件傳輸協議)全稱是:Very Secure FTP Server。 Vsftpd是linux類操作系統上運行的ftp伺服器軟體。 vsftp提供三種登陸方式:1.匿名登錄 ...


vsftpd文件傳輸協議

系統環境:CentOS Linux release 7.6.1810 (Core) 

一、簡介

FTP(文件傳輸協議)全稱是:Very Secure FTP Server。   Vsftpd是linux類操作系統上運行的ftp伺服器軟體。 

vsftp提供三種登陸方式:1.匿名登錄  2.本地用戶登錄  3.虛擬用戶登錄

vsftpd的特點:

  1)較高的安全性需求   

  2)帶寬的限制   

  3)創建支持虛擬用戶   

  4)支持IPV6   

  5)中等偏上的性能   

  6)可分配虛擬IP   

  7)高速

 Ftp會話時採用了兩種通道:

   1)控制通道:與Ftp伺服器進行溝通的通道,鏈接Ftp發送ftp指令都是通過控制通道來完成的。

   2)數據通道:數據通道和Ftp伺服器進行文件傳輸或則列表的通道 

二、工作原理

Ftp協議中控制連接均是由客戶端發起,而數據連接有兩種工作方式:Port和Pasv方式

 Port模式(主動模式)--> 預設

  Ftp客戶端首先和Ftp server的tcp 21埠建立連接,通過這個通道發送命令,客戶端要接受數據的時候在這個通道上發送Port命令,Port命令包含了客戶端用什麼埠(一個大於1024的埠)接受數據,在傳送數據的時候,伺服器端通過自己的TCP 20埠發送數據。這個時候數據連接由server向client建立一個連接。

 Port交互流程:

client端:client鏈接server的21埠,併發送用戶名密碼和一個隨機在1024上的埠及port命令給server,表明採用主動模式,並開放那個隨機的埠。

server端:server收到client發來的Port主動模式命令與埠後,會通過自己的20埠與client那個隨機的埠連接後,進行數據傳輸。

  Pasv模式(被動方式)

  建立控制通道和Port模式類似,當客戶端通過這個通道發送Pasv命令的時候,Ftp server打開了一個位於1024和5000之間的隨機埠並且通知客戶端在這個埠上進行傳輸數據請求,然後Ftp server將通過這個埠進行數據傳輸。這個時候數據連接由client向server建立連接。

  Pasv交互流程

Clietn:client連接server的21號埠,發送用戶名密碼及pasv命令給server,表明採用被動模式。

server:server收到client發來的pasv被動模式命令之後,把隨機開放在1024上的埠告訴client,client再用自己的20 埠與server的那個隨機埠進行連接後進行數據傳輸。

  如果從C/S模型這個角度來說,PORT對於伺服器來說是OUTBOUND,而PASV模式對於伺服器是INBOUND,這一點請特別註意,尤其是在使用防火牆的企業里,這一點非常關鍵,如果設置錯了,那麼客戶將無法連接。

三、安裝vsfpd

1.安裝vsftpd相關組件

[root@VM_0_10_centos shellScript]# yum -y install vsftpd*

2.安裝PAM服務相關組件

[root@VM_0_10_centos shellScript]# yum -y install pam*

安裝pam報錯:

--> Finished Dependency Resolution
Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda)
           Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
Error: Package: libmapi-7.1.14-3.el7.x86_64 (epel)
           Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
Error: Package: libmapi-7.1.14-3.el7.x86_64 (epel)
           Requires: libmysqlclient.so.18()(64bit)
Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda)
           Requires: libmysqlclient.so.18()(64bit)
 You could try using --skip-broken to work around the problem
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit)
2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit)

解決:

缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm這個包

[root@VM_0_10_centos tmp]# wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64
/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
[root@VM_0_10_centos tmp]# rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm 
warning: Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: N
OKEYPreparing...                          ################################# [100%]
Updating / installing...
   1:Percona-XtraDB-Cluster-shared-55-################################# [100%]

參考網址:https://blog.csdn.net/debimeng/article/details/78143071

最後再運行安裝pam即可

# yum -y install pam*

3.安裝DB4部件包

用來支持文件資料庫

[root@VM_0_10_centos tmp]# yum -y install db4*

四、系統賬戶

1.建立Vsftpd服務的宿主用戶

預設的Vsftpd的服務宿主用戶是root,但不符合安全性的需要。這裡建立名字為vsftpd的用戶,用他來作為支持Vsftpd的服務宿主用戶。由於該用戶僅用來支持Vsftpd服務用,因此沒有許可他登陸系統的必要,並設定他為不能登陸系統的用戶。

nologin參考網址:https://blog.csdn.net/danson_yang/article/details/65629948

[root@VM_0_10_centos tmp]# useradd vsftpd -s /sbin/nologin

/sbin/nologin更改用戶是否可以使用ssh登錄

2.建立Vsftpd虛擬宿主用戶

[root@VM_0_10_centos tmp]# useradd vrvsftpd -s /sbin/nologin

虛擬用戶並不是系統用戶,也就是說這些FTP的用戶在系統中是不存在的。他們的總體許可權其實是集中寄托在一個在系統中的某一個用戶身上的,所謂Vsftpd的虛擬宿主用戶,就是這樣一個支持著所有虛擬用戶的宿主用戶。由於他支撐了FTP的所有虛擬的用戶,那麼他本身的許可權將會影響著這些虛擬的用戶,因此,處於安全性的考慮,也要非分註意對該用戶的許可權的控制,該用戶也絕對沒有登陸系統的必要,這裡也設定他為不能登陸系統的用戶。

五、修改vsftpd配置文件

1.編輯配置文件前先備份

[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup

內容如下:

[root@VM_0_10_centos tmp]# cat /etc/vsftpd/vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
# anonymous_enable=YES
# 設置不允許匿名訪問
anonymous_enable=NO

#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
# 設置本地用戶可以訪問。PS:主要為虛擬宿主用戶,如該項目設定為No,那麼所有虛擬用戶將無法訪問
 local_enable=YES

#
# Uncomment this to enable any form of FTP write command.
# 設置可進行寫操作
write_enable=YES

#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
# 設置上傳後文件的許可權掩碼
local_umask=022

#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES
# 禁止匿名用戶上傳文件
anonymous_enable=NO

#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
# 禁止匿名用戶建立目錄
anon_mkdir_write_enable=NO

#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
# 設置開啟目錄標語功能
dirmessage_enable=YES

#
# Activate logging of uploads/downloads.
# 開啟日誌記錄功能
xferlog_enable=YES

#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 設置埠20進行資料庫連接
connect_from_port_20=YES

#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
# 設置禁止上傳文件更改宿主
chown_uploads=NO

#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/xferlog
# 設置vsftpd服務日誌保存路徑。PS:該文件預設不存在,須手動創建。
# 由於這裡手動更改了vsftpd宿主用戶為vsftpd,須註意給與改用戶對日誌的寫入許可權
xferlog_file=/var/log/vsftpd.log

#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
# 設置日誌使用標準的記錄格式
xferlog_std_format=YES

#
# You may change the default value for timing out an idle session.
# 設置空閑連接超時時間,這裡使用預設。
# 將具體數值留給每個具體用戶具體指定,當然如果不指定的話,還是使用這裡的預設值600,單位秒
#idle_session_timeout=600

#
# You may change the default value for timing out a data connection.
# 設定單次最大連續傳輸時間,這裡使用預設。
# 將具體數值留給每個具體用戶具體指定,當然如果不指定的話,還是使用這裡的預設值120,單位秒。
#data_connection_timeout=120

#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
# 設定支撐Vsftpd服務的宿主用戶為手動建立的Vsftpd用戶。
# PS:一旦做出更改宿主用戶後,必須註意一起與該服務相關的讀寫文件的讀寫賦權問題。比如日誌文件就必須給與該用戶寫入許可權等。
nopriv_user=vsftpd

#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
# 設置支持非同步傳輸功能
async_abor_enable=YES

#
# ASCII mangling is a horrible feature of the protocol.
# 設置支持ASCII模式上傳和下載功能
ascii_upload_enable=YES
ascii_download_enable=YES

#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
# 設置vsftpd的登錄標語
ftpd_banner=This Vsftp server supports virtual users ^_^

#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# 禁止用戶登出自己的ftp主目錄
chroot_list_enable=NO

# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
# 禁止用戶登錄ftp後使用"ls -R"命令。該命令會對伺服器性能造成巨大開銷。如果該項被允許,那麼擋多用戶同時使用該命令時將會對該伺服器造成威脅。
ls_recurse_enable=NO

#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
# listen=NO
# 設定該Vsftpd服務工作在StandAlone模式下。
# 順便展開說明一下,所謂StandAlone模式就是該服務擁有自己的守護進程支持,
# 在ps -A命令下我們將可用看到vsftpd的守護進程名。如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,
# 在該模式下 vsftpd將沒有自己的守護進程,而是由超級守護進程Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現
listen=YES

#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!

 # listen_ipv6=YES
 # 設置pam服務下vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置
  pam_service_name=vsftpd
 # 設定userlist_file中的用戶將不得使用FTP。
  userlist_enable=YES
 # 設定支持TCP Wrappers。
  tcp_wrappers=YES

# 以下這些是關於Vsftpd虛擬用戶支持的重要配置項目。預設Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置。
# 設置啟用虛擬用戶功能
guest_enable=YES

# 指定虛擬用戶宿主用戶
guest_username=vrvsftpd

# 設定虛擬用戶的許可權符合他們的宿主用戶。
virtual_use_local_privs=YES

# 設定虛擬用戶個人Vsftp的配置文件存放路徑。
# 也就是說,這個被指定的目錄里,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要註意的地方就是這些配置文件名必須和虛擬用戶名相同。
user_config_dir=/etc/vsftpd/vconf

 3.建立Vsftpd的日誌文件,並更該屬主為Vsftpd的服務宿主用戶

[root@VM_0_10_centos tmp]# touch /var/log/vsftpd.log
[root@VM_0_10_centos tmp]# chown vsftpd.vsftpd /var/log/vsftpd.log

4.建立虛擬用戶配置文件存放路徑

[root@VM_0_10_centos tmp]# mkdir /etc/vsftpd/vconf

六、製作虛擬用戶資料庫文件

 1.先建立虛擬用戶名單文件

建立了一個虛擬用戶名單文件,這個文件就是來記錄vsftpd虛擬用戶的用戶名和口令的數據文件,我這裡給它命名為virtusers。為了避免文件的混亂,我把這個名單文件就放置在/etc/vsftpd/下。

[root@VM_0_10_centos tmp]# touch /etc/vsftpd/virtusers

2.編輯虛擬用戶名單文件

格式為:“一行用戶名,一行口令”。

[root@VM_0_10_centos tmp]# cat /etc/vsftpd/virtusers 
zs
設置的密碼
thy 設置的密碼

3.生成虛擬用戶數據文件

db_load主要用來生成db資料庫使用。在Vsftpd的虛擬用戶設置中先新建一個文件users.txt 把用戶名密碼放入其中

接著 db_load -T -t hash -f   */users.txt    */users.db

PS: * 表示目錄

這樣就生成了一個users.db文件(hash碼型的資料庫文件)

 參考網址:http://blog.itpub.net/20943428/viewspace-661714/

[root@VM_0_10_centos tmp]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

參數:

  選項-T允許應用程式能夠將文本文件轉譯載入進資料庫。由於我們之後是將虛擬用戶的信息以文件方式存儲在文件里的,為了讓Vsftpd這個應用程式能夠通過文本來載入用戶數據,必須要使用這個選項。  

  子選項-t,追加在在-T選項後,用來指定轉譯載入的資料庫類型。擴展介紹下,-t可以指定的數據類型有Btree、Hash、Queue和Recon資料庫

 PS:如果指定了選項-T,那麼一定要追跟子選項 -t

4.察看生成的虛擬用戶數據文件

[root@VM_0_10_centos tmp]# ll /etc/vsftpd/virtusers.db 
-rw-r--r-- 1 root root 12288 Oct  9 11:02 /etc/vsftpd/virtusers.db

PS:以後再添加虛擬用戶的時候,只需要按照“一行用戶名,一行口令”的格式將新用戶名和口令添加進虛擬用戶名單文件。但是光這樣做還不夠,不會生效的哦!還要再執行一遍“ db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶資料庫文件.db ”的命令使其生效才可以!

七、設定PAM驗證文件,並指定虛擬用戶資料庫文件進行讀取

1.察看原來的Vsftp的PAM驗證配置文件

[root@VM_0_10_centos tmp]# cat /etc/pam.d/vsftpd 
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required    pam_shells.so
auth       include    password-auth
account    include    password-auth
session    required     pam_loginuid.so
session    include    password-auth

2.在編輯前做好備份

[root@VM_0_10_centos tmp]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
[root@VM_0_10_centos tmp]# vi /etc/pam.d/vsftpd

內容如下

[root@VM_0_10_centos tmp]# vi /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
# 以下兩條是手動添加的,內容是對虛擬用戶的安全和帳戶許可權進行驗證。
# 這裡的auth是指對用戶的用戶名口令進行驗證
auth    sufficient      /usr/lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
# 這裡的accout是指對用戶的帳戶有哪些許可權哪些限制進行驗證。
# 其後的sufficient表示充分條件,也就是說,一旦在這裡通過了驗證,那麼也就不用經過下麵剩下的驗證步驟了。
# 相反,如果沒有通過的話,也不會被系統立即擋之門外,因為sufficient的失敗不決定整個驗證的失敗,意味著用戶還必須將經歷剩下來>的驗證審核。
account sufficient /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers # 後面的/lib/security/pam_userdb.so表示該條審核將調用pam_userdb.so這個庫函數進行。 # 最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的資料庫中調用數據進行驗證。 auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth

八、虛擬用戶的配置

1.規劃好虛擬用戶的主路徑

[root@VM_0_10_centos tmp]# mkdir /opt/vsftpd

2.建立測試用戶的FTP用戶目錄

[root@VM_0_10_centos tmp]# mkdir /opt/vsftpd/{zs,thy}
[root@VM_0_10_centos tmp]# ls /opt/vsftpd/
thy  zs

3.建立虛擬用戶配置文件模版

[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vsftpd.conf.backup /etc/vsftpd/vconf/vconf.tmp

4.定製虛擬用戶模版配置文件

[root@VM_0_10_centos tmp]# vi /etc/vsftpd/vconf/vconf.tmp 
# 指定虛擬用戶的具體主路徑。
local_root=/opt/vsftpd/virtuser
# 設定不允許匿名用戶訪問。
anonymous_enable=NO
# 設定允許寫操作。
write_enable=YES
# 設定上傳文件許可權掩碼。
local_umask=022
# 設定不允許匿名用戶上傳。
anon_upload_enable=NO
# 設定不允許匿名用戶建立目錄。
anon_mkdir_write_enable=NO
# 設定空閑連接超時時間。
idle_session_timeout=600
# 設定單次連續傳輸最大時間。
data_connection_timeout=120
# 設定併發客戶端訪問個數。
max_clients=10
# 設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟體。
max_per_ip=5
# 設定該用戶的最大傳輸速率,單位b/s。
local_max_rate=50000

這裡將原vsftpd.conf配置文件經過簡化後保存作為虛擬用戶配置文件的模版。將並不需要指定太多的配置內容,主要的框架和限制交由 Vsftpd的主配置文件vsftpd.conf來定義,即虛擬用戶配置文件當中沒有提到的配置項目將參考主配置文件中的設定。而在這裡作為虛擬用戶的配置文件模版只需要留一些和用戶流量控制,訪問方式控制的配置項目就可以了。這裡的關鍵項是local_root這個配置,用來指定這個虛擬用戶的FTP主路徑。

5.更改虛擬用戶的主目錄的屬主為虛擬宿主用戶:

[root@VM_0_10_centos tmp]# chown -R vrvsftpd.vrvsftpd /opt/vsftpd/
[root@VM_0_10_centos tmp]# ll /opt/vsftpd/
total 8
drwxr-xr-x 2 vrvsftpd vrvsftpd 4096 Oct  9 11:24 thy
drwxr-xr-x 2 vrvsftpd vrvsftpd 4096 Oct  9 11:24 zs

九、給測試用戶定製

1.從虛擬用戶模版配置文件複製

[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/thy

2.針對具體用戶進行定製

[root@VM_0_10_centos tmp]# vi /etc/vsftpd/vconf/thy 
# 指定虛擬用戶的具體主路徑。
local_root=/opt/vsftpd/thy
# 設定不允許匿名用戶訪問。
anonymous_enable=NO
# 設定允許寫操作。
write_enable=YES
# 設定上傳文件許可權掩碼。
local_umask=022
# 設定不允許匿名用戶上傳。
anon_upload_enable=NO
# 設定不允許匿名用戶建立目錄。
anon_mkdir_write_enable=NO
# 設定空閑連接超時時間。
idle_session_timeout=300
# 設定單次連續傳輸最大時間。
data_connection_timeout=90
# 設定併發客戶端訪問個數。
max_clients=1
# 設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟體。
max_per_ip=1
# 設定該用戶的最大傳輸速率,單位b/s。
local_max_rate=25000

十、啟動服務

[root@VM_0_10_centos tmp]# systemctl restart vsftpd
[root@VM_0_10_centos tmp]# systemctl status vsftpd

十一、測試

1.在虛擬用戶目錄中預先放入文件

[root@VM_0_10_centos tmp]# touch /opt/vsftpd/thy/thy.test

2.從其他機器作為客戶端登陸FTP

前提這台機器安裝了ftp服務,能使用ftp命令

 

解決:

可能是pam問題,上面配置vsftpd.conf配置文件時,沒有開啟pam的驗證,將pam驗證開啟即可

 

 

 參考網址:https://blog.csdn.net/junjunjiao/article/details/50738009

測試登錄:

3.測試列單操作

解決:

將主動改為被動,然後重新登錄ftp

ftp> passive
Passive mode on.

參考網址:https://blog.csdn.net/indexman/article/details/42649329

4.測試上傳操作

參數使用格式參考網址:https://www.jb51.net/article/124033.htm

首先現在客戶端伺服器上當前目錄創建hello.txt文件,登錄ftp,測試上傳

[root@VM_0_16_centos ~]# touch hello.txt
[root@VM_0_16_centos ~]# ftp
ftp> ls
227 Entering Passive Mode (106,53,73,200,241,96).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Oct 09 03:51 thy.test
226 Directory send OK.
ftp> put
(local-file) hello.txt
(remote-file) ftp_hello.txt
local: hello.txt remote: ftp_hello.txt
227 Entering Passive Mode (106,53,73,200,91,237).
150 Ok to send data.
226 Transfer complete.
30 bytes sent in 3e-05 secs (1000.00 Kbytes/sec)

 

在vsftpd服務端就能看到剛剛上傳的文件了

[root@VM_0_10_centos tmp]# ls /opt/vsftpd/thy/
ftp_hello.txt  thy.test

5.測試建立目錄操作

ftp> mkdir ftp_test
257 "/opt/vsftpd/thy/ftp_test" created

6.測試下載操作

 需要下載的文件,vsftpd服務端必須要有這個文件才行

ftp> get thy.test
local: thy.test remote: thy.test
227 Entering Passive Mode (106,53,73,200,245,241).
150 Opening BINARY mode data connection for thy.test (0 bytes).
226 Transfer complete.

 

在/etc/vsftpd/vsftpd.conf中,local_enable的選項必須打開為Yes,使得虛擬用戶的訪問成為可能,否則會出現以下現象:

[root@KcentOS5 ~]# ftp
ftp> open ip地址
Connected to ip地址.
500 OOPS: vsftpd: both local and anonymous access disabled!

原因:虛擬用戶再豐富,其實也是基於它們的宿主用戶overlord的,如果overlord這個虛擬用戶的宿主被限制住了,那麼虛擬用戶也將受到限制。
補充:

500 OOPS:錯誤

有可能是你的vsftpd.con配置文件中有不能被識別的命令,還有一種可能是命令的YES 或 NO 後面有空格。

550 許可權錯誤,不能創建目錄和文件

解決方法: 關閉selinux

# vi /etc/selinux/config

將 SELINUX=XXX -->XXX 代表級別

改為

SELINUX=disabled

修改配置文件需要重啟

7、通過瀏覽器訪問

ftp://106.53.73.200/

輸入配置的用戶名和密碼即可

 

 

 

 

參考網址:https://www.cnblogs.com/hhuai/archive/2011/02/12/1952647.html

參數使用格式參考網址:https://www.jb51.net/article/124033.htm

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 框架採用.NetCore + Vue前後端分離,並且支持前端、後臺代碼業務動態擴展,框架內置了一套有著20多種屬性配置的代碼生成器,可靈活配置生成的代碼,代碼生成器界面配置完成即可生成單表/主從表的增、刪、改、查、導入、導出、上傳、審核基礎功能。只需要簡單瞭解即可上手開發 框架基礎功能已構建完成,可 ...
  • [toc] 前言 十一小長假在不知不覺間可都沒了,在這個小尾巴的空隙,把這兩天鼓搗的net core 3.0升級過程記錄一下,首先還是根據之前的順序一個個補充進來,先從Swagger的變化說起(新建工程什麼的不多說了,就是選擇的時候選3.0就可以了,2019新版更新後創建預設都是3.0)。 引入 按 ...
  • 在新推送的系統升級過後,(博主系統是Mac OS Mojave 10.14)我們會發現,之前我們刪除的令人討厭的Mac自帶應用又回來了,如果我們還按照之前百度的方式刪除的話,參考: https://www.jianshu.com/p/225745cae8de 我們會發現,即使我們以root用戶來刪除 ...
  • ansible自動化配置管理 一、安裝 配置 啟動 (ansible由紅帽收購) (1)什麼是ansible ansible是IT自動化配置管理工具,模塊豐富,組件豐富,可以通過一個命令完成一系列的操作。減少了維護成本和複雜性的工作,提高工作效率。 假設完成100台nginx服務的安裝: ssh 登 ...
  • 在linux系統命令行界面預設目錄顏色是藍色,在黑色底色上無法看清 原來效果圖: 最終效果圖: 大致步驟:1.複製配置文件到個人用戶的根目錄下2.修改配置文件中字體顏色的設置3.重新啟動視窗,輸入ls查看輸出的顏色是否OK 具體步驟: 1.將/etc/DIR_COLORS文件cp到~/下,並改名為. ...
  • httpd:是一個提供網站服務的程式 監聽埠:80 環境準備: Linux CentOS7.3系統 使用一臺服務端,一臺客戶端即可; 一、安裝httpd 1:安裝 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# se ...
  • 本人環境:虛擬機CentOS71804、虛擬機軟體VMwareWorkstation14Pro、所要添加的共用文件夾在物理機NTFS格式磁碟分區上。 本文僅對上述環境情況有效,其它情況僅供參考。 出現這個問題的原因是VMwareTools安裝不完全——之所以說不完全,是因為安裝CentOS時,預設安 ...
  • server { listen 80; server_name www.xxxx.com; if ($host = "www.xxxx.com"){ return 301 https://www.xxxx.com$request_uri; } } ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...