網絡文件共享服務

說明:本實驗在兩臺CentOS主機上實現,一臺作爲FTP服務器,一臺作數據庫服務器
**實驗:實現基於mysql驗證的vsftpd虛擬用戶**
1、安裝所須要包和包組:
在數據庫服務器上安裝包:
•Centos7:在數據庫服務器上安裝
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
•Centos6:在數據庫服務器上安裝
yum –y install mysql-server
在FTP服務器上安裝vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
centos7:無對應rpm包,需手動編譯安裝
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd
下載pam_mysql-0.7RC1.tar.gz
ftp://172.16.0.1/pub/Sources/sources/pam/
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-mysql=/usr --with-pam=/usr
--with-pam-mods-dir=/lib64/security
make
make install
2、在數據庫服務器上建立虛擬用戶帳號
# 1.創建存儲虛擬用戶數據庫和鏈接的數據庫用戶
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
ftp服務和mysql不在同一主機:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'172.16.%.%' IDENTIFIED BY 'magedu';
ftp服務和mysql在同一主機:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@localhost IDENTIFIED BY 'magedu';
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
mysql> FLUSH PRIVILEGES;

# 2.準備相關表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
mysql>DESC users;
測試鏈接
mysql -uvsftpd -h 172.16.200.200 -pmagedu
mysql> SHOW DATABASES;

