一、了解ftp
FTP(File Transfer Protocol)是一個非常古老并且應用十分廣泛的檔案傳輸協定,FTP協定是現今使用最為廣泛的網絡檔案共享協定之一,我們現在也一直有在用着FTP協定來進行各種檔案的傳輸,FTP為我們提供了一種可靠的方式在網絡上進行檔案的共享。
二、準備虛拟機
本地鏡像使用centos-1908。也就是說挂載的鏡像是centos-1908,點開你的虛拟機設定看看配置的對不對。

systemctl stop firewalld //關閉防火牆
setenforce 0 //關閉se
1)配置 yum 源
把 yum 源去掉換成本地的 yum 源。把新的 yum 源輸入進去就行。
mv/etc/yum.repos.d/* /media/ //移除原有的yum源
vim /etc/yum.repos.d/lcoal.repo //在這個檔案裡添加yum源
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
mkdir -p /opt/centos //建立一個目錄mount /dev/sr0 /opt/centos //将那個鏡像挂在到cetos這個目錄
//檢視挂載情況
[root@ftp ~]# ls /opt/centos
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
//檢視 yum 源是否正常
[root@ftp ~]# yum repolist
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
源辨別 源名稱 狀态
!base/7/x86_64 CentOS-7 - Base 0
centos centos 0
!extras/7/x86_64 CentOS-7 - Extras 0
!updates/7/x86_64 CentOS-7 - Updates 0
repolist: 0
這樣 yum 源已經弄好了。
2)下載下傳vsftp
檢視完端口後是21端口就對了。
//下載下傳 vsftpd net-tools
[root@ftp ~]#yum install -y vim vsftpd net-tools
//啟用vsftpd
[root@ftp ~]#systemctl start vsftpd
//檢視端口
[root@ftp ~]# netstat -ntlp |grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 1769/vsftpd
檢視配置檔案裡的内容。
listen=YES:是否以獨立運作的方式監聽服務
listen_address=192.168.x.x:設定監聽的 IP 位址
listen_port=21:設定監聽 FTP 服務的端口号
write_enable=YES:是否啟用寫入權限
download_enable=YES:是否允許下載下傳檔案
userlist_enable=YES:是否啟用 user_list 清單檔案
userlist_deny=YES:是否禁用 user_list 中的使用者
max_clients=0:限制并發用戶端連接配接數
max_per_ip=0:限制同一 IP 位址的并發連接配接數
guest_enable=YES:啟用虛拟使用者
user_config_dir=/etc/vsftpd/vsftpd_user_conf :虛拟使用者使用的配置檔案目錄
allow_writeable_chroot=YES:允許寫入使用者主目錄
常用的匿名 FTP 配置項:
anonymous_enable=YES:啟用匿名通路
anon_umask=022:匿名使用者所上傳檔案的權限掩碼
anon_root=/var/ftp:匿名使用者的 FTP 根目錄
anon_upload_enable=YES:允許上傳檔案
anon_mkdir_write_enable=YES:允許建立目錄
anon_other_write_enable=YES:開放其他寫入權
anon_max_rate=0:限制最大傳輸速率(位元組/秒)
常用的本地使用者 FTP 配置項:
local_enable=YES:是否啟用本地系統使用者
local_umask=022:本地使用者所上傳檔案的權限掩碼
local_root=/var/ftp:設定本地使用者的 FTP 根目錄
chroot_local_user=YES:是否将使用者禁锢在主目錄
四、配置虛拟使用者
1)配置使用者名密碼
進入配置檔案裡建立一個存放密碼的檔案
vim /etc/vsftpd/users.conf //建立 users.conf 進入這個檔案
檔案裡面寫使用者名和密碼,第一行是使用者名第二行是密碼(預設:奇數列是使用者名、偶數列是密碼)
給密碼加密
db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db //密碼加密
vim /etc/vsftpd/users.conf //檢視密碼被加密後的情況
chmod 600 users.db //給 users.db 授權(隻有這裡面的使用者去讀寫)
chmod 600 users.* //授權(檔案裡面的使用者授權)
2)建立系統使用者
useradd vsftpd -d /home/vsftpd -s /sbin/nologin //建立使用者 (-d:指定使用者所在目錄 -s:指定一下不能登入 )
chmod -R 777 /home/vsftpd //給上面的檔案授權(777:可以上傳、下載下傳)
vim /etc/pam.d/vsftpd //修改裡面的檔案
放到這裡的話會避免很多的錯誤。
3)修改主配置檔案
vim /etc/vsftpd/vsftpd.conf //修改主配置檔案
現在配置的是 yunjisuan 如果還要使用那個就也把那個這樣配置一下即可。
// 建立子配置檔案目錄
[root@localhost ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
//進入建立的檔案
[root@localhost ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
//進入檔案裡添加配置
[root@localhost vsftpd_user_conf]# vim yunjisuan
local_root=/home/vsftpd/xmcsxy # 當本地使用者登入時,将被更換到定義的目錄下。預設值為各使用者的家目錄。
anon_upload_enable=YES # 是否允許登陸使用者有上傳權限。
write_enable=YES # 是否允許登陸使用者有寫權限。
# 重新開機服務,使配置檔案生效
[root@localhost vsftpd_user_conf]# systemctl restart vsftpd
[root@localhost vsftpd_user_conf]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.w
五、連結ftp
我使用的是 xftp 你們還可以使用其他的軟體去連結。連結上之後直接就可以直接去測試了,上傳一下檔案啊、下一下啊什麼的。
六、Linux下使用ftp
yum install -y lftp //現在 lftp
lftp [email protected] //輸入後回車 會讓輸入密碼
輸入密碼後 ls 檢視能否檢視,能檢視即為成功。
LFTP内部指令:
ls 顯示遠端檔案清單(!ls 顯示本地檔案清單)。
cd 切換遠端目錄(lcd 切換本地目錄)。
get 下載下傳遠端檔案。
mget 下載下傳遠端檔案(可以用通配符也就是 *)。
pget 使用多個線程來下載下傳遠端檔案, 預設為五個。
mirror 下載下傳/上傳(mirror -R)/同步 整個目錄。
put 上傳檔案。
mput 上傳多個檔案(支援通配符)。
mv 移動遠端檔案(遠端檔案改名)。
rm 删除遠端檔案。
mrm 删除多個遠端檔案(支援通配符)。
mkdir 建立遠端目錄。
rmdir 删除遠端目錄。
pwd 顯示目前遠端所在目錄(lpwd 顯示本地目錄)。
du 計算遠端目錄的大小
! 執行本地 shell的指令(由于lftp 沒有 lls, 故可用 !ls 來替代)
lcd 切換本地目錄
lpwd 顯示本地目錄
alias 定義别名
bookmark 設定書簽。
exit 退出ftp
七、黑白名單
ftpusers:
如果建立了使用者,設定了密碼,将使用者名添加到ftpusers中,則無法登入ftp服務。
user_list:
根據配置,可以是白名單,也可以是黑名單。userlist_enable和userlist_deny兩個選項聯合起來針對的是:本地全體使用者(除去ftpusers中的使用者)和出現在user_list檔案中的使用者以及不在在user_list檔案中的使用者這三類使用者集合進行的設定。
userlist_enable和userlist_deny兩個選項聯合起來針對的是:本地全體使用者(除去ftpusers中的使用者)和出現在user_list檔案中的使用者以及不在在user_list檔案中的使用者這三類使用者集合進行的設定。
為了說明這個問題,我們來建立兩個測試使用者:
test1: 在user_list中
test2:不在user_list中
然後我們分别給兩個配置項取不同的值,分4種Case進行測試:
Case 1: userlist_enable=YES, userlist_deny=YES
test1: 拒絕登入
test2: 允許登入
Case 2: userlist_enable=YES, userlist_deny=NO
test1: 允許登入
test2:拒絕登入(如user_list檔案開頭的注釋所述,甚至不會提示輸入密碼,即無登入提示框,直接拒絕連接配接)
Case 3: userlist_enable=NO,userlist_deny=NO
Case 4: userlist_enable=NO,userlist_deny=YES
當且僅當userlist_enable=YES時:userlist_deny項的配置才有效,user_list檔案才會被使用;當其為NO時,無論userlist_deny項為何值都是無效的,本地全體使用者(除去ftpusers中的使用者)都可以登入FTP
當userlist_enable=YES時,userlist_deny=YES時:user_list是一個黑名單,即:所有出現在名單中的使用者都會被拒絕登入;
當userlist_enable=YES時,userlist_deny=NO時:user_list是一個白名單,即:隻有出現在名單中的使用者才會被準許登入(user_list之外的使用者都被拒絕登入);另外需要特别提醒的是:使用白名單後,匿名使用者将無法登入!除非顯式在user_list中加入一行:anonymous