nfs和samba都是我們比較常見的檔案系統共享服務,nfs工作于系統核心之上,一般的系統并不需要安裝此服務的程式,而且其工具元件nfs-utils也一般都是自帶的,如果沒有,通過軟體包安裝就好;而samba的話,服務端需要yum install samba,用戶端則是samba-client。
然後在服務端,我們隻需要修改nfs或samba的配置檔案,将需要分享的路徑和通路控制等資訊寫入配置檔案,挂載的準備工作就做好了。
上面兩圖是nfs和samba的配置檔案,nfs的配置檔案開始是空的,我們隻需要添加條目即可,而samba的配置,我主要修改的是圖中[netlogon]共享名稱下的資訊,[netlogon]是檔案中原有的類似配置示例的條目,開始時是被注釋的,我去掉注釋并在上面做了修改,就直接用了,自定義共享名稱當然是可以的,我[netlogon]下定義的是/data/fpm-vhosts/web,也可以多家幾個,定義成别的路徑;[homes]和[printers]是定義通路使用者的家目錄及列印選項的,這裡不用改。
samba的配置檔案還提供的全局的通路控制
我基本沒改,但interfaces和hosts allow開始時是被注釋掉的,我啟用了,并做了修改;由此可見,我這台主機ip是172.16.0.214,并允許172.16網段的客戶機通路此共享檔案系統。
此外,還有一些日志檔案配置和安全級别的配置,可以改一下max log size,調整一下日志檔案的滾動上限:
其他的都沒必要改;
好,下面我們做一下總結及環境介紹:
nfs的配置檔案為/etc/exports或/etc/exports.d/*,因為一開始都是空的,是以就直接在/etc/exports裡加條目就好;
/PATH/TO/SOME_DIR clients1(options,.....)
ro:隻讀
rw:讀寫;
sync:同步;
async:異步;
root_squash:壓縮root使用者,一般指将其映射為nfsnobody;
no_root_squash:不壓縮root使用者;
all_squash:壓縮所有使用者;
anonuid and anongid:将壓縮的使用者映射為此處指定的使用者;
圖中我共享的是跟samba上一樣的/data/fpm-vhosts/web路徑及/data路徑,為了友善實驗,都設成了讀寫挂載及不壓縮root使用者。
注意:現實中不壓縮root使用者就表示通路你共享檔案系統的使用者,如果在用戶端他自己的機器上用的是root使用者,在你的檔案系統中也是root,有着跟你的root一樣的權限,多危險就不用多說了。
而samba的配置檔案為/etc/samba/smb.conf,主要定義的地方是共享檔案系統配置,也就是上文提到的“[]”裡面加共享名稱的地方
它的常用指令有:
comment:注釋資訊;
path:目前共享所映射的檔案系統路徑;
browseable:是否可浏覽,指是否可被使用者檢視;
guest ok:是否允許來賓賬号通路;
public:是否公開所有使用者;
writable:是否可寫;
write list:擁有寫權限的使用者清單;
使用者名
@組名
+組名
當然,圖中我設定的guest ok是yes的,允許匿名使用者通路,如果不允許的話,就需要使用系統使用者身份登入,但此處需注意的是:使用者是那個使用者,密碼卻是由samba自己管理的密碼,指令是:smbpasswd
smbpasswd [options] USERNAME
-a:添加
-x:删除
-d:禁用
-e:啟用
總之,我在172.16.0.214上已經做好了nfs和samba的分享且權限什麼的都沒問題,隻要開啟服務和端口,起碼我的另一台作為用戶端的主機172.16.0.215可以實作無阻力通路;
/data/fpm-vhosts/web是我在服務端搭建的lamp的跟路徑,打算在其下放一個wordpress程式,用戶端挂載之後可以通路;
/data路徑打算讓用戶端挂載之後,讓其做資料庫的儲存檔案路徑,samba中的共享名稱為[mys]。
接下來就是在用戶端挂載了;
/data路徑:
nfs挂載之前先看看服務端分享了哪些檔案系統路徑是個好習慣:showmount -e 172.16.0.214;
得知/data路徑已被分享後:mount -t nfs 172.16.0.214:/data /var/lib/mysql/;
這樣就挂上了,之後安裝上mariadb,它的存儲檔案的目錄預設為 /var/lib/mysql/,隻要授權之後就可以使用了。
samba中檢視服務端共享的方法是:smbclient -L 172.16.0.214;
值得一提的是,samba還能像lftp一樣進行互動式通路:smbclient //172.16.0.214/mys(這裡隻是舉例,此次試驗無需用到互動通路);
挂載的話:mount -t cifs //172.16.0.214/mys /var/lib/mysql/
注意:上述通路和挂載都是匿名的,如果挂載時以使用者身份來完成的話,可以在後面跟上:
-o username=USERNAME,password=PASSWORD
使用者與-o選項中指定使用者直接産生映射關系,此時,通路挂載點,是以-o選項中的username指定的使用者身份進行,與本地使用者無關;
/data/fpm-vhosts/web路徑:
首先,我的服務端與用戶端兩台主機上都搭建了lamp,并且都部署了wordpress。因為wordpress能通過windows上的浏覽器來通路,很直覺,是以友善對比;
這是我用戶端之下自己的wordpress,叫jiangzhi's wordpress,可以看到,這台主機ip尾号是215;
在服務端部署的wordpress,叫jz's wordpress,測試上傳圖檔和發送文章,上傳的圖檔就是自己本頁面,開始上傳圖檔時就報錯了,于是我根據提示修改了wp-content目錄的屬主屬組都為apache,而且是遞歸修改(為了保險);之後圖檔上傳成功,于是我将這句話寫到文章中當内容;
文章上傳成功,标題為:《世界,您好不好?》
最後在215上挂載之:mount -t nfs 172.16.0.214:/data/fpm-vhosts/web /var/www/html/;
重新開機httpd服務後,在浏覽器上輸入用戶端(215)的位址
再看:
此時,不在是jiangzhi‘s wordpress了,而是nfs服務端的部署;
由于我權限放的比較松,是以samba上除了挂載指令以外,其他操作大同小異,總體來說,測試成功!