转载*请注明原始出处:http://blog.csdn.net/a464057216/article/details/50866053
后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
1.FTP原理
FTP(File Transfer Protocol)是常用的文件传输协议(RFC 959),FTP会话包含控制通道和数据通道:
控制通道:由客户端发起的与FTP Server进行沟通的通道,连接FTP发送FTP指令等,使用21端口。
数据通道:客户端与FTP Server进行文件传输或者列表的通道,使用20端口或其他端口。
2.vsftp的搭建方法
vsftpd(Very Secure FTP daemon)是好用又安全的轻量化FTP工具,工作在chroot模式(为FTP服务开设单独的目录,使FTP用户无法访问该目录之外的内容)。
本文以Ubuntu 14.04为例说明安装过程,其他Linux系统的安装过程也是类似的。首先更新系统:
$ sudo apt-get update
然后安装vsftpd:
$ sudo apt-get install vsftpd
修改/etc/vsftpd.conf文件中如下内容(29、33、120行):
write_enable=YES
local_umask=022
chroot_local_user=YES
然后在配置文件末尾添加如下4行配置:
allow_writeable_chroot=YES
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=40100
然后重启vsftpd(每次修改vsftpd的配置后需要重启才能生效)并检查运行状态:
$ sudo service vsftpd restart
$ sudo netstat -nlp | grep vsftpd
可以看到vsftd在监听21端口,接下来创建专门用来访问FTP的用户及用户目录:
$ sudo useradd -m uftp -s /usr/sbin/nologin
$ sudo passwd uftp
然后在/etc/shells中的最后一行添加nologin的登录权限:
/usr/sbin/nologin
进行到这一步,使用uftp这个账号可以成功登录FTP服务器,但是不能访问上级目录,不能下载文件,可以上传文件,可以创建目录。
FTP虽然基于TCP协议,但是所有数据都是明文传输(数据通道和命令通道均是如此)。接下来配置更为安全的SFTP:
$ sudo apt-get install openssh-server
创建一个FTP用户组:
$ sudo groupadd ftpaccess
然后修改sshd的配置文件(/etc/ssh/sshd_config):
$ sudo vim 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
因为更改了ssh的配置,所有需要重启一下ssh服务:
$ sudo service ssh restart
然后需要将uftp用户加入到ftpaccess组中:
$ sudo usermod -g ftpaccess uftp
接下来使用uftp这个账户,就可以登录FTP服务器,创建/删除文件夹,上传、下载文件了。
如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!