分享一個Linux管理文檔多租戶的例子
例題
同一群組microsoft
下的兩個賬號justmine001
和justmine002
需要共同擁有目錄/microsoft/eshop
的開發權,以便進行協同工作,但是其他人不允許進入和查閱該目錄。
從例題可以分析出:
- 同一群組下的賬戶需要共同擁有目錄的使用權,且可以編輯裏面的任何文件。
- 其他賬戶不擁有該目錄的任何權限。
- 需要使用
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
,所以justmine001
和justmine002
可以查閱(ls
)和進入(cd
)該目錄,但是都不能在目錄中創建文件。
首先,設置目錄群組為microsoft
,其次,其他人對該目錄沒有任何權限,所以應該設置權限為770。如果不理解,請閱讀上一篇詳解Linux文檔屬性、擁有者、群組、權限、差異
chgrp microsoft /microsoft/eshop; 分配群組 chmod 770 /microsoft/eshop; 設置權限
首先測試justmine
賬號(其他人)的權限,如下:
其他人無法訪問ls
和進入cd
該目錄,已達到預期效果。
測試同群組下的justmine001
和justmine002
賬號,再次創建文件,如下:
為了淋漓盡致的展現,我將文件創建權限從拒絕到許可的整個過程都截取下來了!!!
從上面可以看到,文件test
和test1
的擁有者和群組分別為justmine001
和justmine002
,雖然用戶justmine001
可以刪除文件test1
(目錄權限的控制範圍),但是卻不能編輯它(文件權限的控制範圍)。那該腫麽辦呢,還是無法完成協作工作啊。那麽我們將文件權限設置為777不就可以了,這樣文件對任何人都可讀、可寫、可編輯,再加上目錄權限的控制,不就可以了,沒毛病。還有一種方法,變更它們創建的文件群組為microsoft
Linux
特殊權限SGID
和umask
來定義這種默認行為,這樣同一群組下的任何賬戶創建的文件都可以互相修改了。
備註:Linux文檔權限是一級一級的往下控制的,讀、寫、編輯文件的前提是能進入該目錄。
設置特殊權限
為目錄/microsoft/eshop
設置SGID
權限
chmod 2770 /microsoft/eshop
使用justmine002
賬號創建文件,查詢文件權限:
從上圖可以看到,justmine002
所屬的文件群組自動變更成microsoft
,而umask
默認為002
,兩人同屬一個群組,自然就可以互相修改彼此的文件了!!!
總結
對於文檔多租戶管理,我們最好新建一個統一的群組,然後將目錄權限設置為2770
,最後把需要協作工作的用戶加入這個群組即可,就是這麽簡單。
分享一個Linux管理文檔多租戶的例子