首页 > 代码库 > 搭建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基于虚拟用户的访问形式)