0%

[FTP] CentOS 7 安裝 vsftpd 省去實體與虛擬機之間傳輸設定

前言

在開發時免不了會使用到虛擬機的可能性,而在虛擬機與主機之間做檔案轉移時總會遇到奇奇怪怪的問題,先不論是否是虛擬機的問題,但總是會再這無關緊要的問題上浪費掉許多寶貴時間,因此研究如何架設 FTP,讓主機直接上傳檔案到 FTP 伺服器,再從虛擬機中下載,避免檔案轉移遇到的麻煩!

環境

  • CentOS 7.9

安裝 vsftpd

1
[user@localhost ~]$ sudo yum install -y vsftpd

修改設定檔 (/etc/vsftpd/vsftpd.conf),因為目標只是要讓 VM 可以讀取我們 Host 想傳的檔案,因此只需要將 FTP server 掛在區域網路內,這樣匿名登入是可以接受的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 修改以下設定值
anonymous_enable=YES # 允許匿名登入
local_enable=NO # 不允許實體使用者登入
write_enable=YES # 可寫入

# 新增以下設定值
pasv_enable=YES # 使用被動式連線,避免客戶端還需另外設定防火牆
pasv_min_port=60101 # 被動式連線的 FTP Data Port 設定為 60101 ~ 60110
pasv_max_port=60110

no_anon_password=YES # 匿名使用者不用輸入密碼

anon_other_write_enable=YES # 匿名使用者權限設定
anon_mkdir_write_enable=YES
anon_upload_enable=YES

anon_umask=022 # 匿名使用者上傳的檔案的預設權限
# user 與 other 需有 r 權限才可以被匿名使用者下載
# 此設定值預設為 077

啟用 vsftpd

1
2
[user@localhost ~]$ sudo systemctl enable vsftpd
[user@localhost ~]$ sudo systemctl start vsftpd

設定防火牆

在 CentOS 中幾乎所有的 Port 預設對外服務都是關閉的,無法由外部連入,因此需要另外設定才能開放給其他主機連線,FTP 有兩種 Port 需要設定

1
2
3
[user@localhost ~]$ sudo firewall-cmd --permanent --add-port=21/tcp           # Command Port
[user@localhost ~]$ sudo firewall-cmd --permanent --add-port=60101-60110/tcp # Data Port
[user@localhost ~]$ sudo firewall-cmd --reload

設定 SELinux

1
2
[user@localhost ~]$ sudo setsebool -P ftpd_connect_all_unreserved=1 # 設定這個才能使用 ls/dir 指令,否則出現 425 錯誤
[user@localhost ~]$ sudo setsebool -P ftpd_full_access=1 # 設定這個才能上傳、修改檔名、刪除

創建目錄

anonymous 登入後是以 ftp 角色進行操作的,因此需另外創建匿名使用者可以上傳與下載檔案的目錄

1
2
[user@localhost ~]$ sudo mkdir /var/ftp/upload_anonymous
[user@localhost ~]$ sudo chown ftp:ftp /var/ftp/upload_anonymous/

完成

至此萬事俱全,可以開始使用 ftp 了,匿名使用者被限制只能在 upload_anonymous 目錄中上傳或下載檔案!

很高興能在這裡幫助到您,歡迎登入 Liker 為我鼓掌 5 次,或者成為我的讚賞公民,鼓勵我繼續創造優質文章。
以最優質的內容回應您的鼓勵