1.什麼是FTP 伺服器?
FTP 是 File Transfer Protocol(檔案傳輸協定)的英文簡稱,而中文簡稱為“文傳協定”。用于 Internet 上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。 基于不同的作業系統有不同的 FTP 應用程式,而所有這些應用程式都遵守同一種協定以傳輸檔案。
在 FTP 的使用當中,使用者經常遇到兩個概念:"下載下傳"(Download)和"上傳"(Upload)
2. 什麼是Vsftpd?
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd是一個 UNIX 類作業系統上運作的伺服器的名字,它可以運作在諸如 Linux、BSD、Solaris、HP-UNIX 等系統上面,是一個完全免費的、開放源代碼的 ftp 伺服器軟體,支援很多其他的FTP 伺服器所不支援的特征。
3.安裝Vsftpd
備注:自己在家做時,需要自己配好Yum倉庫
yum install vsftpd -y
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
lftp ip

能登陸并且顯示,表示安裝成功 vsftpd檔案資訊 /var/ftp ##預設釋出目錄 /etc/vsftpd ##配置目錄
用戶端通路時, 使用者身份可以分為:
1). 匿名使用者:沒有指定使用者身份, ftp身份實作從伺服器上傳和下載下傳檔案;
2). 本地使用者: -u指定使用者身份,使用者是伺服器端的使用者;
3). 虛拟使用者: -u指定使用者身份,但是伺服器端并不存在該使用者(id username)
沒有指定使用者身份
4.vsftpd服務的配置參數
#安裝完後,有/etc/vsftpd/vsftpd.conf 檔案,是 vsftp 的配置檔案。
1)匿名使用者設定
anonymous_enable=YES|NO ##匿名使用者登陸限制
匿名使用者上傳 vim /etc/vsftpd/vsftpd.conf write_enable=YES anon_upload_enable=YES chgrp ftp /var/ftp/pub chmod 775 /var/ftp/pub
匿名使用者家目錄修改
anon_root=/direcotry
匿名使用者建立目錄 anon_mkdir_write_enable=YES|NO匿名使用者上傳檔案預設權限修改 anon_umask=xxx![]()
FTP服務
>匿名使用者下載下傳
anon_world_readable_only=YES|NO ##設定參數值為no表示匿名使用者可以下載下傳
匿名使用者删除
anon_other_write_enable=YES|NO
匿名使用者使用的使用者身份修改 chown_uploads=YES chown_username=student chown_uploads_mode=0644
最大上傳速率
anon_max_rate=102400
最大連結數 max_clients=2
2)本地使用者設定
local_enable=YES|NO ##本地使用者登陸限制
write_enable=YES|NO ##本地使用者寫權限限制
本地使用者家目錄修改 local_root=/directory
本地使用者上傳檔案權限
local_umask=xxx
限制本地使用者浏覽/目錄 所有使用者被鎖定到自己的家目錄中 chroot_local_user=YES chmod u-w /home/*使用者黑名單建立 chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list![]()
FTP服務
使用者白名單建立
限制本地使用者登陸 vim /etc/vsftpd/ftpusers ##使用者黑名單 vim /etc/vsftpd/user_list ##使用者臨時黑名單使用者白名單設定 userlist_deny=NO /etc/vsftpd/user_list ##參數設定,此檔案變成使用者白名單,隻在名單中出現的使用者可以登陸ftp![]()
FTP服務
ftp虛拟使用者的設定
0). 準備
1). 建立虛拟帳号身份的檔案(注意: 不要出現空行或者多餘的空格)
vim /etc/vsftpd/loginusers ##檔案名稱任意
ftpuser1
123
ftpuser2
ftpuser3
2). 對使用者帳号和密碼進行加密
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
chmod 600 /etc/vsftpd/loginusers*
3). 編輯帳号和密碼處理的庫檔案
vim /etc/pam.d/ckvsftpd ##檔案名稱任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
4). 配置vsftpd配置檔案
pam_service_name=ckvsftpd # 虛拟使用者資訊認證檔案名稱
guest_enable=YES # 虛拟使用者開啟
虛拟帳号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser
虛拟帳号家目錄獨立設定)
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
虛拟帳号配置獨立)
案例實作目标:
1). ftpuser1使用者上傳和下載下傳檔案限速;
2). ftpuser2使用者上傳和下載下傳檔案不限速, 并且可以上傳檔案;
user_config_dir=/etc/vsftpd/conf.d
mkdir -p /etc/vsftpd/conf.d
vim /etc/vsftpd/conf.d/ftpuser1
在此檔案中設定配置檔案中的所有參數,此檔案的優先級高
anon_max_rate=1024
vim /etc/vsftpd/conf.d/ftpuser2
mkdir /ftp/ftpuser2/upload/
chown ftpuser /ftp/ftpuser2/upload/
systemctl restart vsftpd
測試限速
** server:
dd if=/dev/zero of= /ftp/ftpuser1/hello1 bs=1M count=100
dd if=/dev/zero of=/ftp/ftpuser2/hello2 bs=1M count=100
****client:
lftp 172.25.0.11 -u ftpuser1
get hello1
lftp 172.25.0.11 -u ftpuser2
get hello2
****測試檔案上傳:
cd upload/ put /etc/passwd