Ubuntu linux下vsftpd 安裝配置


ftp基本概念

   FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸,支持FTP協議的服務器就是FTP服務  器;TCP/IP協議中,FTP標准命令TCP端口號為21,Port方式數據端口為20。FTP的任務是從一台計算機將文件傳送到另一台計算機,不受操作系統的限制。FTP的傳輸有兩種方式:ASCII、二進制。

FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。

       Port模式

FTP 客戶端首先和服務器的TCP 21端口建立連接,用來發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。PORT命令包含了客戶端用什么端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。FTP server必須和客戶端建立一個新的連接用來傳送數據。

      Passive模式

建立控制通道和Standard模式類似,但建立連接后發送Pasv命令。服務器收到Pasv命令后,打開一個臨時端口(端口號大於1023小於65535)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然后FTP服務器將通過這個端口傳送數據。

很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆后或內網的FTP服務器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因為從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。

總結:ftp 是做文件上傳下載的。。。而且還比較陳舊

 

安裝:apt-get install vsftpd

安裝完成后查看vsftpd各文件位置:dpkg –L vsftpd

基本配置信息

listen=YES

#設定該Vsftpd服務工作在StandAlone模式下。

#所謂StandAlone模式就是該服務擁有自己的守護進程支持,在ps -A命令下我們將可用看到vsftpd的守護進程名。

#如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,在該模式下 vsftpd將沒有自己的守護進程,

#而是由超級守護進程Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現。

 

#listen_ipv6=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.

 

anonymous_enable=NO

#設定不允許匿名訪

anon_upload_enable=NO

#禁止匿名用戶上傳。

anon_mkdir_write_enable=NO

#禁止匿名用戶建立目錄。

#chown_uploads=YES

#chown_username=whoever

# 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! 還是針對匿名用戶

 

local_enable=YES

#設定本地用戶可以訪問,和允許匿名用戶訪問 兩個選項必須開啟一個 不然ftp就自閉了

#虛擬宿主用戶,如果該項設定為NO那么所有虛擬用戶將無法訪問。

write_enable=YES

#設定可以進行寫操作

local_umask=022

#設定上傳后文件的權限掩碼。注意(umask決定目錄和文件被創建時得到的初始權限  777-022=755 )

use_localtime=YES

# If enabled, vsftpd will display directory listings with the time

# in  your  local  time  zone.  The default is to display GMT. The

# times returned by the MDTM FTP command are also affected by this

# option.

 

xferlog_enable=YES

#設定開啟日志記錄功能 上傳/下載

#xferlog_file=/var/log/vsftpd.log

# You may override where the log file goes if you like. The default is shown

# below. 可以自行設置日志記錄地址 以上是默認地址

 

#idle_session_timeout=600

# You may change the default value for timing out an idle session.

#設定空閑連接超時時間,這里使用默認。將具體數值留給每個具體用戶具體指定,當然如果不指定的話,還是使用這里的默認值600,單位秒

#data_connection_timeout=120

# You may change the default value for timing out a data connection.

#設定單次最大連續傳輸時間,這里使用默認。將具體數值留給每個具體用戶具體指定,當然如果不指定的話,還是使用這里的默認值120,單位秒

 

#nopriv_user=ftpsecure

# 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.

#設定支撐Vsftpd服務的宿主用戶為手動建立的Vsftpd用戶。注意,一旦做出更改宿主用戶后,必須注意一起與該服務相關的讀寫文件的讀寫賦權問題。比如日志文件就必須給與 該用戶寫入權限等。就是 ftp服務的操作 以該設置的用戶來進行 安全限制

 

#async_abor_enable=YES

#設定支持異步傳輸功能。

ascii_upload_enable=YES

ascii_download_enable=YES

#設定支持ASCII模式的上傳和下載功能

 

connect_from_port_20=YES

#設定端口20進行數據連接  port模式 主動模式

#pasv_enable=YES
#pasv_max_port=30010
#pasv_min_port=30000 

#被動模式設置

 

#chroot_local_user=YES

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

# 這個控制用戶切換到主目錄外的其他目錄  chroot_list_enable該指令控制chroot_list_file的有效性,chroot_list_file指定一個文件,記錄用戶名

