CentOS7 搭设FTP服务进行文件传输方案实施


近来因为工作原因进行了FTP服务器的搭设,就写一篇文章来记录一下,方便之后回顾,并且跟大家一起分享一下经验。

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

Ftp服务器就是支持FTP协议的服务器就是FTP服务器。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。

比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。


FTP服务器


CentOS 7 搭设FTP环境

看完上述介绍,我们可以来开始试着通过CentOS 7 系统来搭设FTP服务器啦。

01

vsftpd安装及防火墙配置


1、安装VSFTP:

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


2、安装完成后,查看位置

[root@localhost ~]# whereis vsftpd

3、直接启动VSFTP服务

[root@localhost~]#systemctl start vsftpd

(启动vsftpd服务)

[root@localhost ~]# systemctl enable vsftpd

(设置vsftp开机自启动)

4、查看是否启动成功

[root@localhost ~]# netstat -npal|grep vsftpd

可以看到服务已经启动,端口为21,pid为2887

5、关闭SELinux限制,添加防火墙白名单

(1)设置关闭SELinux(很多问题都是selinux权限导致的,个人是直接关闭了selinux)

[root@localhost ~]# vim /etc/sysconfig/selinux

SELINUX=enforcing 改为 SELINUX=disabled

(2)将ftp加入防火墙白名单,并开放端口

firewall-cmd --permanent --zone=public --add-service=ftp

firewall-cmd --zone=public --add-port=6000-6

010/tcp --permanent

firewall-cmd --reload

查看防火墙状态:

firewall-cmd --list-all


02

vsftpd配置修改


1.修改配置文件

[root@localhost ~]# cd /etc/vsftpd/

[root@localhost vsftpd]# vim vsftpd.conf

#不允许匿名访问(不登录默认访问某目录/var/vsftpd)

anonymous_enable=NO

#允许ascii文件上传和下载

ascii_upload_enable=YES

ascii_download_enable=YES

#将用户限制在为其配置的主目录

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

03

FTP配置多用户访问

1、首先需要在vsftpd.conf添加如下配置

#设置启用虚拟用户功能

guest_enable=YES

#制定宿主用户名(我们后续需要为我们的系统增加该用户)

guest_username=guest1

guest_username=guest2

#制定虚拟用户配置文件放置文件夹(需要我们自己建立)

user_config_dir=/etc/vsftpd/vuser_conf

#允许写

allow_writeable_chroot=YES

#开启被动模式

pasv_enable=YES

#开启最小ip

pasv_min_port=6000

#开启最大ip
pasv_max_port=6010

#:wq保存vsftpd.conf文件,并创建用户配置文件放置文件夹

mkdir /etc/vsftpd/vuser_conf

2.创建宿主用户

#创建宿主主文件夹

cd /home

mkdir vsftpd

# 创建用户 guest1 指定 "/home/vsftpd"目录

# -s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录

useradd -g root -M -d /home/vsftpd -s /sbin/nologin guest1

# 设置用户guest1的密码

passwd guest1

# 把 /home/vsftpd 的所有权给guest1.root

chown -R guest1.root /home/vsftpd

#guest2的设置和guest1完全一致

3.创建虚拟用户信息文件

vsftp目录下

cd /etc/vsftpd/

touch vuser_passwd(创建用户信息文件)

vim vuser_passwd(编辑用户信息文件)

#编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码

guest1

123456

guest2

123456

4.生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db

chmod 600 /etc/vsftpd/vuser_passwd.db

#在当前文件夹下生成一个vuser_passwd.db文件

5.编辑pam认证文件

vim /etc/pam.d/vsftpd

将其他都注释掉,根据系统位数的不通添加下面两行;

注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。

#查看系统位数

gtconf LONG_BIT

#系统为32位:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account

required pam_userdb.so db=/etc/vsftpd/vuser_passwd

#系统为64位:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

6.为虚拟账户创建访问根目录,要在宿主用户下

# 下面是目录结构

/home/vsftpd

├──guest1

│ └── files

└──guest2

└──files

#修改权限

chmod 777 /home/vsftpd/guest1

chmod 777 /home/vsftpd/guest2

7.创建虚拟用户配置目录

cd /etc/vsftpd/

#创建上述配置文件中配置的虚拟用户文件夹,一定要对应

mkdir vuser_conf

cd vuser_conf

#创建虚拟用户配置文件,文件名称要与虚拟用户名称相同

#这里我们配置两个虚拟用户就创建两个配置文件

touch guest1 guest2

vim guest1

#编辑两个文件,加入以下信息(注意加粗部分要替换为你虚拟账户要访问的根目录名称)

local_root=/home/vsftpd/guest1

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

#guest2的配置与guest1一致

8.创建chroot_list

cd /etc/vsftpd

#创建使当前配置的虚拟用户允许访问

[root@localhost vsftpd]# touch chroot_list

[root@localhost vsftpd]# vim chroot_list

#写入虚拟用户名

guest1

guest2


9.重启VSFTP服务

systemctl restart vsftpd

至此完成初步安装

04

FTP服务器的测试

在浏览器中输入ftp://服务器ip,

或者是用ftp.exe都可以进行测试。



举报
评论 0