Ubuntu 安装配置为FTP服务器

176 阅读3分钟

系统配置

image.png

配置 ftp 教程

1. 安装 vsftpd 软件包

  • 执行以下命令安装 vsftpd
sudo apt-get update
sudo apt-get install vsftpd
  • 执行 vsftpd -v 查看版本,验证是否安装成功

image.png

2. 配置文件

  • vim /etc/vsftpd.conf
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
  • 自定义配置项举例
chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

注意: 如果限制了用户不能切换其他目录,一定要在配置文件中新增 allow_writeable_chroot=YES,否则会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

3. 创建FTP用户

以下操作在 home目录下创建一个FTP主目录,然后创建一个普通用户

# 创建FTP用户主目录
sudo mkdir /home/uftp
# 添加FTP用户uftp,指定用户主目录和所用shell
# `-d` 选项指定用户的主目录,也就是用户登录后所在的默认目录。在这个例子中,`-d /home/uftp` 指定 `uftp` 用户的主目录为 `/home/uftp`。
# `-s` 选项指定用户的默认shell。Shell是一个命令行解释器,它允许用户与操作系统进行交互。在这个例子中,`-s /bin/bash` 指定 `uftp` 用户的默认shell为Bash。
sudo useradd -d /home/uftp -s /bin/bash uftp
# 设置密码
sudo passwd uftp
  • 额外配置:创建一个不能登陆,仅能通过ftp访问的用户,并给该用户指定一个已存在的文件目录
# 创建uftp用户,指定此用户的主目录。
# `-d` 选项用于指定用户的主目录;`-s` 选项用于指定用户的默认 shell。
# `/sbin/nologin` 是一个特殊的 shell,它不允许用户登录系统.
# 通常用于限制某些用户只能通过特定的服务(如FTP、SFTP等)进行远程访问,
# 而不能直接登录系统。
sudo useradd -d /data/liss -s /sbin/nologin uftp
# 设置密码
sudo passwd uftp
# 如果想要恢复为正常用户,可以执行以下命令:
sudo usermod -s /bin/bash uftp

**如果你创建的用户是只能通过ftp访问的用户,一定要删除 /etc/pam.d/vsftpd 配置文件,因为这个配置文件会导致使用用户名登录 ftp 失败**

4. 添加 vsftpd.chroot_list

编辑/etc/vsftpd.chroot_list文件,如果不存在则新创建一个,该文件用于存放方位FTP的用户

# 如果不存在会自动创建
sudo vim /etc/vsftpd.chroot_list

如果存在多个用户,则每个用户一行

5. 重启FTP服务使配置生效

sudo service vsftpd restart

使用ps -aux | grep vsftpd 查看服务是否启动

image.png

6. 测试连接效果

使用 FileZilla 连接成功

image.png

问题及解决方案

ftp上传文件报错:553 Could not create file

解决方案:blog.csdn.net/weixin_4353…

  • 打开vsftp.conf文件,添加如下配置
sudo gedit /etc/vsftpd.conf
allow_writeable_chroot=YES
  • 更改ftp文件夹权限
sudo chmod -R 777 /home/uftp