假設系統中有兩個賬號,分別是 alex 和 arod ,這兩個人除了自己群組之外還共同支持一個名為 project 的群組。假設這兩個用戶需要共同擁有 /srv/ahome/ 目錄的開發權,而該目錄禁止其他人進入查閱。 請問該目錄的權限設定應為何?請先以傳統權限說明,再以 SGID 的功能解析。
目標:了解到為何項目開發時,目錄最好需要設定 SGID 的權限!
前提:多個賬號支持同一群組,且共同擁有目錄的使用權!
需求:需要使用 root 的身份來進行 chmod, chgrp 等幫用戶設定好他們的開發環境才行! 這也是管理員的重要任務之一
(1)准備工作。
groupadd project --------建立群組project
useradd -G project alex --------建立用戶alex,並且此用戶支持群組project
useradd -G project arod --------建立用戶arod,並且此用戶支持群組project
id alex ----查看alex的賬戶屬性
id alex ----查看alex的賬戶屬性
mkdir /srv/ahome ---- 建立工作目錄
(2)使用傳統權限。
chmod 770 /srv/ahome -----該目錄禁止其他人進入查閱,而同組的人卻可以互相修改檔案,所以修改權限為770
chgrp project /srv/ahome -----將/srv/ahome目錄的支持群組修改為project
此時工作目錄的權限已經設好,支持群組也設定為project了,是不是已經可以了呢?
我們試一下看:
使用alex用戶登錄tty2
cd /srv/ahome ---- 進入工作目錄
touch 123.txt -----建立檔案123.txt
ls -l 123.txt -----查看123.txt的檔案屬性
-rw-rw-r-- 1 alex alex 0 Sep 29 22:46 123.txt 我們發現alex建立的檔案本身所屬的群組為alex。但對於arod來講,他並不支持alex這個群組,所以arod對應此檔案就是other,不過other有r權限,所以理論上arod是可以查看檔案內容的。我們下邊驗證一下。
使用arod用戶登錄tty3
cd /srv/ahome ---- 進入工作目錄
cat -n 123.txt
xxxxxxxxx ----123.txt的內容
nano 123.txt -----使用編輯器編輯123.txt,此時你會發現,當你想要保存的時候,系統提示你“不允許”
(3)使用SGID 權限
chmod g+s /srv/ahome 使用root用戶修改目錄/srv/ahome的權限,使之具有SGID權限。
換arod用戶登錄,使用nano編輯器修改內容試一下:
nano 123.txt -------???什麼?還是不行?
呵呵,當然不行了。。。。因為你的檔案的支持群組並沒有改變啊。
切換root
rm 123.txt
再使用alex用戶登錄,
touch 123.txt -----建立檔案123.txt
ls -l 123.txt -----查看123.txt的檔案屬性
-rw-rw-r-- 1 alex project 0 Sep 29 22:48 123.txt ----可以發現123.txt這樣檔案已經歸屬於project群組了。
此時再使用arod用戶就可以修改內容了,不信可以試一下哦。