马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
做网络安全实验或者内部文件共享时,常需要一台 FTP 服务器。本文记录在 VMware 里的 Ubuntu 16 环境下从零搭一台最简 FTP 服务的完整过程:装 vsftpd、改配置、加用户、开服务、本地与 Windows 两端验证,最后把安装阶段最常撞上的"锁被占用"报错一并解决。文中命令默认都带 sudo,需要提权的场景不要省。
一、基础安装
1. 安装 FTP 服务端
sudo apt-get update
sudo apt-get install vsftpd
装完可以用 vsftpd --version 确认装上的版本号。这一步若报错,见本文最后的"遇到的问题"。
sudo cp /etc/vsftpd.conf /etc/vsftpd_bk.conf
配置可改可不改的都建议先留一份原文件,改坏了直接覆盖回去,比重装快。
3. 修改配置文件
用 vim 或 gedit 都可以,gedit 操作直观一些:
sudo vim /etc/vsftpd.conf
# 或
sudo gedit /etc/vsftpd.conf
二、一份可用的最小配置
下面这段配置只解决"本机用户登录、能传能下、锁在家目录"这四个需求,深入的场景(虚拟用户、SSL、限速)请再自行扩展:
listen=NO
listen_ipv6=YES
# 是否允许匿名登录,默认关闭
anonymous_enable=NO
# 是否允许本地系统用户登录
local_enable=YES
# 是否允许写操作(上传、改名、删除)
write_enable=YES
# 本地用户上传文件时的默认掩码
local_umask=022
# 目录进入提示消息
dirmessage_enable=YES
# 使用本地时区显示文件时间,默认是 GMT
use_localtime=YES
# 启用上传下载日志
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
# 登录横幅
ftpd_banner=Welcome to FTP service.
# 是否把用户锁在其家目录内
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
# PAM 服务名
pam_service_name=ftp
# 字符集
utf8_filesystem=YES
在 gedit 里改完用 Ctrl+S 保存即可;终端里若刷出配置项的告警,多数不影响启动,可以先忽略。
三、添加专用用户
下面以新增用户 t1 为例,换成别的名字同理。
- 先在 /home 下建一个用户目录:
sudo mkdir /home/t1
- 把登录目录和登录 shell 绑上,-d 指定登录后进入的目录,-s 指定登录后用的 shell:
sudo useradd -d /home/t1 -s /bin/bash t1
- 给 t1 设密码:
sudo passwd t1,随后按提示输入两遍
- 把目录所有者改成 t1:
sudo chown t1:t1 /home/t1
- 把用户名写进
/etc/vsftpd.user_list:sudo gedit /etc/vsftpd.user_list,文件里一行一个用户名,内容为 t1
- 同样把 t1 写进
/etc/vsftpd.chroot_list:sudo gedit /etc/vsftpd.chroot_list
两个列表的分工要分清:user_list 管的是允许谁登录,chroot_list 管的是被锁进家目录的名单。只在 user_list 里加、忘了进 chroot_list,用户就还能往上翻目录。
四、启动服务
systemctl restart vsftpd
基础配置到此完成,接下来验证。
五、三种验证方式
1. Ubuntu 本机测试
ftp localhost
输入正确的用户名密码,看能否进入并 ls 出目录内容。
2. Windows 下测试
- CMD 里直接
ftp 服务器IP;
- 或者在资源管理器地址栏输入
ftp://服务器IP/。
登录成功后若目录是空的,属正常现象——还没放文件进去。
3. 放个文件再测一次
在 Ubuntu 里往 /home/t1 写个文件:
cd /home/t1
sudo gedit test.txt
写点内容保存,再到 Windows 端刷新看是否已能看到,打开 txt 内容对得上,说明这台 FTP 服务已经通了。
六、安装阶段最常见的报错:锁被占用
执行 sudo apt-get update 之后的命令若报:
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
这说明有另一个进程(通常是上一次没跑完的 apt 或系统更新)正在动 dpkg。先别急着删锁,等几十秒看它自己退出;确知已无进程时再按序列删:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
如果接着又报:
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录 (/var/lib/dpkg/),是否有其他进程正占用它?
再补一条:
sudo rm /var/lib/dpkg/lock
删锁属有风险操作:万一那个进程其实还在跑,锁被提前清掉可能让后面两个 apt 同时改 dpkg 而互相踩踏。稳妥顺序是先 ps aux | grep apt 确认无残留进程,再动手。
qidao123.com企服评测-应用市场 编辑提示
本文按安装 vsftpd、备份并修改配置文件、用最小可用配置替代冗长默认配置、创建专用 FTP 用户并写入 user_list 与 chroot_list、启动服务、Ubuntu 与 Windows 双端验证的顺序,整理一台最简 FTP 服务器的搭建过程,并给出 dpkg 锁冲突的分步处理。文中配置仅面向内部可信网络;如果需要把 FTP 暴露到公网,请务必启用 TLS、限制可登录账号并用防火墙收紧来源,明文传用户名密码的协议不适合对外提供服务。 |