一、簡介
vsftpd 全稱是:very secure FTP daemon 非常安全的ftp后台程序,及ftp 服務端
二、服務器端部署
1.安裝服務 yum install vsftpd -y
2.啟動服務 systemctl start vsftpd.service
3.查看狀態 systemctl status vsftpd.service
4.關閉服務 systemctl stop vsftpd.service
5.檢查端口 netstat -anp | grep 21 (找不到netstat命令時運行yum install net-tools)
三、創建ftp訪問用戶
1.創建用戶目錄 mkdir -p /home/wwwroot/ftptest
2.創建用戶 useradd -d /home/wwwroot/ftptest -g ftp -s /sbin/nologin ftptest
(-d 新用戶每次登陸時所使用的家目錄)(-g 指定用戶對應的用戶組 ftp分組是內置的,本來就存在,不需要自己創建)( -s /sbin/nologin 表示這個用戶不能用來登錄xshell這樣的客戶端。 這種不能登陸的用戶又叫做虛擬用戶)
3.設置目錄權限 chown -R ftptest /home/wwwroot/ftptest (擁有者設置為ftptest)
vi /etc/vsftpd/chroot_list (此文件本來是空的) 增加一行: ftptest
4.增加用戶允許寫權限
(vsftpd服務器是這樣的,一旦某個用戶被限制訪問了,那么默認情況下,該用戶的寫權限也被剝奪了。 這就導致ftp客戶端連接上服務器之后無法上傳文件。
這個時候,就需要打開此用戶的寫權限)
vi /etc/vsftpd/vsftpd.conf 在最后面新加一行:allow_writeable_chroot=YES
五、配置端口
1.vsftpd有兩種端口,一個是21端口,用來監聽客戶端連接請求的。 這個一般說來是固定的,就一直使用21端口。
另一種是,一旦獲取到請求之后,再專門用用戶服務端和客戶端傳輸數據的端口。
2.編輯配置文件
vi /etc/vsftpd/vsftpd.conf
在最后添加:
(表示使用被動模式,用於傳輸數據的端口分配從30000-30010之間)
六:解決用戶鑒權問題
(因為用戶 ftptest 是 nologin的,所以存在鑒權的問題。 )
1.編輯pam.d/vsftpd 文件
vi /etc/pam.d/vsftpd 注釋掉 #auth required pam_shells.so (這樣不去鑒權,從而允許 ftptest 這種 nologin用戶登錄 ftp 服務器.)
2.編輯shells 文件
vi /etc/shells 增加一行:/sbin/nologin (允許不能登錄系統的用戶通過鑒權)
七、重啟vsftpd服務器
通常重啟命令:service vsftpd restart
centos7改用命令:systemctl restart vsftpd.service
查看狀態:systemctl status vsftpd.service
八、阿里雲服務器還需配置安全組,新增21和 30000/30010端口
九、客戶端
1.ftp客戶端工具
FileZilla (所有平台)、WinSCP (Windows)、Transmit (Mac OS X)、FireFTP (所有平台與Firefox)、Cyberduck (Mac OS X)、ftprush(Windows)