1. 程式人生 > >Linux下FTP伺服器搭建與配置

Linux下FTP伺服器搭建與配置

環境檢查

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
[[email protected] ~]# getenforce 
Disabled
[[email protected] ~]# service iptables status
iptables:未執行防火牆。

##安裝vsftpd

yum install -y vsftpd

##簡化配置檔案

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.ori
grep -Ev '^#|^$' /etc/vsftpd/vsftpd.conf.ori > /etc/vsftpd/vsftpd.conf

vsfpt使用者配置

  • vsfpt使用者有三種模式
    1. 匿名使用者(anonymous免密碼登入)
    2. 本地使用者(FTP伺服器中的系統使用者)
    3. 虛擬使用者(基於本地使用者)

匿名使用者登入(無需配置)

service vsftpd start

在這裡插入圖片描述
在這裡插入圖片描述
輸入anonymous按兩次回車即可,不需要密碼

本地使用者(以root使用者為例)

  1. 修改配置檔案
vim /etc/vsftpd/vsftpd.conf

在這裡插入圖片描述

  1. 修改 ftpusers
vim /etc/vsfptd/ftpusers

把root使用者註釋
註釋掉root使用者,ftpusers相當於黑名單,檔案裡也有解釋

  1. 修改user_list
    在這裡插入圖片描述
    新增root使用者,檔案裡預設有系統自帶使用者,這個檔案相當於白名單,如果ftpusers和user_list同時存在root時那麼root將不被允許登入,如果系統中新增的使用者(Tom)登入ftp的話只需在ftpusers中新增重啟服務即可

虛擬使用者

  1. 修改配置檔案
vim /etc/vsftpd/vsftpd.conf

在這裡插入圖片描述
在結尾加上四行

  1. 設定FTP虛擬使用者賬號和密碼
vim /etc/vsfptd/vusers

在這裡插入圖片描述
奇數行是使用者名稱,偶數行是密碼

  1. 利用db_load將檔案轉換成db格式
db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
  1. 修改vsfpt的pam校驗
vim /etc/pam.d/vsftpd

在這裡插入圖片描述

64位系統用
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
32位系統使用
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vusers

  1. 新增FTP宿主使用者
useradd ftpusers -g ftp -d /var/home -s /sbin/nologin
  1. 虛擬使用者配置
 mkdir /etc/vsftpconf
 touch /etc/vsftpconf/jack
 touch /etc/vsftpconf/alex
  • 配置使用者檔案
vim /etc/vsftpconf/jack

在這裡插入圖片描述
多使用者的話除了local_root不一樣外其他的都一樣

  1. 重啟服務
service vsftpd restart

在這裡插入圖片描述

vsftpd.conf引數解釋

引數 解釋
anonymous_enable 是否允許匿名使用者登入
local_enable 是否允許本地使用者登入,主要對虛擬使用者的宿主使用者,如果設定NO那麼虛擬使用者無法登入
write_enable 設定可以進行寫操作
local_umask 設定上傳後文件的許可權掩碼,預設022
anon_upload_enable 匿名使用者上傳,預設NO
anon_mkdir_write_enable 匿名使用者建立目錄,預設NO
dirmessage_enable=YES 設定開啟日誌記錄功能
connect_from_port_20=YES 設定埠20進行資料連線
chown_uploads=NO 設定禁止上傳檔案更改宿主
xferlog_file Vsftpd的服務日誌儲存路徑。該檔案預設不存在。必須要手動touch出來,並且由於這裡更改了Vsftpd的服務宿主使用者為手動建立的Vsftpd。必須注意給與該使用者對日誌的寫入許可權,否則服務將啟動失敗。
xferlog_std_format=YES 設定日誌使用標準的記錄格式
idle_session_timeout=600 設定空閒連線超時時間,系統預設使用。將具體數值留給每個具體使用者具體指定,當然如果不指定的話,還是使用這裡的預設值600,單位秒。
data_connection_timeout=120 設定單次最大連續傳輸時間,這裡使用預設。將具體數值留給每個具體使用者具體指定,當然如果不指定的話,還是使用這裡的預設值120,單位秒
nopriv_user 設定支撐Vsftpd服務的宿主使用者為手動建立的Vsftpd使用者。一旦做出更改宿主使用者後,必須注意一起與該服務相關的讀寫檔案的讀寫賦權問題。比如日誌檔案就必須給與該使用者寫入許可權等。
async_abor_enable=YES 設定支援非同步傳輸功能
ascii_upload_enable=YES 設定支援ASCII模式的上傳功能
ascii_download_enable=YES 設定支援ASCII模式的下載功能
ftpd_banner 設定Vsftpd的登陸標語
chroot_list_enable 使用者是否可以登出自己的FTP主目錄,預設NO
ls_recurse_enable 使用者登陸FTP後使用"ls -R"的命令。該命令會對伺服器效能造成巨大開銷。如果該項被允許,那麼擋多使用者同時使用該命令時將會對該伺服器造成威脅,預設NO
listen 設定該Vsftpd服務工作在StandAlone模式下。順便展開說明一下,所謂StandAlone模式就是該服務擁有自己的守護程序支援,在ps -A命令下我們將可用看到vsftpd的守護程序名。如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,在該模式下 vsftpd將沒有自己的守護程序,而是由超級守護程序Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現。
userlist_enable 設定userlist_file中的使用者是否可以使用FTP(白名單),如果在ftpusers中用其中使用者將不被允許使用
tcp_wrappers 設定支援TCP Wrappers
guest_enable 是否啟用虛擬使用者
guest_username 設定虛擬使用者的宿主使用者
virtual_use_local_privs 設定虛擬使用者的許可權符合他們的宿主使用者
user_config_dir 設定虛擬使用者個人Vsftp的配置檔案存放路徑。也就是說,這個被指定的目錄裡,將存放每個Vsftp虛擬使用者個性的配置檔案,一個需要注意的地方就是這些配置檔名必須和虛擬使用者名稱相同。
pam_service_name 設定PAM服務下Vsftpd的驗證配置檔名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd檔案配置