轻量服务器 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
posted @ 2020-08-15 17:47  imzhi  阅读(746)  评论(0编辑  收藏  举报