一、准备工作
本教程使用的系统版本为Ubuntu Desktop 16.04,当然Ubuntu的其余版本操作步骤亦是雷同,下面就看一下具体的操作步骤。
1. 创建FTP目录
首先在 /home
目录下创建 FTP 工作目录,比如创建 uftp 目录:1
2
3
4$ sudo mkdir /home/uftp
[sudo] password for user_name:
$ ls /home
user_name uftp
2. 创建FTP用户
创建用户 ftpuesr,并指定主目录 /home/uftp
:1
$ sudo useradd -d /home/uftp/ ftpuser
设置用户 ftpuser 的密码。1
2
3
4$ sudo passwd ftpuser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
限制 ftpuser 不能shell登录,只用于 FTP 访问:1
$ sudo usermod -s /sbin/nologin ftpuser
设置 uftp 目录权限为归用户 ftpuser 所有:1
2
3
4
5
6
7$ sudo chown -R ftpuser:ftpuser /home/uftp/ # -R 表示递归里面所有子目录及文件
$ ll /home/
total 16
drwxr-xr-x 4 root root 4096 Sep 6 10:51 ./
drwxr-xr-x 24 root root 4096 Jun 26 20:37 ../
drwxr-xr-x 23 user_name user_name 4096 Sep 6 10:38 user_name/
drwxr-xr-x 2 ftpuser ftpuser 4096 Sep 6 10:51 uftp/
设置 uftp 目录的读写权限:1
$ sudo chmod 555 -R /home/uftp/
!!!注意:每次向 uftp 目录中添加新的文件时,都需要重新设置 uftp 的目录权限和读写权限。
二、安装FTP服务
1. 安装 vsftpd
在终端中执行下面的命令安装 vsftpd 服务:1
$ sudo apt install vsftpd
查看 vsftpd 运行状态,以确定是否安装成功:1
2
3
4
5
6
7
8
9
10
11
12
13
14$ service vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-09-06 13:26:25 +08; 10min ago
Process: 5742 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 5743 (vsftpd)
Tasks: 1 (limit: 19144)
CGroup: /system.slice/vsftpd.service
└─5743 /usr/sbin/vsftpd /etc/vsftpd.conf
Sep 06 13:26:25 ubuntu-18 systemd[1]: Stopping vsftpd FTP server...
Sep 06 13:26:25 ubuntu-18 systemd[1]: Stopped vsftpd FTP server.
Sep 06 13:26:25 ubuntu-18 systemd[1]: Starting vsftpd FTP server...
Sep 06 13:26:25 ubuntu-18 systemd[1]: Started vsftpd FTP server.
2. 配置匿名登录
查看 vsftpd 所在目录:1
2$ whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd.conf /usr/share/man/man8/vsftpd.8.gz
修改 /etc/vsftpd.conf
配置文件,记得首先备份原始文件:1
2$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup # backup
$ sudo vim /etc/vsftpd.conf
然后在配置文件中找到以下的内容,进行修改如下:1
2
3
4
5
6
7
8
9
10
11# 匿名访问必须设置FTP为独立启动模式
listen=YES
listen_ipv6=NO
# 允许匿名用户登录
anonymous_enable=YES
# 设置匿名访问的目录
anon_root=/home/uftp
# 配置匿名登录时,其余不需要修改
3. 重启 vsftpd 服务
在终端中输入下面命令,重新启动 vsftpd 服务以确保修改生效,待重启完成后,查看 vsftpd 服务状态:1
2
3
4
5
6
7
8
9
10
11
12
13$ sudo service vsftpd restart
$ sudo service vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-09-06 19:02:26 CST; 14min ago
Process: 36156 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 36157 (vsftpd)
Tasks: 1 (limit: 6143)
CGroup: /system.slice/vsftpd.service
└─36157 /usr/sbin/vsftpd /etc/vsftpd.conf
9月 06 19:02:26 ubuntu18 systemd[1]: Starting vsftpd FTP server...
9月 06 19:02:26 ubuntu18 systemd[1]: Started vsftpd FTP server.
三、连接FTP测试
1. 本地用户登陆
如果通过终端本地测试ftp localhost
,需要输入本机的 user_name 和 password 进行认证,如下所示可以看到配置成功,能够访问 user_name 主目录下的所有内容。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24$ ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:u681): u681
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Sep 05 09:47 Desktop
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Documents
drwxr-xr-x 5 1000 1000 4096 Sep 06 18:34 Downloads
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Music
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Pictures
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Public
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Templates
drwxr-xr-x 2 1000 1000 4096 Aug 28 23:02 Videos
drwxr-xr-x 3 1000 1000 4096 Aug 30 20:21 Workspace
9 Directory send OK.
ftp> exit
221 Goodbye.
2. 本地浏览器访问
如果本机是桌面版,则打开浏览器,输入 ftp://127.0.0.1
打开就能进入之前配置好的匿名访问目录,进行文件下载,如下图所示:

3. 远程浏览器访问
如果主机没有浏览器,则可在远程主机上打开浏览器,输入 ftp://ip_address
进入到匿名访问目录,进行文件下载,如下图所示:

注意:如果FTP主机是服务器,则在其他任何主机上都可以通过 ftp://public_ip_address
(公网IP)进行FTP访问;但如果FTP是普通主机,则只有处于同一局域网的其他主机才能通过 ftp://ip_address
进行FTP访问。

...
...