FTP(File Transfer Protocol,文件傳輸協議) 是 TCP/IP 協議組中的協議之一。
FTP協議包括兩個組成部分,
其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,
用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。
在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web服務器上。
此外,由於FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也采用該協議。
1.安裝ftp服務
在centos7系統上
[root@lsx04-ftp ~]# yum install vsftpd -y
[root@lsx04-ftp ~]# rpm -qa |grep vsftpd //查詢已安裝的軟件過濾出vsftpd的信息//
得到:
vsftpd-3.0.2-25.el7.x86_64
安裝成功
2.開啟VSFTPD
開啟服務
[root@lsx04-ftp ~]# systemctl start vsftpd
查詢21端口
[root@lsx04-ftp ~]# netstat -nultp | grep 21
此時可以通過ip地址訪問服務器(需要防火牆開放21端口,已經配置文件允許匿名訪問)
3.配置ftp權限
[root@lsx04-ftp ~]# vi /etc/vsftpd/vsftpd.conf
添加或修改成
# 禁用匿名用戶 anonymous_enable=NO # 禁止切換根目錄 chroot_local_user=YES # 設置FTP主目錄 local_root=/data/ftp # 配置FTP被動模式的端口 pasv_min_port=30000 pasv_max_port=30000
重啟vsftpd服務
4.創建FTP用戶
在centos添加用戶ftpuser
修改好密碼后:
[root@lsx04-ftp ~]# usermod -s /sbin/nologin ftpuser //限制其登錄
為用戶配主目錄
5.SElinux配置
VSFTPD是一個FTP服務器程序,然后SELinux是CentOS的防火牆組件, vsftpd 默認被 SELinux 攔截
解決方法有兩種:
方法1:
降低SElinux安全級別
vi /etc/sysconfig/selinux
設置SELINUX=enforcing改為SELINUX=permissive
重啟vsftpd服務
方法2:
在linux中設置ftp允許訪問
[root@lsx04-ftp ~]# getsebool -a | grep ftp
設置ftpd_full_access為on
[root@lsx04-ftp ~]# setsebool -P ftpd_full_access=on
重啟vsftpd服務,即可正常訪問FTP
備注:
[root@lsx04-ftp ~]# firewall-cmd --add-service=ftp --permanent //添加ftp服務到防火牆
ftp配置文件說明:
anonymous_enable=NO #允許匿名用戶訪問為了安全選擇關閉
local_enable=YES # 允許本地用戶登錄
write_enable=YES # 是否允許寫入
local_umask=022 # 本地用戶上傳文件的umask
dirmessage_enable=YES #為YES則進入目錄時顯示此目錄下由message_file選項指定的文本文件(,默認為.message)的內容
xferlog_enable=YES #開啟日志
xferlog_std_format=YES #標准格式
connect_from_port_20=YES
xferlog_file=/var/log/xferlog #ftp日志目錄
idle_session_timeout=6000 #設置客戶端連接時間
data_connection_timeout=1200 #設置數據連接時間 針對上傳,下載
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #設置為YES則下面的控制有效
chroot_list_enable=YES #若為NO,則記錄在chroot_list_file所指定的文件(默認是/etc/vsftpd.chroot_list)中的用戶將被chroot在登錄后所在目錄中,無法離開.如果為YES,則所記錄的用戶將不被chroot.這里YES.
chroot_local_user=YES
userlist_deny=NO #若設置為YES則記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶將無法login,並且將檢察下面的userlist_deny選項
userlist_enable=YES #若為NO,則僅接受記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶的login請求.若為YES則不接受這些用戶的請求.
userlist_file=/etc/vsftpd/user_list #白名單
chroot_list_enable=YES
local_root=/var/ftp/pub #根目錄
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_enable=YES # 允許本地用戶登錄
write_enable=YES # 是否允許寫入
local_umask=022 # 本地用戶上傳文件的umask
dirmessage_enable=YES #為YES則進入目錄時顯示此目錄下由message_file選項指定的文本文件(,默認為.message)的內容
xferlog_enable=YES #開啟日志
xferlog_std_format=YES #標准格式
connect_from_port_20=YES
xferlog_file=/var/log/xferlog #ftp日志目錄
idle_session_timeout=6000 #設置客戶端連接時間
data_connection_timeout=1200 #設置數據連接時間 針對上傳,下載
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #設置為YES則下面的控制有效
chroot_list_enable=YES #若為NO,則記錄在chroot_list_file所指定的文件(默認是/etc/vsftpd.chroot_list)中的用戶將被chroot在登錄后所在目錄中,無法離開.如果為YES,則所記錄的用戶將不被chroot.這里YES.
chroot_local_user=YES
userlist_deny=NO #若設置為YES則記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶將無法login,並且將檢察下面的userlist_deny選項
userlist_enable=YES #若為NO,則僅接受記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶的login請求.若為YES則不接受這些用戶的請求.
userlist_file=/etc/vsftpd/user_list #白名單
chroot_list_enable=YES
local_root=/var/ftp/pub #根目錄
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES