前置条件 ubuntu 版本 22
---
更新软件源
```shell
sudo apt update
```
安装vsftpd
```shell
sudo apt install vsftpd
```
安装成功后应该默认建立了一个 ftp用户,
使用下面命令可以查看
```shell
sudo cat /etc/passwd | grep ftp
#输出下面的代表有个ftp用户
#ftp:x:117:123:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
```
---
开始配置相关数据
**Ubuntu防火墙相关**
查看系统的防火墙
```shell
sudo ufw status
#输出 inactive表示防火墙关闭,active表示防火墙开始状态
```
如果防火墙是启动状态,按照下面步骤添加防火墙配置,关闭状态则无视
```shell
#添加规则
sudo ufw allow 20,21,990/tcp
sudo ufw allow 40000:50000/tcp
```
**添加ftp用户**
```shell
#ftptest为用户名,请换成你自己的用户名
sudo adduser ftptest
#后面会让你输入密码和其他信息,这些都不重要,随便输入
```
现在在home下应该有个 ftptest的文件夹,为创建的用户主目录
**配置ftp访问**
```shell
#打开配置文件,这里使用nano
sudo nano /etc/vsftpd.conf
```
你将看到vsftp的配置文件
下面几个必要的配置
- `listen=NO` 这个保持关闭
- `local_enable=YES` 是否允许本地用户登录,本地用户也就是我们上面增加的用户,所以一定为YES
- `write_enable=YES` 是否允许写入,也就是ftp上传之类的,这个看具体情况
- `allow_writeable_chroot=YES` vsftp默认允许用户主目录可写,设置了上面的需要同时设置这个
- `chroot_local_user=YES` 是否限定用户在主目录内,不限制的话用户可以回退查看系统的其他目录,为了安全为YES
- `pasv_min_port=40000` `pasv_max_port=50000` 这是两个配置,指定被动模式的端口范围,注意端口不要被防火墙拦截
重启服务应用配置
```shell
sudo systemctl restart vsftpd
```
---
**停用ftp**
```shell
#关闭服务
sudo service vsftpd stop
#禁用开机自启
sudo systemctl disable vsftpd.service
```
注意关闭对应端口,虽然不关也没啥问题
---
相关参考
- [3分钟带你了解FTP被动模式(PASV模式)_ftp pasv_君戈物语的博客-CSDN博客](https://blog.csdn.net/jackymvc/article/details/117813636)
- [如何在 Ubuntu 20.04 上为用户目录设置 vsftpd |数字海洋 (digitalocean.com)](https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-20-04)
- [【问题解决】ftp“无法获得目录列表”错误解决办法_无法获得目录列表server cannot accept argument._little_stupid_child的博客-CSDN博客](https://blog.csdn.net/little_stupid_child/article/details/79112908)
- [vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法_ Laurence的博客-CSDN博客](https://blog.csdn.net/bluishglc/article/details/42399439)
- [vsftpd中关于ftpusers和user_list两个文件的说明以及vsftpd.conf中的userlist_enable和userlist_deny两个配置项的解释_ Laurence的博客-CSDN博客](https://blog.csdn.net/bluishglc/article/details/42273197)、
- [vsftpd 配置:chroot_local_user与chroot_list_enable详解_ Laurence的博客-CSDN博客](https://blog.csdn.net/bluishglc/article/details/42398811)
ubuntu上搭建一个ftp服务器