範例
同一群組microsoft下的兩個帳號justmine001和justmine002需要共同擁有目錄/microsoft/eshop
的開發權,以便進行協同工作,但是其他人不允許進入和查閱該目錄。
從例題可以分析出:
建立帳戶相關資訊
#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可以刪除justmine002所建立的檔案test1(目錄權限的控制範圍),但卻無法編輯它(文件權限的控制範圍)。那該腫麼辦呢,還是無法完成協作工作啊。第一種方法是我們將檔案test1權限設定為777,這樣檔案對任何人都可讀、可寫、可編輯,再加上目錄權限的控制,其他人存取不了檔案test1,沒毛病。第二種方法,變更它們所建立的檔案群組為microsoft,這樣也可以實作協作工作,看似這種方法才是切合現實的。不過,每次都要管理員去做這件事情,那豈不是太麻煩他老人家,多不好意思啊,嘿嘿。正所謂,車道山前必有路,使用Linux特殊權限SGID可以完美實現同一群組下的任何帳戶創建的文件都擁有相同的群組microsoft(詳情請閱讀:理解Linux文檔的預設安全機制、隱藏屬性、特殊權限)。
備註:Linux文件權限是一級一級的往下控制的,所以任何讀、寫、編輯文件的前提就是要擁有能夠進入文件所屬目錄的權限。
設定特殊權限
#為目錄/microsoft/eshop
設定SGID權限
#chmod 2770 /microsoft/eshop
使用justmine002帳號建立文件,查詢文件權限:
#從上圖可以看到,justmine002所屬的檔案群組自動變更成microsoft,而umask預設為002,兩人同屬一個群組,自然就可以互相修改彼此的檔案了! ! !
總結
Linux系統管理員的主要任務其實就是如何管理好系統的檔案系統,那麼對於文件多租用戶管理,首先新建一個統一的群組,然後將目錄權限設定為2770,最後把需要協作工作的用戶加入這個群組,就是這麼簡單。往往,結果很簡短,但是思考分析過程就如同西天取經,希望把整個過程分享給大家,不僅要知其然,更要知其所以然,這樣才能舉一反三,融匯貫通,達到靈活運用的目的。
以上是多租戶管理技巧在 Linux 檔案系統中的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!