Linux中搭建FTP文件服务器

这篇文章对在Linux中使用VSFTPD部署FTP文件服务器做了一个简单的介绍。
使用的是VSFTPD,vsftpd 是“very secure FTP damon”的缩写,vsftpd的一个最大的特点是它的安全性。

安装并启动FTP服务器

安装VSFTPD

使用 apt-get 安装 vsftpd:

1
sudo apt-get install vsftpd -y

-y 参数表示对所有问题用yes来回答

启动VSFTPD

安装完成后 VSFTPD 会自动启动,通过 netstat 命令可以看到系统已经监听了 21 端口:

1
sudo netstat -nltp | grep 21

如果没有启动,可以手动开启 VSFTPD 服务:

1
sudo systemctl start vsftpd.service

配置用户访问目录

新建用户主目录

1
sudo mkdir /home/uftp

创建登录欢迎文件用来测试

1
sudo touch /home/uftp/welcome.txt

新建用户 uftp 并设置密码

创建一个用户 uftp :

1
sudo useradd -d /home/uftp -s /bin/bash uftp

为用户 uftp 设置密码 :

1
sudo passwd uftp

删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:

1
sudo rm /etc/pam.d/vsftpd

限制该用户仅能通过 FTP 访问

限制用户 uftp 只能通过 FTP 访问服务器,而不能直接登录服务器:

1
sudo usermod -s /sbin/nologin uftp

修改 vsftpd 配置

1
sudo chmod a+w /etc/vsftpd.conf

修改 /etc/vsftpd.conf 文件中的配置(直接将如下配置添加到配置文件最下方):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 限制用户对主目录以外目录访问
chroot_local_user=YES
# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES
# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list
# 不配置可能导致莫名的530问题
seccomp_sandbox=NO
# 允许文件上传
write_enable=YES
# 使用utf8编码
utf8_filesystem=YES

新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户:

1
2
sudo touch /etc/vsftpd.user_list
sudo chmod a+w /etc/vsftpd.user_list

修改 /etc/vsftpd.user_list ,加入刚刚创建的用户:

1
uftp

设置访问权限

设置主目录访问权限(只读):

1
sudo chmod a-w /home/uftp

新建公共目录,并设置权限(读写):

1
sudo mkdir /home/uftp/public && sudo chmod 777 -R /home/uftp/public

重启vsftpd 服务:

1
sudo systemctl restart vsftpd.service

也可以多创建几个用户来实现对主目录的不同读写权限的管理