◉◡◉ 您好,欢迎到访伊成个人站!

centos7.x搭建ftp服务及创建用户

FTP是什么东东?

FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序.一般的Linux系统默认带有ftp软件或者是vsftpd。

为何搭建?

目的是从window系统中上传文件到linux系统的服务器里。

##安装步骤
提前使用终端工具连接上对应的服务器,这里我们以Xshell 为例

步骤一
登录到服务器后,先切换为 root 用户
切换到 home 文件夹下(可以换任意一个你喜欢的文件夹下,这里以home文件夹为例)

1
cd /home

步骤二
接着,输入以下命令

1
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

步骤三

1
rpm -ivh epel-release-6-8.noarch.rpm

步骤四

1
yum install vsftpd

注意: 安装完成后,找到 /etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。

步骤五
修改selinux

1
getsebool -a | grep ftp

“伊成博客”

执行上面命令,从返回的结果看到 ftpd_full_access 和 tftp_home_dir两行都是off,说明没有开启外网的访问。

步骤六
开启外网的访问

1
2
[root@bogon ~]# setsebool -P ftpd_full_access on
[root@bogon ~]# setsebool -P tftp_home_dir on

“伊成博客”

步骤七
关闭匿名访问
修改 /etc/vsftpd/vsftpd.conf文件:
找到 anonymous_enable=NO #将YES改为NO

到此基本配置都完成了,使用以下命令重启 ftp 服务

1
systemctl restart vsftpd.service

另外设置一下 开机启动 ftp 服务
使用以下命令即可

1
systemctl enable vsftpd.service

通过以上的几个步骤,ftp 服务就已经搭建完毕,接着我们还需要创建用户并指定对应的目录

创建目录以及用户

在/var 目录下创建一个 www 文件夹,www文件夹中创建一个site文件夹一个da文件夹

1
2
3
4
5
cd /var
mkdir www
cd www
mkdir site
mkdir da

创建用户da并指定用户目录为/var/www/da

1
2
useradd -d /var/www/da da
passwd da

修改xiao用户的用户目录为/var/www/site

1
usermod -d /var/www/site xiao

查看新创建的用户的信息

1
tail /etc/passwd

“伊成博客”

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

1
vi vsftpd.conf

找到 userlist_enable=YES 在这句后面换行追加以下内容

1
2
userlist_deny=NO       
userlist_file=/etc/vsftpd/user_list

完成 vsftpd.conf 文件修改之后保存退出。

编辑 user_list 文件

1
vi user_list

把上面的两个用户 一行一个用户名,输入 da 和xiao
按下esc键退出输入模式进入命令模式
输入:wq 保存并退出

配置文件夹权限

切换到 /var/www 目录

1
cd /var/www

更改www里面两个文件夹的权限

输入以下命令

1
2
chown da:da da
chown xiao:xiao site

修改da用户的所属用户组,并修改site文件夹的权限

1
usermod -g xiao da

“伊成博客”

修改site文件夹的权限,允许同一个用户组的用户拥有rwx权限

1
chmod 775 site

到此搭建ftp和创建目录和创建对应用户都全部完成!
接下来在代码中验证一下

使用springboot的配置文件application.yml 配置对应信息,如下

1
2
3
4
5
6
ftp:
host: 192.168.43.41 #你服务器的ip
port: 21 #端口
userName: da #以上创建的ftp用户名
password: da #以上创建的ftp密码
basePath: /var/www/da #文件存放目录

上传文件 代码段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public static boolean uploadFile(String host, int port, String username, String password, String basePath,
String filePath, String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
//切换到上传目录
if (!ftp.changeWorkingDirectory(basePath + filePath)) {
//如果目录不存在创建目录
String[] dirs = filePath.split("/");
String tempPath = basePath;
for (String dir : dirs) {
if (null == dir || "".equals(dir)) continue;
tempPath += "/" + dir;
if (!ftp.changeWorkingDirectory(tempPath)) {
if (!ftp.makeDirectory(tempPath)) {
return result;
} else {
ftp.changeWorkingDirectory(tempPath);
}
}
}
}
//设置上传文件的类型为二进制类型
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//上传文件
if (!ftp.storeFile(filename, input)) {
return result;
}
input.close();
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}

“伊成博客”

看到这里说明以上的配置都没问题,到此本文告一段落了!

支付宝打赏 微信打赏