Centos搭建FTP

Guooo
2017-04-04 / 0 评论 / 1,962 阅读 / 正在检测是否收录...

在CentOS下,搭建FTP服务器是使用vsftpd软件。

1.安装VSFTPD

先用XShell或者是别的SSH工具远程连接到服务器,用root用户登陆服务器。
然后键入以下命令以安装VSFTPD

yum install vsftpd ftp

依旧会在检查依赖项目后要求用户确认,按y并回车即可。当提示“完成!”后即代表VSFTPD安装完毕。
enter description here

然后我们需要将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配置文件一些修改地方

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服务:

systemctl restart vsftpd.service

一般国内都是ipv4,所以需要把ipv6监听关闭,把ipv4监听打开,否则可能常常出现打不开的现象

listen = YES
listen_ipv6 = NO

如果连接还是很慢的话,可以添加这个禁用域名反向解析

reverse_lookup_enable=NO //解决登陆验证缓慢问题

vsftpd详细配置文件

## 3.创建FTP用户
修改完vsftpd的配置文件之后我们还是不能使用vsftpd,因为我们还没有设置ftp的用户。
添加一个名为ftpuser的用户,用户文件夹位置为:/home/wwwroot/html,且禁止此用户登陆服务器:

useradd -d /home/wwwroot/html -s /sbin/nologin ftpuser

然后设置一下密码,为ftpuser设置密码:

passwd ftpuser

这时候系统会要求您输入新的密码并且重复一遍。不出错的话这一步就完成了

## 4.调整防火墙
经过第三步创建用户之后,有小部分的同学可能已经可以登陆了。但是绝大部分的同学会连接ftp失败,提示连接失败 (连接已超时)

失败的原因很简单,不知大伙有没有想起来之前的博文中我教大家关闭了系统自带的firewall防火墙,换上了新的iptables防火墙?就是iptables防火墙将我们的连接请求阻断了。如果你个人怕麻烦,而且也觉得防火墙没什么用,那你可以将iptables防火墙关闭,关闭防火墙之后就可以正常使用了。

不过因为这么一点小事儿就关闭防火墙未免显得有点水,而且防火墙摆在那里总归是有用的。那么有什么办法既保留防火墙,又能让iptables不把我们的ftp连接请求阻断呢?

当然有,我们需要调整一下iptables的配置文件,使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

5.调整文件夹权限

可能现在又有个问题冒出来了,使用ftp工具登陆服务器之后,不管创建什么,都会失败。

这个问题主要出现在无论上传什么文件都显示553 Could not create file.

进入/home/wwwroot,然后把权限改了,比如:

chmod -R 777 /home/wwwroot/html

然后就差不多正常了。

讲道理,ubuntu也是同理,修改配置文件,安装什么鬼的,等我有空再把ubuntu也测试一下。

## 修改FTP用户目录
FTP服务器的默认目录是/var/ftp,而且当用户以匿名方式登录的时候,访问就是此目录。如果用户以其它的用户名登录的话,访问的则是那个用户名的工作目录。如果想要更改非匿名用户的默认FTP目录,可以采用如下方式进行更改:

  1. 进入/etc目录,打开passwd文件
  2. 转到想要更改的那个用户的行,编辑其工作目录为想要的目录即可

enter description here

一般采用此种方式带来的一个影响就是,shell的提示符不会再显示目录信息,如果想要变回原来的样子,可以采用如下简便的方法:把那个用户原来的工作目录下的所有与shell配置相关的文件复制到更改后的目录。

0

评论 (0)

取消