Linux中配置ftp伺服器

来源:http://www.cnblogs.com/cindy-cindy/archive/2017/06/10/6978536.html
-Advertisement-
Play Games

1. 先用rpm -qa| grep vsftpd命令檢查是否已經安裝,如果ftp沒有安裝,使用yum -y install vsftpd 安裝,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start / service vsftpd r ...


1. 先用rpm -qa| grep vsftpd命令檢查是否已經安裝,如果ftp沒有安裝,使用yum  -y  install vsftpd 安裝,(ubuntu 下使用apt-get install vsftpd)

2. service vsftpd start / service vsftpd restart

啟動要讓FTP每次開機自動啟動,運行命令:  chkconfig --level 35 vsftpd on

3. 設置ftp許可權

vi  /etc/vsftpd/vsftpd.conf

將anonymous_enable=YES 改為 anonymous_enable=NO
ESC返回,輸入“:wq”保存並推出

 

刷新防火牆

#iptables -F

 

其中vsftpd的主配置文件是:

 /etc/vsftpd/vsftpd.conf

 

實驗一:

如果我不允許FTP匿名登陸,我們可以修改vsftpd的主配置文件來實現

#vi /etc/vsftpd/vsftpd.conf 把anonymous_enable=YES 改為anonymous_enable=NO

 

實驗二:

windows中FTP伺服器可以設置歡迎詞,最大連接數,那我們在Linux的FTP伺服器中設置呢?我要回答的是:同樣可以,我們同樣可以vsftpd的主配置文件來實現# vi /etc/vsftpd/vsftpd.conf 

在最後添加ftpd_banner=welcome to here! 這就是歡迎詞Max_clients=100 這就表示最多可以有100個用戶同時訪問重啟vsftpd即可!

 

實驗三:

如果我想把借我錢不還的同事(lilei),不想讓他登陸到我們的FTP站點,那我可以把用戶lilei添加到vi /etc/vsftpd.ftpusers 

 

實驗四:

上午總經理說要提拔公司的一小部分人,聽到這個消息,趕緊行動,我只允許總經理一個人可以登陸FTP伺服器,其他人休想,拍經理馬匹,限制其他人。我可以這樣做:# vi /etc/vsftpd/vsftpd.conf 

到最後添加2條,

userlist_deny=NO /這個列表裡的人不拒絕,其他人拒絕(包括匿名)

userlist_file=/etc/mp /指明列表的路徑

 

vsftpd配置文件採用“#”作為註釋符,以“#”開頭的行和空白行在解析時將被忽略,其餘的行被視為配置命令行,每個配置命令的“=”兩邊不要留有空格。對於每個配置命令,在配置文件中還列出了相關的配置說明,利用vi編輯器可實現對配置文件的編輯修改。方法如下:
     #vi /etc/vsftpd/vsftpd.conf

 

 

1.登錄和對匿名用戶的設置

 

write_enable=YES               //是否對登錄用戶開啟寫許可權。屬全局性設置。預設NO
local_enable=YES               //是否允許本地用戶登錄FTP伺服器。預設為NO
anonymous_enable=YES          //設置是否允許匿名用戶登錄FTP伺服器。預設為YES
ftp_username=ftp                //定義匿名用戶的賬戶名稱,預設值為ftp。
no_anon_password=YES             //匿名用戶登錄時是否詢問口令。設置為YES,則不詢問。默 
認NO
anon_world_readable_only=YES   //匿名用戶是否允許下載可閱讀的文檔,預設為YES。
   anon_upload_enable=YES      //是否允許匿名用戶上傳文件。只有在write_enable設置為
YES時,該配置項才有效。而且匿名用戶對相應的目錄必須有寫許可權。預設為NO。
anon_mkdir_write_enable=YES //是否允許匿名用戶創建目錄。只有在write_enable設置為    YES時有效。且匿名用戶對上層目錄有寫入的許可權。預設為NO。
anon_other_write_enable=NO    //若設置為YES,則匿名用戶會被允許擁有多於
上傳和建立目錄的許可權,還會擁有刪除和更名許可權。預設值為NO。  

2.設置歡迎信息

用戶登錄FTP伺服器成功後,伺服器可向登錄用戶輸出預設置的歡迎信息。
ftpd_banner=Welcome to my FTP server. 
//該配置項用於設置比較簡短的歡迎信息。若歡迎信息較多,則可使用banner_file配置項。
banner_file=/etc/vsftpd/banner     
//設置用戶登錄時,將要顯示輸出的文件。該設置項將覆蓋ftpd_banner的設置。
dirmessage_enable=YES         
//設置是否顯示目錄消息。若設置為YES,則當用戶進入特定目錄(比如/var/ftp/Linux)時,將顯示該目錄中的由message_file配置項指定的文件(.message)中的內容。
message_file=.message          //設置目錄消息文件。可將顯示信息存入該文件。該文件需要放在 相應的目錄(比如/var/ftp/linux)下

 

