参考链接:<http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/>
FTP 用于通过 TCP 网络在一台主机和另一台主机之间传输文件。本文说明如何在 Ubuntu 14.04 上搭建 FTP 服务器。
常见的 FTP 服务器软件包有三个:Pure-FTPd、vsftpd 和 ProFTPD。本指南使用 vsftpd,它轻量,并且攻击面更小。
在 Ubuntu 14.04 上搭建 FTP 服务器
步骤 1: 更新软件仓库。
sudo apt-get update
步骤 2: 安装 vsftpd 软件包。
sudo apt-get install vsftpd
步骤 3: 打开 /etc/vsftpd.conf 并进行以下修改。
取消注释这些行:
write_enable=YES
local_umask=022
取消注释这一行,防止用户访问其主目录之外的文件夹:
chroot_local_user=YES
在文件末尾添加以下行:
allow_writeable_chroot=YES
添加这些行以启用被动模式:
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=40100
步骤 4: 重启 vsftpd 服务。
sudo service vsftpd restart
步骤 5: FTP 服务器现在会监听 21 端口。使用以下命令创建一个用户。使用 /usr/sbin/nologin shell,以防止 FTP 用户访问普通的 shell 会话。
sudo useradd -m john -s /usr/sbin/nologin
sudo passwd john
步骤 6: 允许 nologin shell 登录访问。打开 /etc/shells,并在末尾添加这一行:
/usr/sbin/nologin
现在尝试使用该用户名通过 21 端口连接到 FTP 服务器,可以使用 WinSCP 或 FileZilla 客户端。确认该用户无法访问主目录之外的文件夹。
在 21 端口使用明文 FTP 存在显著的安全风险。强烈建议改用 SFTP。下面继续介绍 SFTP 配置。
安全 FTP(SFTP)
SFTP 通常称为“Secure FTP”,使用 SSH 文件传输协议。它需要 openssh-server 软件包。如果尚未安装,请安装它:
sudo apt-get install openssh-server
步骤 7: 为 FTP 用户创建一个名为 ftpaccess 的新组。
sudo groupadd ftpaccess
步骤 8: 编辑 /etc/ssh/sshd_config。
找到并注释掉这一行:
Subsystem sftp /usr/lib/openssh/sftp-server
在文件末尾添加这些行:
Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
步骤 9: 重启 SSH 服务。
sudo service ssh restart
步骤 10: 创建用于 SFTP 访问的用户时,请遵循以下步骤。
创建用户 john,将其加入 ftpaccess 组,并使用 /usr/sbin/nologin shell:
sudo useradd -m john -g ftpaccess -s /usr/sbin/nologin
sudo passwd john
更改主目录的所有者:
sudo chown root /home/john
在主目录内创建一个可写文件夹,并更改该文件夹的所有者:
sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www
现在尝试使用 SFTP 通过 22 端口连接到服务器。确认用户可以将文件上传到 www 目录,并且无法访问主目录之外的文件夹。
如果你想同时使用 FTP 和 SFTP,创建用户时请遵循步骤 10。对于现有用户,将其移动到 ftpaccess 组,并创建具有正确所有权的文件夹结构:
sudo usermod john -g ftpaccess -s /usr/sbin/nologin
sudo chown root /home/john
sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www
现在 john 可以同时使用 FTP 和 SFTP 将文件上传到 www 文件夹。
