虽然平时可以用 sftp 或 webdav 代替,但是有些时候客户端只支持 ftp 链接,所以介绍下在服务器上安装 ftp server 的简单方法。

系统平台:Ubuntu server 20.04

安装 vsftpd

主要是通过 vsftpd 实现 ftp 功能的,首先安装:

apt update && apt install vsftpd

安装好后,vsftpd 会自动启动,可以查看当前运行状态:

systemctl status vsftpd

● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-04-27 19:35:30 IST; 13s ago
   Main PID: 54532 (vsftpd)
      Tasks: 1 (limit: 1137)
     Memory: 652.0K
     CGroup: /system.slice/vsftpd.service
             └─54532 /usr/sbin/vsftpd /etc/vsftpd.conf

Apr 27 19:35:30 ubuntu systemd[1]: Starting vsftpd FTP server...
Apr 27 19:35:30 ubuntu systemd[1]: Started vsftpd FTP server.

设置为开机自动启动:

systemctl enable vsftpd

创建 ftp 用户

默认安装好后,会自动创建一个 ftp 用户,这个用户经过我测试无法登录 ftp 服务,这里我们自己创建一个新用户用于登录 ftp,这里创建用户名为 ftpuser:

adduser ftpuser

期间会提示输入创建用户的密码。

我们只需要这个新用户登录 ftp 不需要它能够访问 ssh 服务,所以下面我们将这个用户排除在 ssh 用户之外,编辑 /etc/ssh/sshd_config 文件,在最后一行添加以下内容:

DenyUsers ftpuser

保存后重启 ssh 服务:

sudo service sshd restart

ftp 目录及权限

我们新建一个用于 ftp 的目录:

mkdir /home/www/ftp

将此目录所有者设置为上面创建的 ftpuser:

chown -R ftpuser:ftpuser /home/www/ftp

默认情况下 ftp 目录的根路径不允许有写权限,否则链接的时候会报错,所以我们取消这个文件夹的对应权限:

chmod a-w /home/www/ftp

如果想要上传文件,我们可以在这个文件夹内新建一个文件夹专门用来上传:

mkdir /home/www/ftp/uploads

同样的文件夹所有者为 ftpuser:

chown -R ftpuser:ftpuser /home/www/ftp/uploads

vsftpd 配置文件

vsftpd 配置文件路径为:/etc/vsftpd.conf,打开并修改如下设置,最后一行配置文件中没有的话需要自己创建一下:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd

local_root=/home/www/ftp

修改完成后重启服务:

systemctl restart vsftpd

此时就可以使用 ftp 客户端连接到 ftp 服务器了。

为了更加安全,推荐配置 ssl 证书,可以参考:Secure FTP with TLS (Recommended)

以上就是 ftp server 的简单安装及配置教程。

参考链接

How To Install an FTP server (vsftpd) on Ubuntu 20.04/20.10
FTP Server