1. 程式人生 > >分享一個Linux管理文檔多租戶的例子

分享一個Linux管理文檔多租戶的例子

技術分享 搭建開發環境 mine use 截取 賬號 默認 範圍 方法

例題

同一群組microsoft下的兩個賬號justmine001justmine002需要共同擁有目錄/microsoft/eshop的開發權,以便進行協同工作,但是其他人不允許進入和查閱該目錄。

從例題可以分析出:

  1. 同一群組下的賬戶需要共同擁有目錄的使用權,且可以編輯裏面的任何文件。
  2. 其他賬戶不擁有該目錄的任何權限。
  3. 需要使用root賬戶,創建賬戶、群組,設置目錄權限,然後搭建開發環境。

創建賬戶相關信息

groupadd microsoft ;  新增群組
useradd -G microsoft justmine001; 新增賬戶,並加入到群組microsoft
useradd -G microsoft justmine002; 新增賬戶,並加入到群組microsoft

查閱賬號屬性

id justmine001;
id justmine002;

技術分享圖片

搭建環境

創建開發目錄

mkdir -p /microsoft/eshop

查詢

ll -d /microsoft/eshop

技術分享圖片

設置傳統權限

從上圖可以看到,開發目錄的擁有者和群組都是root,權限為rwxr-xr-x,所以justmine001justmine002可以查閱(ls)和進入(cd)該目錄,但是都不能在目錄中創建文件。
技術分享圖片
技術分享圖片
首先,設置目錄群組為microsoft,其次,其他人對該目錄沒有任何權限,所以應該設置權限為770。如果不理解,請閱讀上一篇詳解Linux文檔屬性、擁有者、群組、權限、差異

chgrp microsoft /microsoft/eshop; 分配群組
chmod 770 /microsoft/eshop;  設置權限

首先測試justmine賬號(其他人)的權限,如下:
技術分享圖片
其他人無法訪問ls和進入cd該目錄,已達到預期效果。

測試同群組下的justmine001justmine002賬號,再次創建文件,如下:
技術分享圖片
技術分享圖片
為了淋漓盡致的展現,我將文件創建權限從拒絕到許可的整個過程都截取下來了!!!
從上面可以看到,文件testtest1的擁有者和群組分別為justmine001justmine002,雖然用戶justmine001可以刪除文件test1(目錄權限的控制範圍),但是卻不能編輯它(文件權限的控制範圍)。那該腫麽辦呢,還是無法完成協作工作啊。那麽我們將文件權限設置為777不就可以了,這樣文件對任何人都可讀、可寫、可編輯,再加上目錄權限的控制,不就可以了,沒毛病。還有一種方法,變更它們創建的文件群組為microsoft

,這樣也可以實現協作工作,貌似這種方法才是切合現實的。不過,每次都要管理員去做這件事情,那豈不是太麻煩他老人家,多不好意思啊,嘿嘿。正所謂,車道山前必有路,我們可以使用Linux特殊權限SGIDumask來定義這種默認行為,這樣同一群組下的任何賬戶創建的文件都可以互相修改了。

備註:Linux文檔權限是一級一級的往下控制的,讀、寫、編輯文件的前提是能進入該目錄。

設置特殊權限

為目錄/microsoft/eshop設置SGID權限

chmod 2770 /microsoft/eshop

使用justmine002賬號創建文件,查詢文件權限:
技術分享圖片
從上圖可以看到,justmine002所屬的文件群組自動變更成microsoft,而umask默認為002,兩人同屬一個群組,自然就可以互相修改彼此的文件了!!!

總結

對於文檔多租戶管理,我們最好新建一個統一的群組,然後將目錄權限設置為2770,最後把需要協作工作的用戶加入這個群組即可,就是這麽簡單。

分享一個Linux管理文檔多租戶的例子