搭建FTP/NFS服务(vsftpd基于虚拟用户的访问形式)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建FTP/NFS服务(vsftpd基于虚拟用户的访问形式)相关的知识,希望对你有一定的参考价值。

题目:搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)

1)基于虚拟用户的访问形式;

2)匿名不允许上传;

3)禁锢所有的用户于其家目录当中;

4)限制最大并发连接数为200;

5)匿名用户的最大传输速率512KB/s;

6)虚拟用户的账号存储在mysql数据库当中。

7)数据库通过NFS进行共享。


搭建环境:

FTP/NFS服务器:192.168.10.99 (CentOS 7)


搭建FTP/NFS详细过程:


1、配置vsftpd基于pam_mysql的虚拟用户的访问形式,虚拟用户的账号存储在mysql数据库当中。其中已创建的虚拟用户有tom和jerry,密码分别为123和321

这一步骤详细过程参考博客《vsftpd基于pam_mysql的虚拟用户机制》


2、编辑vsftpd配置文件/etc/vsftpd/vsftpd.conf

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
# 设置匿名用户不允许上传
anonymous_enable=YES
anon_upload_enable=NO

# 禁锢所有的用户于其家目录当中
chroot_local_user=YES

# 限制最大并发连接数为200
max_clients=200

# 设置匿名用户的最大传输速率512KB/s
anon_max_rate=512000


3、重启vsftpd服务

[[email protected] ~]# systemctl restart vsftpd.service
[[email protected] ~]# ss -tnl | grep :21
LISTEN     0      32          :::21                      :::*


4、数据库通过NFS进行共享

#由mysql主配置文件/etc/my.cnf可知,mysql数据库目录为/var/lib/mysql,通过NFS进行共享

[[email protected] ~]# vim /etc/exports
/var/lib/mysql  192.168.0.0/16(rw,no_root_squash)

此处之所以需要添加no_root_squash这个选项,是因为mysql服务在第一次启动时需要以管理员root身份进行初始化,因此在第一次启动之后就可以去掉no_root_squash选项了。


#启动NFS服务

[[email protected] ~]# systemctl start nfs.service


#确保NFS客户端和NFS服务端的mysql用户的UID一致


#客户端查看NFS共享

[[email protected] ~]# showmount -e 192.168.10.99
Export list for 192.168.10.99:
/var/lib/mysql 192.168.0.0/16


#客户端挂载NFS共享文件系统

[[email protected] ~]# mkdir -p /mydata/data
[[email protected] ~]# chown -R mysql.mysql /mydata/data    # 修改权限使mysql有rwx权限
[[email protected] ~]# mount -t nfs 192.168.10.99:/var/lib/mysql /mydata/data


#客户端下载mariadb-server,编辑配置文件/etc/my.cnf,修改如下配置项

[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
datadir=/mydata/data
socket=/mydata/data/mysql.sock


#启动mysql服务

[[email protected] ~]# systemctl start mariadb


需要注意的是,mysql命令行客户端工具默认的socket路径是/var/lib/mysql/mysql.sock,所以在使用mysql时会出现如下问题:

[[email protected] ~]# mysql
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)


解决方法如下。

方法一:使用-S选项指明socket文件路径

[[email protected] ~]# mysql -S /mydata/data/mysql.sock


方法二:创建链接socket文件

[[email protected] ~]# ln -s /mydata/data/mysql.sock /var/lib/mysql/mysql.sock
# 之后就可以直接使用mysql了


另外需要注意的是,当有多个主机的数据库通过NFS共享数据时,只能启动其中的一个数据库服务,其它的主机上的数据库服务必须关闭。


经过测试,在任何一台主机上的数据库中创建的数据都能够同步。


本文出自 “Tab” 博客,请务必保留此出处http://xuweitao.blog.51cto.com/11761672/1934223

以上是关于搭建FTP/NFS服务(vsftpd基于虚拟用户的访问形式)的主要内容,如果未能解决你的问题,请参考以下文章

ftp

vsftpd详解

centos 7搭建基于虚拟用户的FTP服务

搭建FTP服务器:Linux下vsftpd实现基于Berkeley DB文件存放虚拟用户的案例

虚拟机console基础环境配置——系统镜像站点配置

CenOS_7 搭建Vsftpd服务-匿名用户