# 3.添加虛擬用戶
根據須要添加所須要的用戶,爲了安全應該使用PASSWORD函數加密其密碼後存儲
mysql>DESC users;
mysql> INSERT INTO users(name,password) values(‘wang',password('magedu'));
mysql> INSERT INTO users(name,password) values(‘mage',password('magedu'));
mysql> SELECT * FROM users;
3、在FTP服務器上配置vsftpd服務
# 1.在FTP服務器上創建pam認證所需文件
vi /etc/pam.d/vsftpd.mysql 添加以下兩行
auth required pam_mysql.so user=vsftpdpasswd=magedu host=mysqlserver db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpdpasswd=magedu host=mysqlserver db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2
注意:參考README文檔,選擇正確的加密方式
crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函數加密,3表示md5加密,4表示sha1加密

配置字段說明:
auth 表示認證
•account 驗證帳號密碼正常使用
•required 表示認證要經過
•pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也能夠寫絕對路徑;後面爲給此模塊傳遞的參數
•user=vsftpd爲登陸mysql的用戶
•passwd=magedu 登陸mysql的的密碼
•host=mysqlserver mysql服務器的主機名或ip地址
•db=vsftpd 指定鏈接msyql的數據庫名稱
•table=users 指定鏈接數據庫中的表名
•usercolumn=name 當作用戶名的字段
•passwdcolumn=password 當作用戶名字段的密碼
•crypt=2 密碼的加密方式爲mysql password()函數加密

# 2.創建相應用戶和修改vsftpd配置文件,使其適應mysql認證
創建虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目錄的寫權限
mkdir /var/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /var/ftproot/upload
確保/etc/vsftpd.conf中已經啓用瞭如下選項
anonymous_enable=YES
添加下面兩項
guest_enable=YES
guest_username=vuser
修改下面一項,原系統用戶沒法登陸
pam_service_name=vsftpd.mysql
4、啓動vsftpd服務
service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
查看端口開啓狀況
netstat -tnlp |grep :21
5、Selinux相關設置:在FTP服務器上執行
•restorecon -R /lib64/security
•setsebool -P ftpd_connect_db 1
•setsebool -P ftp_home_dir 1
•chcon -R -t public_content_rw_t /var/ftproot/
6、測試:利用FTP客戶端工具,以虛擬用戶登陸驗證結果
•tail /var/log/secure
自動掛載
可以使用autofs按須要掛載NFS共享,在空閒時自動卸載
由autofs包提供
系統管理器指定由/etc/auto.master自動掛載器守護進程控制的掛載點
自動掛載監視器訪問這些目錄並按要求掛載文件系統
文件系統在失活的指定間隔5分鐘後會自動卸載
爲全部導出到網絡中的NFS啓用特殊匹配 -host 至「browse」
參看幫助:man 5 autofs
支持含通配符的目錄名
* server:/export/&

自動掛載依賴autofs服務   

yum  install  autofs

主配置文件  /etc/auto.master

/dev/cdrom /misc/cd

vim /etc/auto.master 

1 相對路徑法
文件路徑:/d1/d2/d3/nfsdir2
兩部分
dirname   /d1/d2/d3
basename   nfsdir2

vim /etc/auto.master 只定義dirname(文件的路徑名)
 /d1/d2/d3  /etc/nfsmount(與定義basename文件對應)

vim /etc/nfsmount  只定義basename(路徑的具體文件名)
nfsdir2  -fstype=nfs,vers=3  192.168.27.7:/app/nfs2

例子 /misc/cd虛擬目錄實現自動掛載 
vim  /etc/auto.misc
   cd  -fstype=iso9660,ro  :/dev/cdrom   

總結:dirname和basename都不須要手工建立,啓動autofs服務自動生成dirname,訪問basename目錄時自動生成這個目錄

2 絕對路徑法:直接匹配包括本地路徑名稱,不會影響本地目錄結構(home目錄下其它用戶文件夾可見)
vim /etc/auto.master 
/-  /etc/wanghome

vim /etc/wanghome
/home/wang -fstype=nfs,rw  192.168.27.7:/data/wanghome   home目錄下的mage文件夾將不受影響
遠程用戶的家目錄經過nfs服務共享 
vim /etc/exports.d/nfs.exports
data/wanghome *(rw)

setfacl -m u:wang(uid 1000):rwx /data/wanghome

cp /etc/skel/.[^.]* /data/wanghome/

useradd -u 500 nfsuser -M   建立用戶時不建立家目錄

setfacl -m u:500(nfsuser):rwx /data/wanghome  指定uid受權

客戶端測試

手工掛載方式: 

mount 192.168.27.7:/data/wanghome /home/wang
su - wang(uid 1000)
su - mage(uid 500)

不一樣客戶端建立賬號uid最好統一

autofs自動掛載方式:

vim /etc/auto.master
dirname=/home 
/home   /etc/wanghome  自動掛載方式:home目錄下的文件將由/etc/wanghome文件掛載決定

vim /etc/wanghome
wang -fstype=nfs,rw  192.168.27.7:/data/wanghome

nfs服務:僞根方式將多個不一樣的文件夾組織成根目錄mysql

nfs服務器配置

yum  install   nfs-utils
mkdir /nfsroot/nfsdir{1,2,3} –pv  僞根目錄
 
mkdir /app/data{1,2,3} –pv    存放數據目錄
掛載:
mount –B /app/data1 /nfsroot/nfsdir1/
mount  -B /app/data2 /nfsroot/nfsdir2/
mount –B /app/data3 /nfsroot/nfsdir3/
nfs服務默認是以nfsnobody身份運行的
setfacl -m u:nobody:rwx /app/data2  
exportfs –r
exportfs -v
 
vim  /etc/exports
/nfsroot                *(fsid=0,ro,crossmnt)
/nfsroot/nfsdir1        *(ro)
/nfsroot/nfsdir2        192.168.64.103(rw)  除了192.168.64.103主機外                                        繼承父目錄的只讀權限
/nfsroot/nfsdir3        *(rw)
systemctl restart nfs-server
 
客戶端配置
只讀:nfs服務設置的權限   拒絕訪問:文件系統設置的權限
mkdir /mnt/nfs
mount 192.168.64.7:/  /mnt/nfs   寫的是根,其實掛載的是                                                192.168.64.7:/nfsroot 僞根目錄
![](https://s1.51cto.com/images/blog/201802/04/fd93a63616583f7063d30d30a26b1bdc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相關文章
相關標籤/搜索