我使用的是Ubuntu安装的vsftpd,转载请注明出处,以下是我的记录:
1.输入“sudo apt-get update”-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。如果不运行该命令,直接安装vsftpd,会出现"有 几个软件包无法下载,您可以运行apt-get update------"的错误提示,导致无法安装。
(注意:如果输入“sudo …”命令之后有提示:“unable to resolve host”,可以在“vim /etc/hosts”文件中的“127.0.0.1 localhost”后面+空格+你的机器名字,如果没这行就在首行加入这行)
2.输入“sudo apt-get install vsftpd”—->回车—->安装完成。
3.输入“vsftpd -v”如果显示版本号则说明安装成功。
4.新建“/home/web”目录作为用户主目录,这有个坑:“/home/web”文件权限不能设置777,只能为755,否则会导致ftp连接不上,然后新建“/home/web/www”目录,这个目录的权限也不能设置777(巨坑),否则后期网站会出现403错误,这里我也设置成755。
mkdir “/home/web”
chmod -R 755 “/home/web”
mkdir “/home/web/www”
chmod -R 755 “/home/web/www”
5.输入“sudo useradd -d /home/web -M ftptest”-->回车-->用户新建成功-->输入"sudo passwd ftptest"设置ftptest用户的密码-->回车-->输入两次密码-->回车-->密码设置成功。
6.输入“vim /etc/vsftpd.conf”修改vsftpd.conf文件:
常用配置说明:
#禁止匿名访问
anonymous_enable=NO
#接受本地用户
local_enable=YES
#允许上传
write_enable=YES
#用户只能访问限制的目录
chroot_local_user=YES
#设置固定目录(很重要),在结尾添加。如果不添加这一行就会导致后面ftp无法连接,各用户对应自己的目录(用户家目录),当然这个文件夹自己建
local_root=/home/web
#如果使用主动模式,下面几行可以不配置
#使用被动模式
pasv_enable=YES
#端口设置
pasv_min_port=1024
pasv_max_port=1048
pasv_address=你的访问IP(服务器外网IP)
这里补充一个知识点关于主动模式和被动模式,FTP是基于TCP的服务,使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。
主动模式:数据连接上,服务端从20端口去连接客户端大于1024的端口
命令连接:客户端 (>1024端口) -> 服务器 21端口
数据连接:客户端 (>1024端口) <- 服务器 20端口
优势:主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动模式:数据连接上,客户端从大于1024端口去连接服务端大于1024的端口
命令连接:客户端 (>1024端口) -> 服务器 21端
数据连接:客户端 (>1024端口) -> 服务器 (>1024端口)
优势:被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
7.输入“vim /etc/pam.d/vsftpd”
注释掉
#auth required pam_shells.so
然后输入“/etc/init.d/vsftpd restart”重启服务
原因:
这是因为启用了这个模块,只有带有shell的用户才能访问,什么是带有shell呢?你可以看一下\etc\shells文件,这里列出的就是可用的shell列表,然后你再执行一下cat \etc\passwd,最后一行你可以看到你新添加的用户,比对一下你可以看到新用户没有指定shell,因此不带有shell,就被这个生效的模块发好人卡了。
8.操作命令说明:/etc/init.d/vsftpd start/stop/restart(启动/停止/重启)。
9.客户端电脑安装“FileZilla”连接ftp服务器,这个是免费的,Mac、Windows版都有,如果连接错误(提示被动模式的问题,则在FileZilla中的设置项中被动模式设置为:退回到主动模式)