在上一次的博文《CentOS 7 x64基本软件安装及配置》中,我教大家搭建了一个简单的HTTP服务器,但是在上次的博文中,我并没有提及到如何搭建FTP服务器。
为什么还需要搭建FTP服务器呢?很简单,因为放在服务器中的网页文件需要不定期的更新,如果还是像之前博文中那样用touch创建、vim编辑内容,如果需要对网站进行一个大更新,那绝对是一个非常大的工程,如果有FTP服务的话,只需要用FTP工具连接到服务器,把需要更新的文件放到网站目录指定位置下覆盖更新就好了,非常简单。在CentOS下,搭建FTP服务器是使用vsftpd软件。
1.安装VSFTPD
老样子,先用XShell或者是别的SSH工具远程连接到服务器,用root用户登陆服务器。
然后键入以下命令以安装VSFTPD
yum install vsftpd
依旧会在检查依赖项目后要求用户确认,按y并回车即可。当提示“完成!”后即代表VSFTPD安装完毕。
然后我们需要将vsftpd启动并设置成开机自启动:
启动vsftpd:
systemctl start vsftpd.service
设置vsftpd开机自启动:
systemctl enable vsftpd.service
2.配置VSFTPD
完成第一步之后其实已经启动了ftp服务器,但我们并用不了,因为我们还没有对vsftpd进行一些必要的设置。
vsftpd的配置文件是/etc/vsftpd/vsftpd.conf,直接用vim打开编辑即可。
使用vim编辑器打开vsftpd配置文件:
vim /etc/vsftpd/vsftpd.conf
vsftpd的配置文件非常大,所以我就不截图展示和完整展示了,我们直接挑关键的地方进行一些简单的修改。
注:在vim中,非编辑状态下输入“/”+需要查找的内容 后按回车键可以快键查找指定字符串。
anonymous_enable=YES
是否允许匿名用户登陆FTP。
为了安全起见关闭这个功能(将等号后的YES改成NO即可)。
dirmessage_enable=YES
切换目录时,显示目录下.message文件中的内容
默认是开启的
local_umask=022
FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022.
没有什么特殊情况不用修改。
xferlog_enable=YES
启用上传和下载的日志功能,默认开启。
建议开启此功能,它可以对用户的操作进行日志记录,当出现问题的时候可以通过日志排查问题。
ftpd_banner=XXXX
FTP的欢迎信息。
在FTP登陆成功之后,服务器会往客户端发送一个欢迎消息以表示登陆成功。这是一个个性化的功能,您可以自由的设置其值,也可以在配置最前加上#注释本行。
data_connection_timeout=120
数据连接超时时间。
如果在使用vsftpd上传下载碎小文件的时候容易发生超时中断的问题,可以将本行前的#注释符去掉,然后将120改成5或者更小,然后重启vsftpd即可。
修改配置文件完成。保存后重启VSFTPD。
重启vsftpd服务:
systemctl restart vsftpd.service
3.创建FTP用户
修改完vsftpd的配置文件之后我们还是不能使用vsftpd,因为我们还没有设置ftp的用户。
添加一个名为ftpuser的用户,用户文件夹位置为:/var/www/html,且禁止此用户登陆服务器:
useradd -d /var/www/html -s /sbin/nologin ftpuser
然后设置一下密码,为ftpuser设置密码:
passwd ftpuser
这时候系统会要求您输入新的密码并且重复一遍。顺便一提在SSH中,密码一般不会回显,所以初学者可能会觉得输进去没反应,其实是已经输进去了。
4.调整防火墙
经过第三步创建用户之后,有小部分的同学可能已经可以登陆了。但是绝大部分的同学会连接ftp失败,提示连接失败 (连接已超时)
失败的原因很简单,不知大伙有没有想起来之前的博文中我教大家关闭了系统自带的firewall防火墙,换上了新的iptables防火墙?就是iptables防火墙将我们的连接请求阻断了。如果你个人怕麻烦,而且也觉得防火墙没什么用,那你可以将iptables防火墙关闭,关闭防火墙之后就可以正常使用了。
不过因为这么一点小事儿就关闭防火墙未免显得有点水,而且防火墙摆在那里总归是有用的。那么有什么办法既保留防火墙,又能让iptables不把我们的ftp连接请求阻断呢?
当然有,我们需要调整一下iptables的配置文件,使ftp协议的端口可以通过防火墙。
FTP有两种模式,主动模式和被动模式。由于两种模式使用的端口不一样,所以调整的内容也不一样。至于FTP的主动模式与被动模式有什么区别,待笔者日后慢慢交代。
FTP主动模式
使用Vim编辑器打开iptables配置文件:
vim /etc/sysconfig/iptables
然后在配置文件中加入这么一句:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
这句话告诉iptables开放21端口,允许接受从21端口传入的连接。
然后重启iptables服务:
systemctl restart iptables.service
现在就可以使用ftp工具登陆我们的ftp服务器了!
FTP被动模式
如果ftp处于被动模式下,除了需要修改iptables的配置文件以外,还需要修改vsftpd的配置文件。
首先是修改vsftpd的配置文件:
使用Vim编辑器打开vsftpd配置文件:
vim /etc/vsftpd/vsftpd.conf
现在配置文件中找到“connect_from_port_20=YES”并将它修改为“connect_from_port_20=NO”,关闭掉vsftpd的主动模式。
然后在配置文件的末尾追加:
#使vsftpd运行在被动模式
pasv_enable=YES
#被动模式最小端口号30000
pasv_min_port=30000
#被动模式最大端口号31000
pasv_max_port=31000
保存配置文件并退出。
然后重启vsftpd服务:
systemctl restart vsftpd.service
然后再使用Vim编辑器打开iptables配置文件:
vim /etc/sysconfig/iptables
添加这两句话:(“#”开头的是注释,可以不添加)
#开放ftp协议21端口,允许接受来自21端口的新建TCP连接
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
#开放30000-31000号端口,允许接受来自此端口号段的新建TCP连接
-A INPUT -p tcp --dport 30000:31000 -j ACCEPT
保存并退出,然后重启iptables服务:
systemctl restart iptables.service
现在就可以使用ftp工具登陆我们的ftp服务器了!
5.调整文件夹权限
可能现在又有个问题冒出来了,使用ftp工具登陆服务器之后,不管创建什么,都会失败。
这个问题主要是在服务器的文件夹权限设置上。以笔者为例,笔者将ftp服务器登陆后的默认文件夹设置为/var/www/html,登陆ftp之后上传什么文件都显示553 Could not create file.
进入/var/www文件夹
cd /var/www
查看一下目录权限
ls –l
我们可以看到html文件夹的权限是drwxr-xr-x。
我们将这个权限字符串分为四个部分,以顿号隔开:d、rwx、r-x、r-x。
这四部分分别说明了:
1.此文件其实是个文件夹;
2.此文件的文件主拥有读、写、执行权限;
3.此文件的组用户拥有读、执行权限;
4.此文件的其他用户拥有读、执行权限。
果然是权限不够!
调整一下权限,让所有人都拥有读、写、执行的权力
chmod 777 html
再看一下现在的文件夹权限
ls –l
可以了,返回ftp工具,上传文件,一切正常!
小柊
2015年10月22日 14:29:59
3 条评论发布于 “CentOS 7 x64 搭建FTP服务器”