ftp -- vsftp

lhb_immortal發表於2014-08-07
最近學習下ftp,發現很多東西不瞭解,特此收集整理~

作業系統為redhat 或者 Centos ,這兩個也是市場上使用最多的。

1. 服務啟動與關閉
   service vsftpd status --檢視狀態
   service vsftpd start  --啟動vsftpd 守護程式(啟動服務)
   service vsftpd stop   --關閉服務


   chkconfig vsftpd on   --開機自啟動
   chkconfig vsftpd off  --開機不啟動


2. 相關檔案
   /etc/vsftpd/ftpusers    --禁止登入ftp的使用者列表(與允許列表衝突時,優先禁止)
   /etc/vsftpd/user_list   --允許登入ftp的使用者列表
   /etc/vsftpd/vsftpd.conf --ftp配置檔案


3. vsftpd.conf 引數詳解

/etc/vsftpd/vsftpd.conf 檔案詳解,分好類,方便大家查詢與學習

#################匿名許可權控制###############


anonymous_enable=YES   #是否啟用匿名使用者
no_anon_password=YES   #匿名使用者login時不詢問口令


下面這四個主要語句控制這檔案和資料夾的上傳、下載、建立、刪除和重新命名。
anon_upload_enable=(yes/no);  #控制匿名使用者對檔案(非目錄)上傳許可權。
anon_world_readable_only=(yes/no); #控制匿名使用者對檔案的下載許可權
anon_mkdir_write_enable=(yes/no); #控制匿名使用者對資料夾的建立許可權
anon_other_write_enable=(yes/no); #控制匿名使用者對檔案和資料夾的刪除和重新命名


注:匿名使用者下載是使用的是nobody這個使用者,所以相應的O這個位置要有R許可權才能被下載。若想讓匿名使用者能上傳和刪除許可權,必需設定


write_enable=YES #全域性設定,是否容許寫入(無論是匿名使用者還是本地使用者,若要啟用上傳許可權的話,就要開啟他)
anon_root=(none) #匿名使用者主目錄
anon_max_rate=(0) #匿名使用者速度限制
anon_umask=(077) #匿名使用者上傳檔案時有掩碼(若想讓匿名使用者上傳的檔案能直接被匿名下載,就這設定這裡為073)
chown_uploads=YES #所有匿名上傳的檔案的所屬使用者將會被更改成chown_username
chown_username=whoever #匿名上傳檔案所屬使用者名稱




#################本地使用者許可權控制###############


write_enable=YES #可以上傳(全域性控制) 刪除,重新命名
local_umask=022  #本地使用者上傳檔案的umask
userlist_enable=YES #限制了這裡的使用者不能訪問
local_root  #設定一個本地使用者登入後進入到的目錄
user_config_dir  #設定使用者的單獨配置檔案,用哪個帳戶登陸就用哪個帳戶命名
download_enable  #限制使用者的下載許可權


chown_uploads=YES #所有匿名上傳的檔案的所屬使用者將會被更改成chown_username
chown_username=whoever #匿名上傳檔案所屬使用者名稱


chroot_list_enable=YES #如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的使用者檔案


user_config_dir= #後面跟存放配置檔案的目錄。用來實現不同使用者不同許可權。
   #在vsftpd.conf檔案中加入這一句,
   #在相應的目錄裡面,為每個使用者建立自己的配置檔案,用來實現不同的許可權




可以通過以下三條配置檔案來控制使用者切換目錄。
chroot_list_enable=YES/NO   #設定是否啟用chroot_list_file配置項指定的使用者列表檔案。
      #如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄 .預設值為yes。


chroot_list_file=/etc/vsftpd/chroot_list #指出被鎖定在自家目錄中的使用者的列表檔案。


chroot_list_enable=YES
通過與chroot_local_user=YES/NO搭配能實現以下幾種效果:
1、當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list檔案中列出的使用者,可以切換到其他目錄;未在檔案中列出的使用者,不能切換到其他目錄。
2、當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list檔案中列出的使用者,不能切換到其他目錄;未在檔案中列出的使用者,可以切換到其他目錄。
3、當chroot_list_enable=NO,chroot_local_user=YES時,所有的使用者均不能切換到其他目錄。
4、當chroot_list_enable=NO,chroot_local_user=NO時,所有的使用者均可以切換到其他目錄。




下面是個例項,希望對大家有用:


1、只能上傳。不能下載、刪除、重新命名。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST


對於引數的詳細的解釋
cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,DELE,HELP,LIST,MODE,MDTM,MKD,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER


CWD - change working directory 更改目錄
DELE - delete a remote file 刪除檔案
LIST - list remote files 列目錄
MKD - make a remote directory 新建資料夾
NLST - name list of remote directory
PWD - print working directory 顯示當前工作目錄
RETR - retrieve a remote file 下載檔案
RMD - remove a remote directory 刪除目錄
RNFR - rename from 重新命名
RNTO - rename to 重新命名
STOR - store a file on the remote host 上傳檔案




# ABOR - abort a file transfer 取消檔案傳輸
# CWD - change working directory 更改目錄
# DELE - delete a remote file 刪除檔案
# LIST - list remote files 列目錄
# MDTM - return the modification time of a file 返回檔案的更新時間
# MKD - make a remote directory 新建資料夾
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 開啟一個傳輸埠
# PWD - print working directory 顯示當前工作目錄
# QUIT - terminate the connection 退出
# RETR - retrieve a remote file 下載檔案
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file 返回檔案大小
# STOR - store a file on the remote host 上傳檔案
# TYPE - set transfer type
# USER - send username


# less common commands:


# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type


2、只能下載。不能上傳、刪除、重新命名。write_enable=NO
3、只能上傳、刪除、重新命名。不能下載。download_enable=NO


4、只能下載、刪除、重新命名。不能上傳。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST




###################虛擬使用者設定###################


虛擬使用者使用PAM認證方式。
pam_service_name=vsftpd  #設定PAM使用的名稱,預設值為/etc/pam.d/vsftpd。


check_shell=YES   #(注意:僅在沒有pam驗證版本時有用,是否檢查使用者有一個有效的shell來登入 )
guest_enable= YES/NO  #啟用虛擬使用者。預設值為NO。
guest_username=ftp  #這裡用來對映虛擬使用者。預設值為ftp。
virtual_use_local_privs=YES/NO #當該引數啟用(YES)時,虛擬使用者使用與本地使用者相同的許可權。
    #當此引數關閉(NO)時,虛擬使用者使用與匿名使用者相同的許可權。預設情況下此引數是關閉的(NO)。




###################訪問控制設定###################


兩種控制方式:一種控制主機訪問,另一種控制使用者訪問。


1、控制主機訪問:
tcp_wrappers=YES/NO


設定vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。預設值為YES。如果啟用,則vsftpd伺服器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設定,來決定請求連線的主機,是否允許訪問該FTP伺服器。這兩個檔案可以起到簡易的防火牆功能。


比如:若要僅允許192.168.10.1—192.168.10.254的使用者可以連線FTP伺服器,


則在
/etc/hosts.allow
/etc/hosts.deny
檔案中新增以下內容:




其格式如下:


限制的服務:ip(網段)
vsftpd:192.168.1.
vsftpd:192.168.1.12
vsftpd:192.168.1.0/255.255.255.0這裡不能寫成192.168.1.0/24


2、控制使用者訪問:


vsftpd.ftpusers  #用於儲存不允許進行FTP登入的本地使用者帳號。就是vsftp使用者的黑名單


vsftpd.user_list


(1)設定禁止vsftpd.user_list檔案中的使用者登入:要在主配置檔案vsftpd.conf中修改如下兩項,
userlist_enable=yes
userlist_deny=yes
說明:配置完以後,除了vsftpd.ftpusers檔案和vsftpd.user_list檔案中記錄的ftp使用者不能登入vsftp服務以外,其他的ftp使用者都可以登入。
 


(2)設定只允許vsftpd.user_list檔案中的使用者登入;同樣的道理要把主配置檔案vsftpd.conf 中的語句修改如下兩項: 
userlist_enable=yes
userlist_deny=no
 說明:配置完以後,只允許vsftpd.user_list檔案中記錄的ftp使用者能登入vsftp服務,其他的ftp使用者都不可以登入。


 


###################超時設定##################


idle_session_timeout=600 #空閒連線超時
data_connection_timeout=120 #資料傳輸超時
ACCEPT_TIMEOUT=60  #PAVS請求超時
connect_timeout=60  #PROT模式連線超時




