Linux:FTP服務器的搭建

FTP服務器的簡介

系統用戶
即系統本機的用戶。Linux通常不會針對實體用戶進行限制,所以實體用戶能夠針對整個文件
系統進行工做。但一般不但願他們經過FTP方式遠程訪問系統。
虛擬用戶
只能採用FTP方式使用系統的用戶,不能直接使用Shell登陸系統,即虛擬用戶,訪問服務器
時須要驗證。大多數FTP用戶是這類用戶。
匿名用戶
對於公共性質的服務器能夠提供匿名用戶訪問,用戶名:anonymous。但在使用匿名用戶時,
應對其進行儘量多的限制,權限較低,如:同時鏈接的用戶數量受限,訪問的文件數目受限,
不能上傳文件,容許操做的指令較少,設置匿用戶同時登入的最大聯機數量等。

FTP服務器的安裝

使用yum安裝vsftpd軟件包
#yum install vsftpd ftp
啓動服務並設置開機自啓
#systemctl start vsftpd.service 
#systemctl enable vsftpd.service
設置防火牆與selinux機制
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload
#setenforce 0

配置訪問

配置匿名用戶訪問FTP
ftp的配置文件
ftp的配置文件是:/etc/vsftpd/vsftpd.conf 
設置匿名用戶訪問ftp:
anonymous_enable=YES
設置匿名用戶登陸ftp時不輸入密碼
設置匿名用戶登陸ftp時不輸入密碼:
no_anon_password=YES
ftpd_banner= welcome to our home!   //設置提示內容
設置匿名用戶上傳、新建、刪除文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=yes
設置文件權限
chmod 777 pub   不推薦使用

setfacl -m u:ftp:rwx pub   推薦使用
設置匿名用戶上傳或新建文件的權限
若是使用vsftp的是本地用戶,則要修改配置文件中的 local_umask 的值;

若是使用vsftp的是虛擬用戶,則要修改配置文件中的 anon_umask 的值。

umask = 022 時,新建的目錄 權限是755,文件的權限是 644;

umask = 077 時,新建的目錄 權限是700,文件的權限時 600。
設置不容許系統用戶登陸,只能匿名用戶登陸
anonymous_enable=YES

local_enable=no
設置匿名用戶訪問ftp的默認目錄
anon_root=/var/ftp

anon_root=/var/public

      注意:要修改vsftp服務器匿名用戶默認目錄時,不能夠將anon_root設置爲一個其餘帳號已有的家目錄,不然不能實現匿名用戶訪問ftp服務器。
配置系統用戶訪問FTP
設置系統用戶只能訪問本身的主目錄
設置系統用戶只能訪問本身的主目錄並具備全部權限,不容許切換到系統的其餘目錄

chroot_local_user=YES   控制用戶訪問路徑訪問本身的主目錄,不能切換到其餘目錄

allow_writeable_chroot=YES  容許寫入

ftpd_banner= welcome to our home!

max_clients=30   設置最大鏈接數

idle_session_timeout=600   設置超時時間
設置系統用戶訪問指定目錄
設置系統用戶訪問指定目錄,不容許切換到系統的其餘目錄,並具上傳、下載、新建、刪除的權限。

local_root=/mnt/public/   設置系統用戶訪問ftp的默認目錄

write_enable=YES          容許寫入

chroot_local_user=YES      控制用戶訪問路徑訪問指定目錄,不能切換到其餘目錄

allow_writeable_chroot=YES 容許寫入

修改/mnt/public/目錄下的文件權限
基於本地用戶的訪問控制
默認狀況下
默認狀況下,ftp服務器中全部系統用戶均可以訪問ftp,如何來限定只有指定的系統用戶能夠訪問呢?vsftp中提供了兩個與系統用戶相關的配置文件:

/etc/vsftpd/ftpusers  提供了一份用於禁止登陸的ftp用戶列表(黑名單)。 
                      此文件中包含的用戶將被禁止登陸vsftpd服務器,無論該用戶是否在
                      /etc/vfsftpd/user_list中出現。
    
/etc/vsftpd/user_list 提供了一份用於容許登陸的ftp用戶列表(白名單),
                      此文件中包含的用戶可能被禁止登陸,可能被容許登陸。
