FTP服務器搭建

前戲

  • FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。
  • 常見的FTP服務器:
    • linux
    • Windows

以下以linux系統安裝vsftpd為例

環境準備

#關閉防火牆
[root@web02 ~]# systemctl stop firewalld
#查看selinux狀態
[root@web02 ~]# getenforce 
#關閉selinux
[root@web02 ~]# setenforce 0

安裝

使用rpm包安裝ftp

#查看vsftpd軟件包是否安裝
[root@web02 ~]# rpm -qa|grep vsftpd
#安裝
[root@web02 ~]# yum install -y vsftpd
[root@web02 ~]# systemctl status vsftpd

使用系統光盤中的安裝包

[root@web02 ~]# mount /dev/cdrom /mnt/
[root@web02 ~]# cd /mnt/Packages/
[root@web02 Packages]# ll|grep vsftpd
-rw-rw-r-- 1 root root   175412 Nov 12  2018 vsftpd-3.0.2-25.el7.x86_64.rpm
[root@web02 Packages]# rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm 

vsftpd配置文件詳解

#配置文件
[root@web02 ~]# rpm -ql vsftpd 
/etc/vsftpd/vsftpd.conf		#主配置文件
/var/ftp/pub				#默認情況下,匿名用戶根目錄

#用戶限制相關文件
[root@web02 ~]# ll /etc/vsftpd/
total 24
-rw------- 1 root root  125 Oct 31  2018 ftpusers		#用戶黑名單
-rw------- 1 root root  361 Oct 31  2018 user_list		#用戶白名單(由配置文件決定)
-rw-r--r-- 1 root root  534 Mar  6 01:06 vsftpd.conf
-rwxr--r-- 1 root root  338 Oct 31  2018 vsftpd_conf_migrate.sh  #vsftpd 操作的一些變量和設置腳本

#user_list: 指定的用戶是否可以訪問ftp服務器,通過vsftpd.conf文件中的userlist_deny的配置來決定配置中的用戶是否可以訪問,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 這三個配置允許文件中的用戶訪問FTP

#vsftpd主配置文件
[root@web02 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES			#允許匿名用戶訪問
anon_umask=022
anon_upload_enable=YES			#控制是否允許匿名用戶上傳文件
anon_mkdir_write_enable=YES		#控制是否允許匿名用戶創建目錄
anon_other_write_enable=YES		#控制匿名用戶上傳、下載、創建、刪除權限
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

#限制用戶目錄切換
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_use=NO

#用戶白名單
#userlist_enable=YES
#userlist_deny=NO
#userlist_file=/etc/vsftpd/vsftpd.user_list


#注意,匿名用戶只有訪問權限
#注意匿名、登錄用戶的家目錄權限為755

創建vsftpd登錄用戶

[root@web02 ~]# useradd test
[root@web02 ~]# passwd test

權限修改

[root@web02 ~]# chown -R ftp.ftp /var/ftp

客戶端連接服務端

命令行連接

[root@web02 ~]# ftp 10.197.184.74
Connected to 10.197.184.74 (10.197.184.74).
220 (vsFTPd 3.0.2)
Name (10.197.184.74:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Windows圖形化連接