################伺服器功能選項###############


xferlog_enable=YES    #開啟日記功能
xferlog_std_format=YES   #使用標準格式
log_ftp_protocol=NO    #當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回覆,當除錯比較有用.
pasv_enable=YES    #允許使用pasv模式
pasv_promiscuous+NO    #關閉安全檢查,小心呀.
port_enable=YES    #允許使用port模式
prot_promiscuous    #關閉安全檢查
tcp_wrappers=YES    #開啟tcp_wrappers支援
pam_service_name=vsftpd   #定義PAM 所使用的名稱,預設為vsftpd。
nopriv_user=nobody    #當伺服器執行於最底層時使用的使用者名稱
pasv_address=(none)    #使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(伺服器聯接跳轉?)


 


#################伺服器效能選項##############
ls_recurse_enable=YES  #是否能使用ls -R命令以防止浪費大量的伺服器資源
one_process_model  #是否使用單程式模式
listen=YES   繫結到listen_port指定的埠,既然都繫結了也就是每時都開著的,就是那個什麼standalone模式
text_userdb_names=NO   #當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名     #稱。若是希望出現擁有者的名稱,則將此功能開啟。


use_localtime=NO    #顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果
#use_sendfile=YES    #測試平臺優化


 


################資訊類設定################


ftpd_banner=welcome to FTP .  #login時顯示歡迎資訊.如果設定了banner_file則此設定無效
dirmessage_enable=YES   #允許為目錄配置顯示資訊,顯示每個目錄下面的message_file檔案的內容
setproctitle_enable=YES   #顯示會話狀態資訊,關!




############## 檔案定義 ##################


chroot_list_file=/etc/vsftpd/vsftpd.chroot_list  #定義不能更改使用者主目錄的檔案
userlist_file=/etc/vsftpd/vsftpd.user_list  #定義限制/允許使用者登入的檔案
banner_file=/etc/vsftpd/banner    #定義登入資訊檔案的位置
banned_email_file=/etc/vsftpd.banned_emails  #禁止使用的匿名使用者登陸時作為密碼的電子郵件地址
xferlog_file=/var/log/vsftpd.log   #日誌檔案位置
message_file=.message     #目錄資訊檔案




############## 目錄定義 #################


user_config_dir=/etc/vsftpd/userconf  #定義使用者配置檔案的目錄
local_root=webdisk    #此項設定每個使用者登陸後其根目錄為/home/username/webdisk
       #定義本地使用者登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對使用者家目錄      #來說的.
anon_root=/var/ftp     #匿名使用者登陸後的根目錄


 


#############使用者連線選項#################




max_clients=100    #可接受的最大client數目
max_per_ip=5    #每個ip的最大client數目
connect_from_port_20=YES   #使用標準的20埠來連線ftp
listen_address=192.168.0.2   #繫結到某個IP,其它IP不能訪問
listen_port=2121    #繫結到某個埠
ftp_data_port=2020    #資料傳輸埠
pasv_max_port=0    #pasv連線模式時可以使用port 範圍的上界,0 表示任意。預設值為0。
pasv_min_port=0    #pasv連線模式時可以使用port 範圍的下界,0 表示任意。預設值為0。




##############資料傳輸選項#################


anon_max_rate=51200  #匿名使用者的傳輸比率(b/s)
local_max_rate=5120000  #本地使用者的傳輸比率(b/s)




##############安全選項#################


Idle_session_timeout=600 #(使用者會話空閒後10分鐘)
Data_connection_timeout=120 #(將資料連線空閒2分鐘斷)
Accept_timeout=60  #(將客戶端空閒1分鐘後斷)
Connect_timeout=60  #(中斷1分鐘後又重新連線)
Local_max_rate=50000  #(本地使用者傳輸率50K)
Anon_max_rate=30000  # (匿名使用者傳輸率30K)


Pasv_min_port=50000  # (將客戶端的資料連線埠改在
Pasv_max_port=60000  #50000—60000之間)


Max_clients=200   #(FTP的最大連線數)
Max_per_ip=4   #(每IP的最大連線數)
Listen_port=5555  #(從5555埠進行資料連線)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25313300/viewspace-1247027/,如需轉載,請註明出處,否則將追究法律責任。

相關文章