具體配置
具體在主配置文件vsftpd.conf中決定:
    當存在userlist_enable=YES時,user_list文件生效。
    當存在userlist_deny=YES時,則僅禁止列表中的賬戶登陸。
    當存在userlist_deny=NO時,則容許列表中用戶登陸。  
    其中:ftpusers文件的優先級要高於user_list文件,即若是一個用戶同時存在
          於兩個文件中,則被拒絕訪問ftp。
            舉例:只讓ftpuser用戶訪問ftp,那麼能夠進行以下設置:
                 #vim /etc/vsftpd/vsftpd.conf
                   userlist_enable=YES       啓用userlist用戶列表(系統默認設置)
                   userlist_deny=NO         只容許列表中的用戶登陸    
                #vim/etc/vsftpd/user_list

將容許登陸的用戶添加在最後

將服務重啓後,在客戶端測試,此時只有ftpuser用戶能夠訪問ftp

ftp日誌管理

日誌文件
Vsftp軟件搭建的FTP服務器的日誌文件的配置,在/etc/vsftpd.conf中找到:

xferlog_enable=YES   開啓FTP服務器記錄上傳下載的狀況

xferlog_std_format=YES    日誌格式

xferlog_file=路徑        指定日誌文件

默認爲:/var/log/xferlog
日誌文件輸出格式
(1)當前時間(爲本地時間),格式爲:DDD MMM dd hh:mm:ss YYYY

(2)傳輸時間:傳送文件所用時間,單位爲秒

(3)遠程主機名稱/IP:

(4)文件大小:傳輸文件的大小,單位爲byte

(5)文件名:傳輸文件名,包括路徑

(6)傳輸類型:a--以ASCII傳輸;b--以二進制文件傳輸

(7)特殊處理標誌:
_:不作任何特殊處理
c:文件是壓縮格式
u:文件是非壓縮格式
t:文件時tar格式

(8)傳輸方向:o 從FTP服務器想客戶端傳輸;i 從客戶端向FTP服務器傳輸

(9)訪問模式:a 匿名用戶;g 來賓用戶;r 系統中的用戶

(10)用戶名

(11)服務名:通常爲FTP

(12)認證方式:0 無; 1 RFC931認證

(13)認證用戶id:若是使用*,測表示沒法得到該id

(14)完成狀態:i 傳輸未完成;c表示傳輸已完成。

配置虛擬用戶訪問

安裝Vsftpd虛擬用戶須要用到的軟件及認證模塊
yum install pam* libdb-utils libdb* --skip-broken -y
建立虛擬用戶臨時文件/etc/vsftpd/ftpusers.txt,用戶名密碼格式
xxxxxx
123456
……
……
生成Vsftpd虛擬用戶數據庫認證文件,設置權限爲600
權限爲600 表示只有全部者能夠訪問
#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
   #chmod 600 /etc/vsftpd/vsftp_login.db
配置PAM認證文件:vim /etc/pam.d/vsftpd.vu
配置PAM認證文件:vim /etc/pam.d/vsftpd.vu

   auth   required   pam_userdb.so   db=/etc/vsftpd/vsftp_login

   account  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login
建立一個系統用戶,用於虛擬用戶映射
#useradd -s /sbin/nologin ftpuser
修改配置文件
修改配置文件:#vim /etc/vsftpd/vsftpd.conf 

   #pam_service_name=vsftpd

   pam_service_name=vsftpd.vu

   guest_enable=YES

   guest_username=ftpuser

   user_config_dir=/etc/vsftpd/vsftpd_user_conf

   virtual_use_local_privs=YES
分別爲虛擬用戶建立私有的虛擬目錄與獨立的配置文件
#mkdir /home/ftpuser/techftp

#mkdir /etc/vsftpd/vsftpd_user_conf

#vim techftp
     local_root=/home/ftpuser/techftp
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#mkdir /home/ftpuser/netftp

#vim netftp
     local_root=/home/ftpuser/netftp
write_enable=YES
virtual_use_local_privs=NO      #不具備可登陸用戶的權限     
anon_world_readable_only=YES             #可瀏覽目錄
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
相關文章
相關標籤/搜索