輕量服務器 ubuntu18.04 上 vsftp 的基礎配置


這篇講解 vsftp 的安裝和基礎配置(主要包括虛擬用戶的配置)。

注意:我的操作系統環境是騰訊雲輕量服務器 ubuntu 18.04。由於操作系統版本不同,配置文件的位置可能會有所不同。

安裝 vsftp

sudo apt-get install vsftpd

將 vsftp 原配置備份

cd /etc
sudo cp vsftpd.conf vsftpd.conf.bak

修改配置

vsftp.conf 配置中文說明參考:

vsftpd 主動和被動模式的說明:https://www.cnblogs.com/kuliuheng/p/3209744.html
因為被動模式需要開啟大量端口,修改防火牆配置,沒有特殊需求,禁用了被動(PASV)模式。

我的 vsftpd.conf 配置 On Gitee

因為博客園發布了文章后 <script> 標簽不生效,看不了 Gitee 掛件,這里貼上 Gitee 的網址去看:https://gitee.com/imzhi/codes/9e7bc1426lsigyxq83am551

基於虛擬用戶的配置

參考文章:https://www.cnblogs.com/xiongpq/p/3384759.html

修改 vsftpd.conf 配置

打開/etc/vsftpd/vsftpd.conf,做如下配置:

anonymous_enable=NO //設定不允許匿名訪問
local_enable=YES //設定本地用戶可以訪問。注:如使用虛擬宿主用戶,在該項目設定為NO的情況下所有虛擬用戶將無法訪問
chroot_list_enable=YES //使用戶不能離開主目錄
ascii_upload_enable=YES
ascii_download_enable=YES //設定支持ASCII模式的上傳和下載功能
pam_service_name=vsftpd //PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證

以下這些是關於vsftpd虛擬用戶支持的重要配置項,默認vsftpd.conf中不包含這些設定項目,需要自己手動添加

guest_enable=YES //設定啟用虛擬用戶功能
guest_username=ftp //指定虛擬用戶的宿主用戶,CentOS中已經有內置的ftp用戶了
user_config_dir=/etc/vsftpd/vuser_conf //設定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名

說明:上面兩段關於 vsftpd.conf 的配置已經在 vsftpd.conf On Gitee 里了。

安裝 Berkeley DB 工具

sudo apt-get install db-util -y

創建用戶密碼文件

新建文件 /etc/vsftpd/vuser_passwd.txt,注意奇行是用戶名,偶行是密碼:

test
123456

生成虛擬用戶認證的 db 文件

sudo db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

編輯認證文件/etc/pam.d/vsftpd

注釋掉原來的所有內容,再增加以下內容:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

創建虛擬用戶配置文件

其中 test 是 vuser_passwd.txt 奇數行的賬戶名:

sudo mkdir /etc/vsftpd/vuser_conf/
sudo vi /etc/vsftpd/vuser_conf/test

添加內容如下:

local_root=/ftp/www
write_enable=YES
anon_umask=022
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

local_root - 虛擬用戶根目錄,根據實際情況修改
anon_xxx 表示匿名用戶有權限做某樣事情,詳情參考:http://vsftpd.beasts.org/vsftpd_conf.html

最終/etc/vsftpd 目錄的結構供參考:

ubuntu@VM-0-14-ubuntu:/etc/vsftpd$ tree
.
├── vuser_conf
│   └── test
├── vuser_passwd.db
└── vuser_passwd.txt

1 directory, 3 files

重啟 vsftpd

sudo service vsftd restart

或者用命令:

sudo systemctl restart vsftpd

如果碰到了問題,直接運行 vsftpd 命令查看報錯:

sudo vsftpd /etc/vsftpd.conf

關於 vsftp 的 SSL 配置參考文章:https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-16-04#step-6-—-securing-transactions,下回講解。

如果連接上了 FTP,但是上傳文件提示 Permission Denied。可以嘗試把 FTP 根目錄所屬用戶和組改為 ftp

sudo chown ftp:ftp /ftp/www


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM