nature book bug burger costumes doctors hospital office shoes skull rocket

Ubuntu 下搭建 FTP 服务

通过 vsftpd 在 Ubuntu 搭建 FTP 服务时,遇到许多坑,决定记录下来。

简介

vsftpd 是非常容易配置的 FTP 服务端,通过创建系统用户,来创建 FTP 用户。

所以,本文会介绍如何创建系统用户,以及用户默认文件夹。
并且,介绍基础的 vsftpd 配置文件修改。

系统用户

创建用户 lee,并且设置用户默认目录为 /home/lee

sudo useradd -d /home/lee -M lee

设置 lee 的密码,请输入两次。(输入的时候不会显示,无需介意继续输)

sudo passwd lee

顺便说一下,修改用户密码也是这个命令!

创建用户默认目录,并且设置最高权限

sudo mkdir -m 777 /home/lee

特别申明

所有的用户信息,保存在 /etc/passwd 文件,通过修改这个文件,可以修改用户的默认文件夹。

sudo vi /etc/passwd #用 vi 编辑

不要乱改噢

安装FTP服务

我们使用 vsftpd,首先安装

sudo apt-get install vsftpd

安装成功后,可以用 service 管理服务了。

安装成功以后,默认配置路径在 /etc/vsftpd.conf,并且自动创建了一个系统用户:ftp

前方高能

这里有个坑!自动创建的 ftp 用户,默认文件夹在 /srv/ftp。如果之后想使用这个用户登录 FTP,一定要去 /etc/passwd 修改他的默认路径。(因为新建的系统用户,默认文件夹都在 /home 下,这样容易管理)

sudo mkdir -m 777 /home/ftp #创建 ftp 用户默认文件夹

修改用户默认文件夹,打开 /etc/passwd 找到 ftp 用户那行,把默认文件夹改去刚刚新建的路径。

配置FTP文件

用 vi 编辑配置文件:

sudo vi /etc/vsftpd.conf

(提示:vi 中命令模式输入 ‘/‘ 查找定位)

修改这些信息:

  1. anonymous_enable=NO (不予许匿名用户)
  2. local_enable=YES (允许本地用户登录)
  3. write_enable=YES(允许本地用户写的权限)
  4. chroot_local_user=YES(是否将所有用户限制在主目录)
  5. chroot_list_enable=YES(是否启动限制用户的名单)
  6. chroot_list_file=/etc/vsftpd.chroot_list(可在文件中设置多个账号)
  7. pam_service_name=ftp (服务名为 ftp)

其中第 6 条,设置的文件默认是不存在的,需要新建。必须一行一个的把账号加进去,我们用 vi 新建这个文件,并且把上面的 lee 添加进来。

vi /etc/vsftpd.chroot_list #编辑文件,不存在则自动创建

内容写

lee

最后,修改了配置文件需要重启服务。

sudo service vsftpd restart

命令行登录

FTP 可以使用命令行登录,比如

ftp lee@localhost

之后输入密码

  • lee 是用户名
  • localhost 是主机地址

客户端登录

Windows 推荐 FlashFTP,简单易用。
Mac 推荐 CrossFTP,操作体验和 windows 类似。

可能的问题

登录后无法读写,可能是用户文件夹权限问题,设置为 777。另外检查用户的默认目录,是否是意料之内的。

参考资料