3.設置用戶登錄後所在的目錄 
local_root=/var/ftp             
// 設置本地用戶登錄後所在的目錄。預設配置文件中沒有設置該項,此時用戶登錄FTP伺服器後,所在的目錄為該用戶的主目錄,對於root用戶,則為/root目錄。
anon_root=/var/ftp            
//設置匿名用戶登錄後所在的目錄。若未指定,則預設為/var/ftp目錄。

 

4.控制用戶是否允許切換到上級目錄 
       在預設配置下,用戶可以使用“cd..”命名切換到上級目錄。比如,若用戶登錄後所在的目錄為/var/ftp,則在“ftp>”命令行 下,執行“cd..”命令後,用戶將切換到其上級目錄/var,若繼續執行該命令,則可進入Linux系統的根目錄,從而可以對整個Linux的文件系統 進行操作。

若設置了write_enable=YES,則用戶還可對根目錄下的文件進行改寫操作,會給系統帶來極大的安全隱患,因此,必須防止用戶切換到Linux的根目錄,相關的配置項如下:
chroot_list_enable=YES                    
// 設置是否啟用chroot_list_file配置項指定的用戶列表文件。設置為YES則除了列在j/etc/vsftpd/chroot_list文件中的的帳號外,所有登錄的用戶都可以進入ftp根目錄之外的目錄。預設NO
chroot_list_file=/etc/vsftpd/chroot_list         
// 用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到FTP站點根目錄的上級目錄。
chroot_local_user=YES                    
// 用於指定用戶列表文件中的用戶,是否允許切換到上級目錄。預設NO
註意:要對本地用戶查看效果,需先設置local_root=/var/ftp

具體情況有以下幾種:
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時,所有用戶均可以切換到上級目錄。
5)當用戶不允許切換到上級目錄時,登錄後FTP站點的根目錄“/”是該FTP賬戶的主目錄,即文件的系統的/var/ftp目錄。

 

5.設置訪問控制 
(1)設置允許或不允許訪問的主機(見TBP14)
tcp_wrappers=YES用來設置vsftpd伺服器是否與tcp wrapper相結合,進行主機的訪問控制。預設設置為YES,vsftpd伺服器會檢查/etc/hosts.allow和/etc /hosts.deny中的設置,以決定請求連接的主機是否允許訪問該FTP伺服器。這兩個文件可以起到簡易的防火牆功能。
比如,若要僅允許192.168.168.1~192.168.168.254的用戶,可以訪問連接vsftpd伺服器,則可在/etc/hosts.allow文件中添加以下內容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny

(2)設置允許或不允許訪問的用戶
對用戶的訪問控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件來控制實現。相關配置命令如下:
userlist_enable=YES     
// 決定/etc/vsftpd/user_list文件是否啟用生效。YES則生效,NO不生效。
userlist_deny=YES       
// 決定/etc/vsftpd/user_list文件中的用戶是允許訪問還是不允許訪問。若設置為YES,則/etc/vsftpd/user_list 文件中的用戶將不允許訪問FTP伺服器;若設置為NO,則只有vsftpd.user_list文件中的用戶,才能訪問FTP伺服器。

 

6.設置訪問速度 
anon_max_rate=0       
//設置匿名用戶所能使用的最大傳輸速度,單位為b/s。若設置為0,則不受速度限制,此為預設值。
local_max_rate=0       
// 設置本地用戶所能使用的最大傳輸速度。預設為0,不受限制。

 

7.定義用戶配置文件 
在vsftpd伺服器中,不同用戶還可使用不同的配置,這要通過用戶配置文件來實現。
user_config_dir=/etc/vsftpd/userconf //用於設置用戶配置文件所在的目錄。
設置了該配置項後,當用戶登錄FTP伺服器時,系統就會到/etc/vsftpd/userconf目錄下讀取與當前用戶名相同的文件,並根據文件中的配 置命令,對當前用戶進行更進一步的配置。比如,利用用戶配置文件,可實現對不同用戶進行訪問的速度進行控制,在各用戶配置文件中,定義 local_max_rate配置,以決定該用戶允許的訪問速度。

 

