您的位置:首页 > 编程语言 > PHP开发

15.在Ubuntu 14.04上搭建vsftpd

2016-03-12 17:16 549 查看
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用户无法访问该目录之外的内容)。

首先更新系统:

$ 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服务器,创建/删除文件夹,上传、下载文件了,不过还是不能删除文件,怎么配置删除权限作为遗留问题继续研究吧,或者有朋友知道的可以告诉我一下,在此谢过了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: