建立簡易的檔案交換伺服器,使用ftp及http server

1. 安裝 Ubuntu 16.04

2. 創建FTP使用者帳號,工作目錄

1. sudo useradd ftpuser -s /bin/bash             # 創建帳號 ftpuser 和 工作目錄 /home/ftpuser
2. sudo passwd ftpuser                           # 變更登入密碼,假設為123456
3. sudo usermod -g www-data ftpuser              # 將使用者 ftpuser 加入群組 www-data

4. sudo mkdir /home/ftpuser                      # 創建工作目錄 /home/ftpuser
5. sudo chown -R www-data.www-data /home/ftpuser # 變更目錄所有權為 www-data.www-data
6. sudo chmod -R g+w /home/ftpuser               # 所有www-data群組成員皆可存取此目錄

3. 安裝 lighttpd 和 vsftp

1. sudo apt-get update
2. sudo apt-get upgrade
3. sudo apt-get install lighttpd
4. sudo apt-get install vsftpd
5. sudo touch /etc/vsftpd.chroot_list

4. 設定 lighttpd

大部分的PC並不會裝設ftp客戶端
讓客戶使用瀏覽器來下載檔案
我捫只要給連結即可

1. sudo vim /etc/lighttpd/lighttpd.conf

2. 找到 server.document-root = "/var/www/html" 這行
3. 改成 server.document-root = "/home/ftpuser"

4. 將下面兩行加入檔案末端
    dir-listing.activate        = "enable"
    dir-listing.encoding        = "utf-8"

5. sudo service lighttpd reload

5. 設定 vsftpd

1. sudo vim /etc/vsftpd.conf

2. 找到 " listen=NO "
3. 改成 " listen=YES "

4. 找到 " listen_ipv6=YES "
5. 改成 " listen_ipv6=NO "

6. 找到 " #write_enable=YES "
7. 改成 " write_enable=YES "

8. 找到 " #local_umask=022 "
9. 改成 " local_umask=022 "

10. 找到
    #chroot_local_user=YES
    #chroot_list_enable=YES
    # (default follows)
    #chroot_list_file=/etc/vsftpd.chroot_list
11. 改成
    chroot_local_user=YES
    chroot_list_enable=YES
    # (default follows)
    chroot_list_file=/etc/vsftpd.chroot_list

12. 找到 " #utf8_filesystem=YES "
13. 改成 " utf8_filesystem=YES "

14. 檔案最後面加上
    pasv_enable=YES
    pasv_max_port=60100
    pasv_min_port=60000
    lock_upload_files=NO
    allow_writeable_chroot=YES

15. sudo service vsftpd restart

6. 注意事項

此時就可以使用filezilla等等的的程式上傳
並可以利用瀏覽器下載上傳的檔案

1. ftp 帳號,密碼是步驟2設定的
2. 如果使用AWS和Azure等雲端主機,必須開通外部防火牆21 command port,及 60000 ~ 61000 data port

7. 安全設定

若系統上有其它帳號
就必須建立連線白名單

1. sudo touch /etc/vsftpd.user_list

2. sudo vim /etc/vsftpd.conf
    將下面三行,放置檔案末端
    userlist_enable=YES
    userlist_file=/etc/vsftpd.user_list
    userlist_deny=NO

3. sudo vim /etc/vsftpd.user_list
   新增一行 ftpuser

4. sudo service vsftpd restart
5. 如此就只有ftpuser帳號可登入