这篇讲解 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