vsftpd (very secure ftpd),這軟件在權限管理什么的也太安全了點,一點小細節出問題也會出現訪問不了的問題。只是想架個ftp局域網傳文件,一些博客里小細節和背后設計沒有提到,踩了一點坑,記錄一下簡單的匿名ftp訪問方案。
主要步驟
1. 使用包管理器安裝 vsftpd
。(apt, yum, pacman等)
2. 修改配置文件 /etc/vsftpd.conf
anonymous_enable=YES # 允許匿名訪問
write_enable=YES # 允許寫文件
anon_upload_enable=YES # 允許匿名用戶上傳文件
anon_mkdir_write_enable=YES # 允許匿名用戶創建目錄和寫權限
anon_other_write_enable=YES # 允許匿名用戶刪除、重命名等其它權限 這個在配置文件里默認找不到
3. 新建匿名訪問的用戶和文件夾
通過 local_enable
選項能夠允許ftp通過本地用戶訪問,登錄之后會訪問用戶的主目錄。當使用匿名用戶訪問時,vsftpd會將用戶名為ftp的用戶作為登錄用戶,進入ftp用戶的主目錄。
注意,考慮到安全問題,ftp匿名用戶的主目錄必須為只讀,如果需要上傳文件,需要在主目錄下新建有寫權限的文件夾。
通常會選擇/var/ftp
文件夾存放文件而不是用戶默認的/home
,因此可以修改用戶的主目錄位置(一般放在/var/ftp),不修改也能用。再次強調,注意主目錄對ftp用戶的權限必須為只讀。
sudo mkdir /var/ftp # 新建用戶文件夾
sudo useradd -d /var/ftp ftp # 新建用戶,並指定用戶home目錄
# 如果ftp用戶已經存在,在/etc/passwd文件里改用戶目錄為/var/ftp
sudo mkdir /var/ftp/pub # 新建一個用於寫數據的文件夾
sudo chmod 777 /var/ftp/pub # 修改文件夾權限
4. 啟動服務
systemctl start vsftpd
其它
防火牆和SELinux如果使用了需要添加響應的通過規則。
測試訪問可以直接用瀏覽器 ftp://ip_address
,linux下可以使用FileZilla。