8.與連接相關的設置 
listen=YES        
//設置vsftpd伺服器是否以standalone模式運行。以standalone模式運行是一種較好的方式,此時listen必須設置為YES, 此為預設值,建議不要更改。很多與伺服器運行相關的配置命令,需要此運行模式才有效。若設置為NO,則vsftpd不是以獨立的服務運行,要受 xinetd服務的管理控制,功能上會受限制。

max_clients=0
//設置vsftpd允許的最大連接數,預設為0,表示不受限制。若設置為150時,則同時允許有150個連接,超出的將拒絕建立連接。只有在以standalone模式運行時才有效。

max_per_ip=0
// 設置每個IP地址允許與FTP伺服器同時建立連接的數目。預設為0,不受限制。通常可對此配置進行設置,防止同一個用戶建立太多的連接。只有在以standalone模式運行時才有效。

listen_address=IP地址        
//設置在指定的IP地址上偵聽用戶的FTP請求。若不設置,則對伺服器所綁定的所有IP地址進行偵聽。只有在以standalone模式運行時才有效。 對於只綁定了一個IP地址的伺服器,不需要配置該項,預設情況下,配置文件中沒有該配置項。若伺服器同時綁定了多個IP地址,則應通過該配置項,指定在哪 個IP地址上提供FTP服務,即指定FTP伺服器所使用的IP地址。
註意:設置此值前後,可以通過netstat -tnl對比埠的監聽情況

accept_timeout=60            
//設置建立被動(PASV)數據連接的超時時間,單位為秒,預設值為60。
connect_timeout=60    
// PORT方式下建立數據連接的超時時間,單位為秒。
data_connection_timeout=300   
//設置建立FTP數據連接的超時時間,預設為300秒。

idle_session_timeout=600      
//設置多長時間不對FTP伺服器進行任何操作,則斷開該FTP連接,單位為秒,預設為600秒。即設置發呆的逾時時間,在這個時間內,若沒有數據傳送或指令的輸入,則會強行斷開連接。
pam_service_name=vsftpd     
//設置在PAM所使用的名稱,預設值為vsftpd。

setproctitle_enable=NO|YES   
//設置每個與FTP伺服器的連接,是否以不同的進程表現出來,預設值為NO,此時只有一個名為vsftpd的進程。若設置為YES,則每個連接都會有一個vsftpd進程,使用“ps -ef|grep ftp”命令可查看到詳細的FTP連接信息。安全起見,建議關閉。

 

9.FTP工作方式與埠設置 
(1)FTP工作方式簡介
      FTP的工作方式有兩種,一種是PORT FTP,另一種是PASV FTP。下麵介紹其工作方式。
二者的區別在於PORT FTP的數據傳輸埠是由FTP伺服器指定的,而PASV FTP則是由FTP客戶端指定的,而且每次數據連接所使用的埠號都不同。正因為如此,所以在CuteFTP等FTP客戶端軟體中,其連接類型設置項中有PORT和PASV兩種選擇。

      當FTP伺服器設置為PASV工作模式時,客戶端也必須設置為PASV連接類型。若客戶端連接類型設置為PORT,則能建立FTP連接,但在執行ls或get等需要數據請求的命令時,將會出現無響應並最終報告無法建立數據連接。

(2)與埠相關的配置
listen_port=21               
// 設置FTP伺服器建立連接所偵聽的埠,預設值為21。
連接非標準埠示例:ftp www.sunflower.org 7000
connect_from_port_20=YES   
// 預設值為YES,指定FTP數據傳輸連接使用20埠。若設置為NO,則進行數據連接時,所使用的埠由ftp_data_port指定。

ftp_data_port=20            
//設置PORT方式下FTP數據連接所使用的埠,預設值為20。
pasv_enable=YES|NO        
//若設置為YES,則使用PASV工作模式;若設置為NO,使用PORT模式。預設為YES,即使用PASV模式。
pasv_max_port=0            
//設置在PASV工作方式下,數據連接可以使用的埠範圍的上界。預設值為0,表示任意埠。
pasv_mim_port=0            
//設置在PASV工作方式下,數據連接可以使用的埠範圍的下界。預設值為0,表示任意埠。

 

10.設置傳輸模式 
FTP在傳輸數據時,可使用二進位(Binary)方式,也可使用ASCII模式來上傳或下載數據。
ascii_download_enable=YES //設置是否啟用ASCII模式下載數據。預設為NO。
ascii_upload_enable=YES    //設置是否啟用ASCII模式上傳數據。預設為NO。

 

