CentOS7 搭建FTP服务器
说明:本文是参考了 CSDN的博主:xiaocia 的文章《 CentOS7 搭建FTP服务器》进行亲手操作验证可行的。但是有一个不足之处就是:
linux系统重启后,ftp就无法访问呢了。我对此也提供了修正方法,具体请查看本文第七节
软件环境: + CentOS7a明:我的环境安装时CentOS最小化安装,所有很多工具和软件都是没有默认安装的
一:安装FTP软件包
1 :安装软件包: yum install vsftpd -y
2:安装完后,有/etc/vsftpd/vsftpd.conf文件,该文件是vsftp的配置文件。
二:专门新建一个FTP服务器的用户
1:建立用户:
命令:useradd ftpuser 新增一个用户ftpuser
passwd ftpuser 为ftpuser设定密码,期间会有两次提示输入密码确认。
三:为FTP服务器设置防火墙
ftp默认端口是21,而centos默认是没有开启的,所以要修改iptables文件
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT 最后:wq 保存
重启防火墙:service iptables restart
注意:会出现iptables.service文件不存在,由于Centos7默认是firewall作为防火墙,这里改为iptables防火墙
systemctl start firewalld.service #启动firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on
最后安装iptables防火墙
sudo yum install iptables-services
设置防火墙开机启动
sudo systemctl enable iptables
四、修改seliunx
注意:如果外网是可以访问上去了,可是发现没法返回目录(使用ftp的主动模式,被动模式还是无法访问),也上传不了,因为selinux作怪了。
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问
会发现状态已经是on了
这样应该没问题了(如果,还是不行,看看是不是用了ftp客户端工具用了passive模式访问了,如提示Entering Passive mode,就代表是passive模式,默认是不行的,因为ftp passive模式被iptables挡住了,下面会讲怎么开启,如果懒得开的话,就看看你客户端ftp是否有port模式的选项,或者把passive模式的选项去掉。如果客户端还是不行,看看客户端上的主机的电脑是否开了防火墙,关吧)
五、关闭匿名访问
修改/etc/vsftpd/vsftpd.conf文件
vi /etc/vsftpd/vsftpd.conf
重启FTP服务:service vsftpd restart
六、开启被动模式
默认是开启的,但是要指定一个端口范围,打开vsftpd.conf文件,在后面加上
pasv_min_port=30000
pasv_max_port=30999
表示端口范围为30000~30999,这个可以随意改。改完重启一下vsftpd
由于指定这段端口范围,iptables也要相应的开启这个范围,所以像上面那样打开iptables文件。
也是在21上下面另起一行,更那行差不多,只是把21改为30000:30999,然后:wq保存,重启下iptables。这样就搞定了。
————————————————————————————————————————————————————————
修改前:
修改后:
-=======================================================================================================================================
修改 vsftpd 表示端口范围为30000~30999。改完重启一下
===============================================================================================================================================================================================================
ttp工具测试:因为ip 为 192.168.1.3 所以ftp的连接IP为此值
===========================================================
在linux下开启FTP服务
1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:
#which vsftpd
如果看到有vsftpd的目录说明服务器已经安装了ftp软件
2. 查看ftp 服务器状态
#service vsftpd status
3. 启动ftp服务器
#service vsftpd start
4. 重启ftp服务器
#service vsftpd restart
5. 查看服务有没有启动
#netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
如果看到以上信息,证明ftp服务已经开启。
6.如果需要开启root用户的ftp权限要修改以下两个文件
#vi /etc/vsftpd.ftpusers中注释掉root
#vi /etc/vsftpd.user_list中也注释掉root
然后重新启动ftp服务。
7. vsftpd 500 OOPS: cannot change directory
登陆报错:
C:\>ftp 192.168.0.101
Connected to 192.168.0.101.
220 (vsFTPd 2.0.5)
User (192.168.0.101:(none)): frank
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/frank
Login failed.
ftp> ls
500 OOPS: child died
Connection closed by remote host.
解决方法:
setsebool ftpd_disable_trans 1
service vsftpd restart
就OK了!
这是SELinux的设置命令,在不熟悉SELnux前,把SELinux关掉也可以的。
======================================================================================================================
处理方法1: 运行ntsysv命令,然后选择上ftp的服务,下次重启机器就会自动启动ftp服务了。<注:此次借鉴百度问答>
具体操作步骤如下:
1:如下图:输入 ntsysv ,再按下回车键
2:如下图,找到 ftp的服务,光标切换到ftp选项,按下空格使其处于选中状态,在用 tab 按钮 使其光标切换到 OK 键,敲下回车按钮即可。
3:重启linux系统:reboot ;等系统重启完毕后,再次用ftp工具链接测试通过
方法二:[root@localhost ~]# chkconfig vsftpd on <注:该方法我没有测试过。借鉴于:csdn:JAVA_DIRECTION>