centos开启FTP的方法 [复制链接]

moqu8 2017-2-23

3398 0
先来开通CentOS6的FTP服务吧。telnet服务也一并学习学习吧。在安装好CentOS以后,需要设置Ftp和Telnet服务文件,才能启动Ftp和Telnet服务,可以通过远程控制进行开启。

开通FTP有gssftp和vsftpd二种,查了查,据说vsftpd更稳定和更安全。就用vsftpd吧。

什么是vsftpd

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。



首先看看vsftpd装了没有

rpm -q vsftpd



没装的话就先安装吧

yum -y install vsftpd



设置开机启动vsftpd ftp服务

chkconfig vsftpd on



启动vsftpd服务

service vsftpd start



管理vsftpd相关命令:

停止vsftpd: service vsftpd stop

重启vsftpd: service vsftpd restart

配置vsftpd服务器

vi /etc/vsftpd/vsftpd.conf

将下面三行

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

改为

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

用adduser增加用户ftpuser,用-d指定目录/home/wwwroot/ftpuser。禁止登陆shell显示的用法看adduser.
useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser



用passwd设置用户的密码

passwd ftpuser

编辑文件chroot_list(没有则自动新建):

vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
ftpuser

重新启动vsftpd

service vsftpd restart

开通telnet服务

rpm -q xinetd

yum -y install xinetd

chkconfig xinetd on

service xinetd start

这样就开通了telnet了。



配置防火墙

如果以上设置完了之后,还是不能正常访问,那很有可能是防火墙屏掉的原因了。再配置防火墙

vi /etc/sysconfig/iptables #打开/etc/sysconfig/iptables文件

添加如下代码

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT #FTP21端口的

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT #telnet23端口



重启iptables

service iptables restart



配置VirtualBox的端口映射

如果你是用VirtualBox装的系统,就要在Host机跟虚拟机之间弄个端口映射了。 FTP的默认端口是21, telnet的默认端口是23

VirtualBox的端口映射的方法见:http://liucheng.name/1947/ (配置VirtualBox+CentOS的SSH+FTP及CentOS yum镜像)


ftp配置的备注说明
如果不希望某用户能够浏览其主目录上级目录中的内容,可以如上设置, 然后在
文件vsftpd.chroot_list中不添加该用户即可(此时, 在该文件中的用户都是可以浏览其主目录之外的目录的).
或者, 设置如下
chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd.chroot_list
然后把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list(此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)
中即可(一行一个用户名).


三、CentOS vsftpd配置

1 打开 /etc/vsftpd/vsftpd.conf文件。将anonymous_enable=YES,改为anonymous_enable=NO
2 打开 /etc/vsftpd/vsftpd.conf文件。添加user_config_dir=/etc/vsftpd/virtual,并建立virtual目录。在此目录中建立以用户名为文件名的文件,并写入:local_root=[目录],这个目录即是FTP连接时的主目录。
3 限定用户只在自己目录:修改vsftpd.conf文件,取消注释:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
在/etc/vsftpd/目录下添加文件chroot_list,加入作为FTP用户的本地用户名。
4 解决用户无法进入目录问题:
打开终端,输入:setsebool -P ftpd_disable_trans 1
然后重启FTP服务:service vsftpd restart

四、权限:《必须配置》

假设是/var/www/html
这个目录的权限应该是770,owner是root,group是ftp
chmod 770 /var/www/html
chown root:ftp /var/www/html

【出现的错误】
1、500 OOPS: cannot change directory
解决方法:

在终端输入命令:

setsebool -P ftpd_disable_trans 1
service vsftpd restart
或直接关闭selinux
2, ftp软件连接到ftp服务器的指定目录出现226 transfer done (but failed to open directory),解决方法编辑/etc/selinux/config 文件然后set "SELINUX=disabled", then reboot.改了以后就ok了。

3,Linux启动ftp服务器530 Permission denied或者vsftpd 530 Login incorrect 解决方法
原因是我们 /etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 禁掉了root这个用户。这时我们需要修改这两个文件。
(1)/etc/vsftpd.user_list的默认文件(则是表示具体用户)
(2)/etc/vsftpd.ftpusers 的默认文件(所有可以登录该FTP的用户属性)

4,:425 failed to establish connection解决办法
先到CMD或者linux终端用命令行模式ftp命令测试一下,

如果能登录,不能使用ls或者dir命令。

那就说明,主要问题在端口被防火墙控住。

提示语句:

200 PORT command successful. Consider using PASV.
425 Failed to establish connection.

这时候,可以在ftp下使用命令:quote PASV

试试用以被动模式连接。

一般DOS命令行下都是默认以PORT主动模式连接。

即,端口21监听,处理控制信息,再以端口20连接客户端进行数据传送。

而,经常的,通过外网的NAT的,基本端口20的数据连接都会被禁止掉。

所以,如果想对外网开放ftp,最好使用PASV模式。

PASV被动模式是指,以端口21监听,有连接请求时,随机开放一个比较大的端口号来处理数据传输。

vsftp中,通过编辑 /etc/vsftp.conf 实现启用PASV连接。

sudo vi /etc/vsftp.conf

在配置文件中添加下面语句:

pasv_enable=YES
pasv_min_port=6000
pasv_max_port=7000

也即,启动PASV连接模式,开放6000-7000端口号作为数据传送端口。

此外,如果是对外网开放,必须在路由器的转发规则中,开放21端口。

为了保险,可以将6000-7000端口也写入到iptables中白名单中。

命令:

sudo iptables -A INPUT -p tcp --dport 6000:7000 -j ACCEPT

在ubuntu中一般可以不用,因为ubuntu虽然有iptables,但默认是没有规则的,

也即,不会设置端口限制,但其他版本就最好加上哈。

此外,如果带有selinux的,最好也关闭。

ubuntu是默认没安装selinux。

像redhat、centOS之类的,

修改/etc/selinux/config文件中的SELINUX="" 为disabled ,然后重启。

这样设定后,一般就可以搞定了。

如果还不行,可以通过一下思路:

1、防火墙(本机、客户机)

2、FTP目录的权限

3、客户机是否是IPv6网络

4、客户机的网关限制了外网ftp


最新回复 (0)
返回
支持中心
邮箱:winkill2012@qqcom
新站优化中!部分功能尚未完善,敬请谅解!
支持中心