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
>匿名用戶下載
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
用戶白名單建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限制本地用戶登陸
vim /etc/vsftpd/ftpusers ##用戶黑名單
vim /etc/vsftpd/user_list ##用戶臨時黑名單
用戶白名單設定
userlist_deny=NO
/etc/vsftpd/user_list ##參數設定,此文件變成用戶白名單,只在名單中出現的用戶可以登陸ftp
ftp虛擬用戶的設定
0). 準備
yum clean all
yum repolist
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl stop firewalld
systemctl disable firewalld
getenforce
setenforce 0
getenforce
vim /etc/sysconfig/selinux
**SELINUX=disabled**
1). 創建虛擬帳號身份的文件(注意: 不要出現空行或者多餘的空格)
vim /etc/vsftpd/loginusers ##文件名稱任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
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配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd # 虛擬用戶信息認證文件名稱
guest_enable=YES # 虛擬用戶開啓
虛擬帳號身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser
虛擬帳號家目錄獨立設定)
vim /etc/vsftpd/vsftpd.conf
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用戶上傳和下載文件不限速, 並且可以上傳文件;
vim /etc/vsftpd/vsftpd.conf
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
write_enable=YES
anon_upload_enable=YES
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
****測試文件上傳:
lftp 172.25.0.11 -u ftpuser2
cd upload/
put /etc/passwd