這篇講解 vsftp
的安裝和基礎配置(主要包括虛擬用戶的配置)。
注意:我的操作系統環境是騰訊雲輕量服務器 ubuntu 18.04。由於操作系統版本不同,配置文件的位置可能會有所不同。
安裝 vsftp
sudo apt-get install vsftpd
將 vsftp 原配置備份
cd /etc
sudo cp vsftpd.conf vsftpd.conf.bak
修改配置
vsftp.conf 配置中文說明參考:
- https://blog.csdn.net/aiynmimi/article/details/77012507
- https://www.cnblogs.com/xiongpq/p/3384759.html
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