要在 Ubuntu 18.04 上設置一個 FTP 服務器,滿足以下要求:
- 允許匿名登錄(無需賬號密碼)。
- 指定分享特定目錄下的文件。
- 只允許只讀下載。
可以使用 vsftpd
(Very Secure FTP Daemon)來實現。以下是詳細步驟:
1. 安裝 vsftpd
首先,安裝 vsftpd
:
sudo apt update
sudo apt install vsftpd -y
2. 配置 vsftpd
編輯 vsftpd
的配置文件:
sudo nano /etc/vsftpd.conf
根據需求修改或添加以下配置項:
(1) 基本配置
# 允許匿名登錄
anonymous_enable=YES# 禁止本地用戶登錄
local_enable=NO# 禁止寫入權限(只讀)
write_enable=NO# 設置匿名用戶的根目錄
anon_root=/home/cicd/workspace/build-images/# 允許匿名用戶下載文件
anon_download_enable=YES# 禁止匿名用戶上傳文件
anon_upload_enable=NO# 禁止匿名用戶創建目錄
anon_mkdir_write_enable=NO# 啟用被動模式(推薦用于局域網)
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100# 日志設置
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES# 其他安全設置
# connect_from_port_20=YES
# chroot_local_user=YES
# allow_writeable_chroot=YES
(2) 關閉不必要的功能
確保禁用了與需求無關的功能:
- 禁止本地用戶登錄:
local_enable=NO
- 禁止寫入權限:
write_enable=NO
(3) 設置匿名用戶的根目錄
指定匿名用戶的根目錄為 /home/cicd/workspace/build-images/
(你可以根據需要更改此路徑)。
3. 創建共享目錄并設置權限
(1) 創建共享目錄
假設你希望共享 /home/cicd/workspace/build-images/
目錄下的文件:
sudo mkdir -p /srv/ftp/shared
設置目錄的所有者和組
將目錄的所有者設置為本地用戶(例如 cicd),并將目錄的組設置為一個特定的組(例如 ftpusers):
sudo chown cicd:ftpusers -R /home/cicd/workspace/build-images/
# 如果ftpusers不存在
sudo groupadd ftpusers
sudo usermod -aG ftpusers nobody
# 設置目錄權限,7所有者有讀寫執行權限,5組有讀和執行權限,沒有寫權限,5其他用戶沒有權限
# 匿名登錄在ftp里使用nobody登錄,使用nobody組,所以other權限改成可讀可執行
sudo chmod 755 /home/cicd/workspace/build-images/
# 確保子目錄和文件權限一致
sudo find /home/cicd/workspace/build-images/ -type d -exec chmod 755 {} \;
sudo find /home/cicd/workspace/build-images/ -type f -exec chmod 644 {} \;
#啟用 setgid 位
sudo chmod g+s /home/cicd/workspace/build-images/
4. 啟動并啟用 vsftpd 服務
(1) 啟動 vsftpd
sudo systemctl start vsftpd
(2) 設置開機自啟
sudo systemctl enable vsftpd
(3) 檢查服務狀態
確保服務正常運行:
sudo systemctl status vsftpd
5. 測試 FTP 服務器
(1) 在局域網中訪問
從另一臺設備(例如 Windows 或其他 Linux 設備)訪問 FTP 服務器。可以使用瀏覽器、命令行工具或 FTP 客戶端。
示例:使用瀏覽器訪問
在瀏覽器中輸入:
ftp://<服務器IP地址>
示例:使用命令行訪問
ftp <服務器IP地址>
(2) 匿名登錄
無需輸入用戶名和密碼,直接按回車即可登錄。
(3) 下載文件
嘗試下載共享目錄中的文件,確保只讀權限生效。
7. 注意事項
-
安全性:
- 匿名 FTP 服務器可能會被濫用,建議僅在受信任的局域網中使用。
- 如果需要更高的安全性,可以考慮使用 SFTP(基于 SSH 的文件傳輸協議)。
-
日志監控:
- 查看 FTP 日志以監控訪問情況:
sudo tail -f /var/log/vsftpd.log
- 查看 FTP 日志以監控訪問情況:
-
磁盤空間:
- 確保共享目錄所在的磁盤分區有足夠的空間。
通過以上步驟,你可以在 Ubuntu 18.04 上成功設置一個匿名訪問、只讀下載的 FTP 服務器,并指定共享特定目錄下的文件。