基于本地VMware虚拟机上的centos搭建ftp服务器

基于VMware上的centos搭建ftp服务器

前言:最近整理后端相关知识点,然后在本机win10上搭建VMware虚拟机,并搭建了ftp服务器用于测试学习使用。虚拟机用的是centos7 64位系统的,ftp服务器用的是常用的vsftp服务器。

一、安装ftp

我这边用的是xshell连接上VM虚拟机的,如何连接可以自行百度,当然也可以在虚拟机上的控制台直接操作,另外,便于学习使用,建议可以在root账号下安装,普通账号可以使用su - 进入root账户。
1.安装:yum -y install vsftpd
基于本地VMware虚拟机上的centos搭建ftp服务器_第1张图片
因为我这边已经安装好了,所以可以直接看到已安装最新版本了。也可以通过vsftpd -v查看当前安装的版本。
2.可以通过指令whereis vsftpd查看安装的位置。
3.启动ftp服务:systemctl start vsftpd.service
4.查看服务是否启动成功:netstat -npal|grep vsftpd。可以看到21端口已经启动成功了。
5.关闭SELinux限制:
获取SELinux对ftp相关的配置信息:getsebool -a | grep ftp
将 ftpd_full_access设置开启状态: setsebool -P ftpd_full_access on
6.开启ftp防火墙:
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
查看防火墙状态:
firewall-cmd --list-all
基于本地VMware虚拟机上的centos搭建ftp服务器_第2张图片
基于本地VMware虚拟机上的centos搭建ftp服务器_第3张图片
可以看到21/tcp端口已经开启并且防火墙中也已经添加到白名单了。

二、配置ftp

通过前面我们知道ftp安装在 /etc/vsftpd目录下,执行:
[root@localhost ~]# cd /etc/vsftpd
[root@localhost vsftpd]#
进入对应目录,执行vim vsftpd.conf,进行相关配置,vsftpd.conf是ftp的配置文件:

不允许匿名访问,设置为NO时,访问ftp的时候不需要输入密码,设置为YES的时候,需要输入密码访问。
anonymous_enable=YES

允许ascii文件上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES

将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

三、用户配置

1.修改ftp配置文件:[root@localhost vsftpd]# vim vsftpd.conf
设置启用虚拟用户功能:guest_enable=YES

指定宿主用户名(需要创建该用户,后面我们会创建):guest_username=ftpuser

制定虚拟用户配置文件放置文件夹(需要我们自己建立,后面创建)
user_config_dir=/etc/vsftpd/vuser_conf

允许写入:allow_writeable_chroot=YES
基于本地VMware虚拟机上的centos搭建ftp服务器_第4张图片
2.创建宿主用户
我们常用于ftp上传网页相关的资源文件,我这边是将虚拟用户指向/var/www/html目录下的,你们在创建的时候可以根据自己的需要配置。
useradd -g root -M -d /var/www/html -s /sbin/nologin ftpuser
其中useradd是添加用户,-s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录。
然后输入:passwd ftpuser 设置好密码即可。
最后把 /var/www/html 的所有权给ftpuser.root : chown -R ftpuser.root /var/www/html
创建好了之后可以通过cat /etc/passwd查看。

3.创建虚拟用户信息文件:
切换到ftp安装目录下
[root@localhost vsftpd]# cd /etc/vsftpd
[root@localhost vsftpd]#
创建用户信息文件

touch vuser_passwd
编辑改文件:
vim vuser_passwd
编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码:
基于本地VMware虚拟机上的centos搭建ftp服务器_第5张图片
账号密码可以自己制定就ok了,只要满足规定设置即可。
4.生成虚拟用户数据文件:
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
赋予相应权限:
chmod 600 /etc/vsftpd/vuser_passwd.db
可以看到在vsftp目录下生成一个vuser_passwd.db文件。

5.编辑pam认证文件:vim /etc/pam.d/vsftpd
将其他都注释掉,添加下面两行;

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

系统为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
这边直接复制就行了。
查看系统版本:
getconf LONG_BIT
基于本地VMware虚拟机上的centos搭建ftp服务器_第6张图片
6.为虚拟账户创建访问根目录,要在宿主用户下(当前是指在/var/www/html目录下)
/var/www/html
├──ftp-user1
└── files
└──ftp-user2
└──files
└──test
└──files
修改文件权限:
修改权限

chmod 777 ftp-user1
chmod 777 ftp-user2
chmod 777 test

7.创建虚拟用户配置目录
cd /etc/vsftpd/

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

mkdir vuser_conf
cd vuser_conf

创建虚拟用户配置文件,文件名称要与虚拟用户名称相同
这里我们配置三个虚拟用户就创建三个配置文件

touch ftp-user1 ftp-user2 test

#编辑三个文件,加入以下信息(local_root需要替换成你自己的实际路径)

local_root=/var/www/html/ftp-user1
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
基于本地VMware虚拟机上的centos搭建ftp服务器_第7张图片
8.创建chroot_list:
cd /etc/vsftpd
创建使当前配置的虚拟用户允许访问
[root@localhost vsftpd]# touch chroot_list
[root@localhost vsftpd]# vim chroot_list

写入虚拟用户名
ftp-user1
ftp-user2
test
基于本地VMware虚拟机上的centos搭建ftp服务器_第8张图片
9.重启ftp服务
systemctl restart vsftpd.service
10.使用xftp连接ftp服务器:
基于本地VMware虚拟机上的centos搭建ftp服务器_第9张图片
其中主机可以通过ifconfig:
基于本地VMware虚拟机上的centos搭建ftp服务器_第10张图片
我们发现能正常连接,并且也能上传文件,例如我们上传一些文件:
基于本地VMware虚拟机上的centos搭建ftp服务器_第11张图片
在虚拟机上查看:
基于本地VMware虚拟机上的centos搭建ftp服务器_第12张图片

你可能感兴趣的:(linux)