11.設置上傳文檔的所屬關係和許可權 
(1)設置匿名上傳文檔的屬主
chown_uploads=YES           
//用於設置是否改變匿名用戶上傳的文檔的屬主。預設為NO。若設置為YES,則匿名用戶上傳的文檔的屬主將被設置為chown_username配置項所設置的用戶名。
chown_username=whoever     
//設置匿名用戶上傳的文檔的屬主名。只有chown_uploads=YES時才有效。建議不要設置為root用戶。 但系統默root

(2)新增文檔的許可權設定
local_umask=022            
//設置本地用戶新增文檔的umask,預設為022,對應的許可權為755。umask為022,對應的二進位數為000 010 010,將其取反為111 101 101,轉換成十進位數,即為許可權值755,代表文檔的所有者(屬主)有讀寫執行權,所屬組有讀和執行權,其他用戶有讀和執行權。022適合於大多數情 況,一般不需要更改。若設置為077,則對應的許可權為700。
anon_umask=022               //設置匿名用戶新增文檔的umask。預設077
file_open_mode=0755          //設置上傳文檔的許可權。許可權採用數字格式。 預設0666

 

12.日誌文件 
xferlog_enable=YES             //是否啟用上傳/下載日誌記錄。預設為NO
xferlog_file=var/log/vsftpd.log //設置日誌文件名及路徑。需啟用xferlog_enable選項
xferlog_std_format=YES           //日誌文件是否使用標準的xferlog日誌文件格式(與wu-ftpd使用的格式相同) 。預設為NO

 

13.其他設置 
text_userdb_names=NO       
//設置在執行ls命令時,是顯示UID、GID還是顯示出具體的用戶名或組名稱。預設為NO,以UID和GID方式顯示,若希望顯示用戶名和組名稱,則設置為YES。
ls_recurse_enable=YES       
//若設置為YES,則允許執行“ls –R”這個命令,預設值為NO。在配置文件中該配置項被註釋掉了,與此類似的還有一些配置,需要啟用時,將註釋符去掉併進行YES或NO的設置即可

 


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

-Advertisement-
Play Games
更多相關文章
  • 文件命名規則: 1.嚴格區分大小寫; 2.長度不能超過255個字元; 3.不能使用/當文件名 mkdir:創建空目錄 -p:parent,父目錄,逐級創建 -v:verbose,列印詳細信息 命令行展開:mkdir -pv /mnt/test/{x/m,y} 波浪線展開:~USERNAME tree ...
  • 需要把線上的access日誌發送到另一個程式接收 開始想著用python實現,雖然python也有實現類似tail F的方式,但太麻煩,而且效率也有折扣 偶然發現了shell可以實現網路client,並且只用幾行代碼就可以實現 先上代碼: 超級簡單,實際處理的邏輯的代碼就2行以下是代碼說明: 第一行 ...
  • 1.rsync 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份的優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件伺服器數據到遠端伺服器,對本地磁碟定期做數據鏡像等。 隨著應用系統規模不斷的擴大,對數據安全性和可靠性也提出了更高的要求,r ...
  • Apache主機一般支持.htaccess偽靜態,即可以實現綁定功能變數名稱到子目錄、一個空間多個站點。 ...
  • RAID防止硬碟物理損壞以及增加存儲設備的吞吐量,RAID常見的組合有0、1、5、和10 RAID0:至少需要兩塊硬碟,可以有效提高硬碟的性能和吞吐量,但沒有數據的冗餘和錯誤修複能力 將多塊硬碟通過硬體或軟體的方式串聯在一起,成為一個大的捲集,將數據依次寫到各個硬碟中,這樣性能會極大提升, 但若任意... ...
  • 命令 參數 說明 useradd 用於創建新的用戶 -d 指定用戶的家目錄(預設為/home/username) -D 顯示預設值 -e 新賬戶的過期日期,格式“YYYY-MM-DD” -g 指定一個初始用戶組(必須已經存在) -G 指定一個或多個擴展用戶組 -N 不創建同名的用戶組 -s 指定預設 ...
  • ADC0809轉換誤差+-1位,ADC0808轉換誤差+-5位 ...
  • 博主研究生所在的實驗室是搞雷達的,項目所涉及的板卡都是DSP+FPGA架構的,至於原因,只知道FPGA是並行的,用來處理速度要求高,運算結構簡單的大數據量過程或演算法,比如接收處理天線各陣元採樣的初始數據等;DSP是順序的,用來處理數據量較低但運算量較大的演算法,比如DBF演算法、矩陣求逆演算法等。看了下麵 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...