注意:
1. 刪除已安裝的vsftpd,在對應目錄下輸入:yum remove vsftpd;
2. 如果是普通用戶登錄linux,在命令前加上"sudo",可以提升權限;
- 安裝vsftpd
yum -y install vsftpd
此為下載安裝過程結尾部分截圖:
image.png
- 根目錄創建新文件夾
mkdir ftpfile
image.png
- 增加一個用戶,權限限制為只能訪問ftpfile目錄并且沒有登錄權限。
useradd ftpuser -d /ftpfile/ -s /sbin/nologin
image.png
- 將ftpfile的擁有者改為ftpuser
chown -R ftpuser.ftpuser /ftpfile/
image.png
- 設置tfpuser的密碼
passwd ftpuser
image.png
-
切換到ftpfile目錄下,創建文件index.html
image.png
image.png -
配置ftp服務器
image.png
修改或新增以下屬性:
- anonymous_enable=NO —— 是否允許匿名ftp,如否則選擇NO
- local_enable=YES —— 是否允許本地用戶登錄
- write_enable=YES —— 是否允許登陸用戶有寫權限。屬于全局設置,默認值為YES。
- local_umask=022 —— 默認的umask碼
- dirmessage_enable=YES —— 如果啟動這個選項,那么使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟。
- xferlog_enable=YES —— 是否啟用上傳/下載日志記錄。如果啟用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。
- connect_from_port_20=YES —— 指定FTP使用20端口進行數據傳輸,默認值為YES。
- xferlog_std_format=YES —— 如果啟用,則日志文件將會寫成xferlog的標準格式,如同wu-ftpd 一般。默認值為關閉。
- ftpd_banner=Welcome to ambermall FTP service. —— 這里用來定義歡迎話語的字符串,banner_file是檔案的形式,而ftpd_banner 則是字符串的形式。預設為無。
- local_root=/ftpfile —— 當本地用戶登入時,將被更換到定義的目錄下。默認值為各用戶的家目錄。
- chroot_local_user=YES —— 用于指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值為NO。
通過搭配能實現以下幾種效果:
①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。
②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。
③當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。
④當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。 - use_localtime=yes —— 使用本機時間
- chroot_list_enable=YES —— 設置是否啟用chroot_list_file配置項指定的用戶列表文件。默認值為NO。
- chroot_list_file=/etc/vsftpd/chroot_list —— 用于指定用戶列表文件,該文件用于控制哪些用戶可以切換到用戶家目錄的上級目錄。
- listen=YES —— 設置vsftpd服務器是否以standalone模式運行。以standalone模式運行是一種較好的方式,此時listen必須設置為YES,此為默認值。建議不要更改,有很多與服務器運行相關的配置命令,需要在此模式下才有效。若設置為NO,則vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制。
- pam_service_name=vsftpd —— 設置PAM使用的名稱,默認值為/etc/pam.d/vsftpd。
- userlist_enable=YES —— 是否啟用vsftpd.user_list文件。
- tcp_wrappers=YES —— 設置vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。默認值為YES。如果啟用,則vsftpd服務器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設置,來決定請求連接的主機,是否允許訪問該FTP服務器。這兩個文件可以起到簡易的防火墻功能。
比如:若要僅允許192.168.0.1—192.168.0.254的用戶可以連接FTP服務器,則在/etc/hosts.allow文件中添加以下內容:
vsftpd:192.168.0. :allow
all:all :deny - pasv_min_port=61001 —— 在PASV工作模式下,數據連接可以使用的端口范圍的最小端口,0 表示任意端口。默認值為0。
- pasv_max_port=62000 —— 在PASV工作模式下,數據連接可以使用的端口范圍的最大端口,0 表示任意端口。默認值為0。
更加詳細配置解釋,請參考: vsftpd配置文件詳解 - 配置完畢后,保存并關閉。創建chroot_list_file=/etc/vsftpd/chroot_list 指定的chroot_list 文件。
vim /etc/vsftpd/chroot_list
添加我們剛才創建的用戶名稱:
image.png
- 重啟ftp服務器
service vsftpd restart
image.png
- 網絡防火墻配置
vim /etc/sysconfig/iptables
#vsftpd
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --dport 61001:62000 -j ACCEPT
-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --dport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --dport 21 -j ACCEPT
重啟防火墻
service iptables restart
image.png
-
在linux里使用ftp客戶端:
- 安裝ftp
yum -y install ftp
- 連接ftp服務器
ftp ip地址 例如:ftp 192.168.1.5
- 輸入用戶mingcheng和密碼,登錄成功
-
輸入dir查看文件
image.png
細心的小伙伴,可能發現了最后出現but failed to open directory。這該怎么解決呢?
* vim /etc/selinux/config
* 修改SELINUX為disable,保存并關閉
image.png
* 輸入【setenforce 0】生效
* service vsftpd restart
這回再登錄就沒問題了:
image.png
-
瀏覽器里試試
image.png - vsftpd的vsftpd.conf文件我設置了chroot_local_user=YES和chroot_list_enable=YES。這代表:在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。
image.png
下面切換到上一級試試:
image.png
不過這樣做太危險了,所以還是把chroot_local_user改成No吧:
先退出客戶端:
image.png
vim /etc/vsftpd/vsftpd.conf
image.png