網絡文件共享服務
阿新 • • 發佈:2018-02-05
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=)
網絡文件共享服務