FTP全名是FileTransfer Protocol(文件傳輸協議) C/S架構linux
簡介:數據庫
下面是關於FTP這個服務的屬性vim
(1)FTP服務相關軟件windows
IISServ-U Vsftpd proftpd pureftpd服務器
(2)FTP客戶端相關軟件網絡
ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp架構
(3)VSFTP的守護進程併發
/usr/sbin/vsftpdapp
(4)FTP的啓動腳本tcp
/etc/init.d/vsftpd
(5)FTP的端口
TCP協議的20,21端口與客戶端進行通訊
20用於創建數據鏈接,傳輸文件數據。(數據端口)
21用於創建控制鏈接,並傳輸FTP控制命令。(命令端口)
(6)用戶控制列表文件
/etc/vsftpd/ftpusers 文件中的用戶禁止登陸FTP服務器(黑名單)
/etc/vsftpd/user_list 文件中的用戶可能被禁止或容許登陸FTP服務器,具體看vsftpd.conf的設置
(7)工做模式
主動模式:
客戶端想服務端21端口發送創建鏈接請求,須要傳輸數據時,客戶端會經過port命令告訴服務器本身監聽的端口,服務器會主動經過20端口與客戶端創建數據鏈接。
被動模式
客戶端想服務端21端口發送創建鏈接請求,須要傳輸數據時,
服務器以pasv命令告訴客戶我打開了某個端口(非20端口),你來鏈接我,客戶端會像服務器的非20端口創建數據鏈接
(8)根據傳輸文件是否進行字符轉換分爲:
文本模式(又稱爲ASCII)以文本序列傳輸數據,用的較多
二進制模式(又稱爲Binary模式)以二進制序列傳輸數據
主配置文件
/etc/vsftpd/vsftpd.conf
搭建FTP服務:
1、搭建yum倉庫
(1)mount/dev/cdrom /mnt
(2)cat /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-Server]
name=Red Hat Enterprise Server
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2、安裝
yum-y install vsftpd*
配置選項講解
實驗1
1. 建立測試文件
2. 匿名用戶ftp對/var/ftp/pub有寫入權限
3. 容許匿名用戶瀏覽
4. 容許用戶(匿名,本地,虛擬)有上傳權限
5. 容許匿名用戶有上傳權限
6. 容許匿名用戶有上傳文件夾權限
7. 禁止匿名用戶有刪除,覆蓋等權限
(1)查看ftp的默認根路徑,默認是有一個pub目錄(默認的跟目錄),
[root@Centos2~]# ls /var/ftp/
pub
(2)備份配置文件
cd /etc/vsftpd/vsftpd.confg
cp vsftpd.conf vsftpd.bak
vim vsftpd.conf
內容以下
write_enable=YES
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO 是否容許匿名用戶有其餘寫入權(更名,刪除,覆蓋)
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
(3)啓動服務
service vsftpd start
(4)改變根目錄的屬主,若是不改變的話,只能訪問,其餘權限不能生效。由於咱們是以ftp用戶的身份訪問的,而pub默認的屬主屬組是root。
chown ftp /var/ftp/pub
驗證:
在網絡或是計算中輸入ftp地址:格式以下圖。
咱們會看到默認的pub目錄。
進入到pub目錄下,能夠建立和上傳測試目錄了。如圖2
注意:(1)修改完配置以後須要重啓完服務才能生效
(2)還須要重新從客戶端登錄,不然修改後的配置看不到效果。
實驗2
1. 建立測試賬號u1、u2、u3密碼都爲「user」
2. 容許本地用戶訪問
3. 將權限掩碼設爲077
4. 將本地賬號禁錮在宿主目錄中
5. 只容許u1、u2兩個用戶能夠登陸
建立測試用戶,而且設置密碼
[root@crushlinux ~]# useradd u1
[root@crushlinux ~]# echo "user" |passwd --stdin u1
[root@crushlinux ~]# useradd u2
[root@crushlinux ~]# echo "user" |passwd --stdin u2
[root@crushlinux ~]# useradd u3
[root@crushlinux ~]# echo "user" |passwd --stdin u3
在配置文件中加入紅色部份內容
[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=077
chroot_local_user=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
將容許登錄的用戶加入到白名單中
vi /etc/vsftpd/user_list
u1
u2
service vsftpd restart
登錄驗證
格式爲:ftp://用戶名:密碼@ftpIP地址
登錄上默認是空白的,由於這是用戶的家目錄。
用u3用戶登錄,會報錯誤(windows不一樣系統報錯不會徹底一致):
實驗3
構建基於虛擬用戶的FTP服務
建立帳號數據
1.創建虛擬FTP用戶的賬號數據庫文件
2.建立FTP根目錄及虛擬用戶映射的系統用戶
3.創建支持虛擬用戶的PAM認證文件
添加虛擬用戶支持
4.在vsftpd.conf文件中添加支持配置
5.爲個別虛擬用戶創建獨立的配置文件
啓動服務並測試
6.從新加載vsftpd配置
7.使用虛擬FTP帳戶訪問測試
實驗部分
1.創建虛擬FTP用戶的賬號數據庫文件用到db_load工具先安裝軟件包
rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm
cd/etc/vsftpd/
2、建立虛擬用戶文件
vim user
a
1
b
1
c
1
基數行表明用戶名,偶數行表明密碼
經過db_load工具建立出Berkeley DB格式的數據庫文件
db_load -T -t hash -f user user.db
-f 指定數據原文件
-T 容許非Berkeley DB的應用程序使用文本格式轉換的DB數據文件
-t hash 讀取文件的基本方法
3、建立虛擬用戶對應的系統用戶
useradd -s /sbin/nologin vu
4、創建支持虛擬用戶的PAM認證文件
vi/etc/pam.d/vsftpd.vu
加入如下兩行
auth required /lib64/security/pam_userdb.sodb=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
對應剛纔生成user.db的文件
5、在vsftpd的配置文件中支持虛擬用戶
注意:在作虛擬用戶的時候,必定要去掉userlist_deny=NO
這個選項,不然會顯示用戶驗證失敗
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES 啓用用戶映射功能
guest_username=vu 指定映射的系統用戶名稱
pam_service_name=vsftpd.vu 指定新的PAM認證文件
local_enable=YES
local_umask=077
chroot_local_user=YES 若是紅色3條配置沒有的話就會報錯:用戶身份驗證失敗
virtual_use_local_privs=YES
若是沒有這條配置的話上傳將會顯示錯誤.這條最重要
還要注意每行配值的末尾不要有空行,不然也會有報錯
6.爲個別虛擬用戶創建獨立的配置文件
vi /etc/vsftpd/vsftpd.conf 加入下面一行
user_config_dir=/etc/vsftpd/user_dir 用戶配置目錄支持
爲用戶a、b創建獨立的配置目錄及文件這一行也是必須有的
mkdir /etc/vsftpd/user_dir
vim a
local_root=/test 規定了a用戶的根目錄 注意:必定要把目錄的屬主改成虛擬用戶對應的系統用戶。
默認就是全部權限
總結:本地用戶和虛擬用戶不能同時登陸、由於認證方式只有一種
本地是pam_service_name =vsftpd
虛擬是pam_service_name=vsftpd.vu
實驗4
1 修改vsftpd服務的監聽地址,端口
1.1 IP爲:192.168.200.129
1.2 端口爲:2121
2 使用vsftpd服務的被動模式
2.1 下限端口爲24500
2.2 上限端口爲24600
3 限制vsftpd服務的併發數,傳輸速度
3.1 限制併發客戶鏈接最多200
3.2 限制每一個IP地址的鏈接數最多50
3.3 限制匿名用戶傳輸速率爲50KB/s
3.4 限制本地用戶傳輸速率爲200KB/s
[root@crushlinux ~]# netstat-naptu |grep "vsftpd"
[root@crushlinux ~]# vi/etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.200.129
listen_port=2121
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600
max_clients=200
max_per_ip=50
anon_max_rate=50000
local_max_rate=200000
[root@crushlinux ~]# servicevsftpd restart
[root@crushlinux ~]# netstat-naptu |grep "vsftpd"
tcp 0 0 192.168.200.129:2121 0.0.0.0:* LISTEN 3552/vsftpd