操作系統環境:
CentOS Linux release 7.4.1708 (Core)
使用yum安裝ftp服務:
yum install -y vsftpd
添加系統用戶作為登錄ftp服務器並修改ftp配置文件:
[root@localhost ~]# useradd ftp1 -s /sbin/nologin -d /ftp_data && echo "123456"|passwd ftp1 --stdin #添加用戶並設置訪問的ftp目錄
[root@localhost ~]# chown ftp1:ftp1 /ftp_data/
[root@localhost vsftpd]# mv vsftpd.conf vsftpd.conf.bak #備份配置文件
[root@localhost vsftpd]# cat vsftpd.conf.bak |grep -v '^#' > vsftpd.conf
[root@localhost vsftpd]# vim vsftpd.conf #修改禁止虛擬用戶登錄ftp服務器
[root@localhost vsftpd]# systemctl restart vsftpd.service #重啟vsftpd
[root@localhost vsftpd]# systemctl enable vsftpd.service #開啟自動啟動vsftpf
關於vsftpd三種用戶的區分:
本地用戶:用戶在FTP服務器擁有賬號,且該賬號為本地用戶的賬號,可以通過自己的賬號和口令進行授權登錄,登錄目錄為自己的home目錄$HOME
虛擬用戶:用戶在FTP服務器上擁有賬號,但該賬號只能用於文件傳輸服務。登錄目錄為某一特定的目錄,通常可以上傳和下載
匿名用戶:用戶在FTP服務器上沒有賬號,登錄目錄為/var/ftp
關於配置文件/etc/vsftpd/vsftpd.conf參數說明:
anonymous_enable=NO # 不允許匿名訪問,禁用匿名登錄 chroot_local_user=YES # 啟用限定用戶在其主目錄下 use_localtime=YES # 使用本地時(自行添加) chroot_list_enable=YES #是否啟動限制用戶的名單 YES為啟用 NO禁用(包括注釋掉也為禁用) local_enable=YES # 允許使用本地帳戶進行FTP用戶登錄驗證 allow_writeable_chroot=YES # 如果啟用了限定用戶在其主目錄下需要添加這個配置,解決報錯 500 OOPS: vsftpd: refusing to run with writable root inside chroot() xferlog_enable=YES # 啟用上傳和下載的日志功能,默認開啟。 local_umask=022 # 設置本地用戶默認文件掩碼022 # FTP上本地的文件權限,默認是077,不過vsftpd安裝后的配置文件里默認是022
關閉防火牆和selinux:
[root@localhost vsftpd]# setenforce 0 #臨時關閉selinux
[root@localhost vsftpd]# systemctl stop firewalld.service
[root@localhost vsftpd]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久關閉
如果不願意關閉防火牆,需要防火牆添加FTP服務:
[root@localhost vsftpd]# systemctl start firewalld.service [root@localhost vsftpd]# firewall-cmd --permanent --zone=public --add-service=ftp success [root@localhost vsftpd]# firewall-cmd --reload success
客戶端測試可以正常連接服務器並成功上傳文件: