安裝
sudo apt-get -y install vsftpd
啟動
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
設定
sudo vim /etc/vsftpd.conf
listen=NO # 阻止 vsftpd 在獨立模式下運行 listen_ipv6=YES # vsftpd 將監聽 ipv6 而不是 IPv4,你可以根據你的網絡情況設置 anonymous_enable=NO # 關閉匿名登錄 local_enable=YES # 允許本地用戶登錄 write_enable=YES # 啟用可以修改文件的 FTP 命令 local_umask=022 # 本地用戶創建文件的 umask 值 dirmessage_enable=YES # 當用戶第一次進入新目錄時顯示提示消息 xferlog_enable=YES # 一個存有詳細的上傳和下載信息的日誌文件 connect_from_port_20=YES # 在伺服器上針對 PORT 類型的連接使用埠 20(FTP 數據) xferlog_std_format=YES # 保持標準日誌文件格式 chroot_local_user=YES #變更ftp目錄為根目錄, 防止跳脫ftp之外 allow_writeable_chroot=YES pam_service_name=vsftpd # vsftpd 將使用的 PAM 驗證設備的名字 userlist_enable=YES # 允許 vsftpd 加載用戶名字列表 tcp_wrappers=YES # 打開 tcp 包裝器 utf8_filesystem=YES #防止中文亂碼
設定完後, 需重啟ftp
sudo systemctl restart vsftpd
新增帳號
sudo useradd -m -s /bin/bash shenny : 一定要加 -s, 否則無法登入
sudo passwd shenny
連線
在Windows下使用filezilla 連線, 即可登入
但登入後, 按上一層目錄, 就會離開使用者的家目錄, 甚至可達到根目錄, 這代誌可是非常的大條的, 所以要加入以下二條限制
chroot_local_user=YES
allow_writeable_chroot=YES
公用目錄
若需將公用的目錄顯示給每一個ftp的使用者, 使用軟連結是沒用的. 唯一的方法, 就是使用mount –bind
比如 /data/public為公用目錄, 則在每個使用者家目錄下, 作如下操作
mkdir public sudo mount --bind /data/public public
中文亂碼
使用Windows的Filezilla連線時, ubuntu系統中的中文會出現亂碼, 在vsftpd.conf加入下面的設定, 即可解決
utf8_filesystem=YES
記得重新啟動vsftpd