1. 程式人生 > >網絡文件共享服務

網絡文件共享服務

basename entos fff centos7 ftp服務器 需要 .gz mar tor

說明:本實驗在兩臺CentOS主機上實現,一臺做為FTP服務器,一臺做數據庫服務器

實驗:實現基於mysql驗證的vsftpd虛擬用戶

一、安裝所需要包和包組:

?在數據庫服務器上安裝包:
?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

二、在數據庫服務器上創建虛擬用戶賬號

# 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;

三、在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

?四、啟動vsftpd服務

service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
查看端口開啟情況
netstat -tnlp |grep :21

?五、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/

?六、測試:利用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服務共享

遠程用戶的家目錄通過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服務:偽根方式將多個不同的文件夾組織成根目錄

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 偽根目錄
![](http://i2.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=)

網絡文件共享服務