#chroot_local_user為YES表示所有用戶都*能*切換到主目錄之外其他目錄,但是除了chroot_list_file配置的文件列出的用戶。chroot_local_user為NO表示所有用戶都*不能*切換到主目錄之外其他目錄,但是除了chroot_list_file配置的文件列出的用戶。也可以理解為,chroot_list_file列出的“例外情況”的用戶

 

#userlist_deny=NO

#userlist_enable=NO

#userlist_file=/etc/vsftpd.user_list

#userlist_enable 控制userlist_file 的有效性,userlist_enable為YES userlist_deny配置才有用,userlist_deny=NO  則userlist_file 配置中用戶可訪問 其他用戶不可訪問;userlist_deny=YES 則userlist_file 配置中用戶不可訪問 其他用戶可訪問

 

ls_recurse_enable=NO

#禁止用戶登陸FTP后使用"ls -R"的命令。該命令會對服務器性能造成巨大開銷。如果該項被允許,那么擋多用戶同時使用該命令時將會對該服務器造成威脅

 

pam_service_name=vsftpd

#設定PAM服務下Vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。

 

tcp_wrappers=YES

#設定支持TCP Wrappers

 

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO

# This option specifies the location of the RSA certificate to use for SSL

# encrypted connections.

 

# Uncomment this to indicate that vsftpd use a utf8 filesystem.

#utf8_filesystem=YES

 

以上配置基本可以保證一個基本的ftp服務走系統用戶    以下是虛擬用戶的配置方式

nopriv_user=ftpsecure

 

  *可以檢查下以上配置中設置的文件存不存在以及相關權限設置,比如當指定了nopriv_user

 

    那么 該用戶就需要對 日志等ftp服務會操作的目錄以及文件有讀寫權限

接下來要說的就是虛擬用戶的設置(該操作可以根據不同虛擬用戶設置不同配置)

准備

1.以上配置需要額外添加

guest_enable=YES
#設定啟用虛擬用戶功能。

guest_username=**
#指定虛擬用戶的宿主用戶。 這個就是限制虛擬用戶的權限

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

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

2.添加虛擬用戶

           習慣性 在 /etc/vsftpd/ 下創建一個 virtualusers 文件保存虛擬用戶信息,一行用戶名 一行密碼的形式

    

        這里需要用到 db-util   用來將上面的用戶文件轉換成 數據庫文件 以供pam 驗證  安裝:apt-get install db-util

   生成db 指令:db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

3.設置虛擬用戶的驗證方式

  主配置中已經指定了pam校驗設置vsftpd   cat /etc/pam.d/vsftpd  再該文件 加上

    auth    sufficient      pam_userdb.so     db=/etc/vsftpd/virtusers

    account  sufficient     pam_userdb.so     db=/etc/vsftpd/virtusers

  這里的auth是指對用戶的用戶名口令進行驗證。這里的accout是指對用戶的帳戶有哪些權限哪些限制進行驗證。其后的sufficient表示充分條件,也就是說,一旦在這里通過了驗  證,那么也就不用經過下面剩下的驗證步驟了

4.設置虛擬用戶的ftp配置信息

  

  可以看到和上面設置的虛擬用戶的名稱一致

  szy的配置

  

  zzr的配置

  

       可以看到這里針對不同的虛擬用戶 做了不同的設置

       注意:1.這里的關鍵項是local_root這個配置,用來指定這個虛擬用戶的FTP主路徑。

     2.更改虛擬用戶的主目錄的屬主為虛擬宿主用戶:也就是說虛擬用戶的宿主用戶需要對這個設置的loacl_root目錄有操作權限

基本到這 vsftpd 的基本配置就差不多了

 

其他 vsftpd的一些指令

  service vsftpd start/stop/stauts/restart

后續可能要考慮的就是網絡問題。。。網絡訪問權限。。。編碼問題

 

開發中遇到的問題:

  1. 根據絕對路徑切換工作目錄 ftpClient.changeWorkingDirectory 始終返回false

    調整chroot_local_user相關配置確保當前ftp用戶可以切換到主目錄以外的目錄

    奇怪的是以相對路徑來切換 可以正常切換 該方法返回true

Over

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM