CentOS 7 安装vsftpd步骤

1、安装vsftpd组件

[root@localhost ~]# yum -y install vsftpd

 

2、添加一个ftp用户

此用户就是用来登录ftp服务器用的。

[root@localhost ~]# useradd ftpuser

这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为 /home/ftpuser。

 

3、给ftp用户添加密码

[root@localhost ~]# passwd ftpuser

输入两次密码后修改密码。

 

4、防火墙开启21端口

因为ftp默认的端口为21,而centos默认是没有开启的。

centos7中的防火墙改成了firewall,使用iptables无作用,开放端口的方法如下:

firewall-cmd --zone=public --add-port=80/tcp --permanent

返回success为成功。

命令含义: 

--zone #作用域 

--add-port=80/tcp #添加端口,格式为:端口/通讯协议 

--permanent #永久生效

 

[root@localhost ~]# firewall-cmd --zone=public --add-port=21/tcp --permanent

[root@localhost ~]# firewall-cmd --reload

查看已开放的端口

[root@localhost ~]# firewall-cmd --list-ports

 

5、修改selinux

外网是可以访问上去了,可是发现没法返回目录(使用ftp的主动模式,被动模式还是无法访问),也上传不了,因为selinux作怪了。

修改selinux:

执行以下命令查看状态:

[root@localhost ~]# getsebool -a | grep ftp 

CentOS 7 安装vsftpd步骤_第1张图片

PS:我的是修改过后的,可能和你的不一样。

执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问

[root@localhost ~]# setsebool -P allow_ftpd_full_access on

[root@localhost ~]# setsebool -P tftp_home_dir on

 

FileZilla 测试,发现能成功登陆,但是目录读取不了,我们更换一下传输模式。

FileZilla的主动、被动模式修改:

菜单:编辑→设置

CentOS 7 安装vsftpd步骤_第2张图片

 

6、关闭匿名访问

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

修改/etc/vsftpd/vsftpd.conf文件:

CentOS 7 安装vsftpd步骤_第3张图片

保存:wq,然后回车退出。

[root@localhost ~]# service vsftpd restart

 

7、开启被动模式

默认是开启的,但是要指定一个端口范围,打开vsftpd.conf文件,在后面加上

pasv_min_port=30000

pasv_max_port=30999

表示端口范围为30000~30999,这个可以随意改。改完重启一下vsftpd。

 

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

[root@localhost ~]# service vsftpd restart

 

由于指定这段端口范围,firewall也要把响应的端口打开。

[root@localhost ~]# firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

查看:

[root@localhost ~]# firewall-cmd --list-ports
发现有30000-30999/tcp就搞定了。

 

8、设置开机启动vsftpd ftp服务

[root@localhost ~]# chkconfig vsftpd on

 

 

9、测试

a. FileZilla

将FileZilla的FTP传输模式更改为被动模式,然后连接,发现可以进去了。

b.浏览器

地址栏输入:ftp://服务器地址

在之后的弹出框中输入你的账户和密码。

CentOS 7 安装vsftpd步骤_第4张图片

c.Java程序

创建程序,ftp需要依赖commons-net-3.3.jar包

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

public class TestFTP {

	public static void main(String[] args) throws Exception, IOException {
		FTPClient ftpClient = new FTPClient();
		ftpClient.connect("192.168.195.138");
		ftpClient.login("ftpuser", "123456");
		FileInputStream inputStream = new FileInputStream(new File("E:\\taotao\\21.jpg"));
                //指定上传目录
		//ftpClient.changeWorkingDirectory("/home/ftpuser/images/");
		ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
		ftpClient.storeFile("123.jpg",inputStream);
		inputStream.close();
		
		if(ftpClient.logout()){
			System.out.println("成功!");
		}else{
			System.out.println("失败!");
		}
	
	}

}

控制台打印成功之后,查看我们的服务器,会发现123.jpg这张图片。

 

 

你可能感兴趣的:(Linux,Linux学习笔记)