[vsftpd] CentOS 7 安裝 ftp 伺服器,不再為虛擬機不能直接傳檔案而困擾!

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

(環境:CentOS 7.9, vsftpd 3.0.2)
  1. 安裝vsftpd
    $ sudo yum install -y vsftpd
    
  2. 修改設定檔(/etc/vsftpd/vsftpd.conf),因為只是要讓 VM 可以讀取我們 Host 想傳的檔案,因此可將 ftp server 掛在區域網路內,這樣只需要匿名登入即可
    #修改以下設定值
    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
    
  3. 啟用vsftpd
    $ sudo systemctl enable vsftpd
    $ sudo systemctl start vsftpd
    
  4. 設定防火牆
    $ sudo firewall-cmd --permanent --add-port=21/tcp             #開啟指令的port
    $ sudo firewall-cmd --permanent --add-port=60101-60110/tcp    #開啟被動式連線的port
    $ sudo firewall-cmd --reload
    
  5. 設定SELinux
    $ sudo setsebool -P ftpd_connect_all_unreserved=1 #設定這個才能使用ls/dir指令,否則出現425錯誤
    $ sudo setsebool -P ftpd_full_access=1 #設定這個才能上傳、修改檔名、刪除
    
  6. 創建匿名使用者可以上傳檔案的資料夾
    $ sudo mkdir /var/ftp/upload_anonymous
    $ sudo chown ftp:ftp /var/ftp/upload_anonymous/ #anonymous登入後是以 ftp 角色進行操作的
                                                    #因此需改變資料夾擁有者
    
  7. 至此萬事俱全,可以開始使用,匿名使用者只能在「upload_anonymous」資料夾中上傳或下載檔案!

留言

這個網誌中的熱門文章