1. 程式人生 > >搭建FTP/NFS服務(vsftpd基於虛擬用戶的訪問形式)

搭建FTP/NFS服務(vsftpd基於虛擬用戶的訪問形式)

nfs ftp vsftpd mysql

題目:搭建一套文件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基於虛擬用戶的訪問形式)