FTP
一,FTP傳輸模式
1.主動模式:
服務器主動發起數據連接。
首先客戶端的高位端口向服務器的21端口建立FTP連接請求(連接請求包括:認證,用戶,密碼,連接模式,命令PORT端口);
FTP服務器響應ACK確認,服務器的21號端口和客戶端的高位端口建立ftp會話連接;
FTP服務器從自己的20號端口連接客戶端發送的連接請求是主動模式命令提供的端口;
客戶端發送ACK確認,開始數據傳輸
弊端:
客戶端的防火牆未關,可被攔截
2.被動模式:
客戶機主動發起數據連接。
首先客戶端的高位端口向服務器的21端口建立FTP連接請求(連接請求包括:認證,用戶,密碼,連接模式,命令PORT端口);
FTP服務器響應ACK確認,服務器的21號端口和客戶端的高位端口建立ftp會話連接,並告訴客戶端已開放20號端口,等你來連接;
客戶端用自己的一個高位端口連接服務器響應的一個高位端口;
服務器給客戶端發送ACK確認,開始數據傳輸
二,FTP用戶
類型:匿名用戶,本地用戶,虛擬用戶
虛擬機192.168.10.11作為服務器
yum -y install vsftpd
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
1.設置匿名用戶訪問FTP服務(最大權限)
anonymous_enable=YES #開啟匿名用戶訪問,默認已開啟
write_enable=YES #開放服務器的寫權限(若要上傳,必須開啟)
anon_umask=022 #設置匿名用戶所上傳數據的權限掩碼
anon_upload_enable=YES #允許匿名用戶上傳文件,默認注釋,需要取消注釋
anon_mkdir_write_enable=YES#允許匿名用戶創建目錄,默認注釋,需要取消
anon_other_write_enable=YES #允許刪除,重命名,覆蓋等
pam_service_name=vsftpd
userlist_enable=NO ####因未啟用本地用戶,可將用戶列表功能禁用
tcp_wrappers=YES
chmod 777 /var/ftp/pub
#給匿名用戶訪問ftp的根目錄下的pub子目錄設置最大權限,以便匿名用戶上傳數據
2.開啟服務,關閉防火牆和核心防護
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
永久關閉核心防護:
vim /etc/selinux/config
SELINUX=enforcing enforcing改為disabled
3.匿名訪問測試
1.Window主機在我的電腦瀏覽器地址欄中輸入ftp://192.168.10.11/ #####在里面進行傳文件 下文件 刪文件操作
C:\Users\Administrator>ftp 192.168.10.11
連接到 192.168.10.11。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.10.11:(none)): ftp
331 Please specify the password.
密碼:
230 Login successful.
ftp> pwd
257 "/"
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub
226 Directory send OK.
ftp: 收到 8 字節,用時 0.00秒 8000.00千字節/秒。
ftp> cd pub
250 Directory successfully changed.
ftp>get 文件名 下載文件到當前windows本地目錄
ftp>put 文件名 上傳文件到ftp目錄
2.linux主機上:192.168.10.12作為客戶端
yum -y install ftp ###yum安裝 ftp軟件
ftp 192.168.10.11 #ftp客戶端連接192.168.10.11
Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): ftp ####ftp匿名賬戶登錄
331 Please specify the password.
Password: ####沒有密碼直接回車
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /opt ####將本地目錄切換到/opt目錄
Local directory now /opt
4.本地用戶訪問設置
服務器192.168.10.11上
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anonymous_enable=NO
write_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES
userlist_enable=YES #####這個白名單功能開啟
userlist_deny=NO
#####黑名單功能關閉 不禁用user_list列表中的用戶
systemctl restart vsftpd
vi /etc/vsftpd/user_list #名單上添加用戶
useradd lisi
passwd lisi
二,配置ftp源
服務器配置:
安裝vsftpd服務端軟件
創建並制作yum遠程ftp站點的源
啟動ftp服務
yum -y install vsftpd
mkdir /var/ ftp/centos7#創建掛盤掛載目錄
mount /dev / sr0 / mnt
#鏡像掛載
cp -rf /mnt/ * /var/ ftp/ centos7/&
mkdir /var/ftp/other#創建目錄repodata數據文件
cd /var/ ftp/other/
createrepo -g /mnt/repodata/repomd.xml ./#工具建立倉庫數據文件
systemctl start vsftpd
客戶端配置:
創建遠程yum源的配置文件,yum安裝軟件驗證結果
vim /etc /yum.repos.d/ftp.repo
[centos7]
name=centos7
baseurl=ftp://192.168.118.11/centos7
enabled=1
gpgcheck=1
gpgkey=ftp://192.168.118.11/centos7/RPM-GPG-KEY-CentOS-7
[other]
name=centos7
baseurl=ftp://192.168.118.11/other
enabled=1
gpgcheck=0
測試:
yum clean all && yum makecache
yum repolist