首页 > 代码库 > 搭建FTP/NFS服务(vsftpd基于虚拟用户的访问形式)

搭建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

[root@ftp ~]# 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服务

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


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

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

[root@ftp ~]# vim /etc/exports
/var/lib/mysql  192.168.0.0/16(rw,no_root_squash)

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


#启动NFS服务

[root@ftp ~]# systemctl start nfs.service


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


#客户端查看NFS共享

[root@ftpclient ~]# showmount -e 192.168.10.99
Export list for 192.168.10.99:
/var/lib/mysql 192.168.0.0/16


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

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


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

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


#启动mysql服务

[root@ftpclient ~]# systemctl start mariadb


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

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


解决方法如下。

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

[root@ftpclient ~]# mysql -S /mydata/data/mysql.sock


方法二:创建链接socket文件

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


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


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


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

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