2014IT鐵人賽-14-umask 與 特殊權限
今天一樣使用 EasyCloud 雲端簡單龍的帳戶, 那就登入 https://gemini.nchc.org.tw/ 來開始練習openSUSE 基礎指令吧.
今天練習umask 與特殊權限
筆記部份:
上一篇介紹權限, 接下來我們來聊聊預設的權限該如何設定
**建立檔案/資料夾的預設權限計算**
建立檔案預設權限 666
建立資料夾預設權限 777
那這樣是不是檔案開放太多權限?
所以系統使用 umask 這個機制來移除特定的權限
umask 022 (定義於/etc/profile)
umask 權限遮罩
預設權限計算: 預設權限 使用 umask 遮罩(移除)住特定權限
舉例來說, 如果在系統內建立一個檔案
預設權限
r w - r w - r w -
umask
- - - - w - - w -
------------------------------------------------------------
r w - r - - r - -
6 4 4
舉例來說, 如果在系統內建立一個資料夾
預設權限
r w x r w x r w x
umask
- - - - w - - w -
------------------------------------------------------------
r w x r - x r - x
7 5 5
接下來介紹特殊權限
特殊權限
SUID --> user的特殊權限, 會繼承 使用者ID
SGID --> group的特殊權限, 會繼承群組
Sticky bit --> other的特殊權限, 非擁有者本人不能刪除檔案
故權限的表示方式為四碼
第一碼為特殊權限, 後三碼為一般權限
特殊權限的加總
SUID --> 4
SGID --> 2
Sticky bit --> 1
User 權限
Group 權限
Other 權限
但是因為特殊權限都在原本一般權限 x 的位置來表示, 所以如何知道原本是否有 x 權限?
Q:差異為?
s:原來有x
S:原來無x
t:原來有x
T:原來無x
權限轉換
rwsr---wT --> 5742
4752 --> rwsr-x-w-
rwSrwsr-t --> 7675
6744 --> rwsr-Sr--
開始練習吧
Lab: umask 與檔案建立權限計算
#cd /home/max
#umask <列出目前的umask>
#cat /etc/profile | grep umask <觀察系統設定>
#touch rootfile
#mkdir rootdir
#ls -ld root* <請觀察權限>
#umask 013 <自訂umask 為013,暫時性生效>
#umask <列出目前的umask>
#touch rootfile2
#mkdir rootdir2
#ls -ld root* <請觀察權限>
#exit <因為剛有改umask故登出以免影響>
Lab: SUID
#ls -l /bin/cat <請觀察權限>
#ls -l /etc/shadow <請觀察權限>
#su - user1 -c "cat /etc/shadow" <以user1身份查看/etc/shadow,失敗,因為無 r 權限>
#chmod u+s /bin/cat <將cat指令加上 SUID 權限>
#ls -l /bin/cat <請觀察權限>
#ls -l /etc/shadow <請觀察權限>
#su - user1 -c "cat /etc/shadow" <以user1身份查看 /etc/shadow --> 成功>
<cat指令有設定SUID,故執行時身份會變成cat指令所有人root, root對/etc/shadow有 r 的權限,故可以查看>
#chmod u-s /bin/cat <請將SUID權限移除>
#su - user1 -c "cat /etc/shadow" <以user1身份查看/etc/shadow,失敗,因為無 r 權限>
Lab: SGID
目的:建立部門資料夾,不管任何使用者在該目錄下
建立檔案或資料夾,均繼承該目錄群組
#mkdir /mis
#groupadd mis <新增mis群組>
#ls -ld /mis <請觀察權限及擁有者,群組>
#chown root.mis /mis <將/mis資料夾的群組改為mis所有>
#ls -ld /mis <請觀察權限及擁有者,群組>
#touch /mis/test
#ls -l /mis <請觀察權限及擁有者,群組>
#chmod g+s /mis <將/mis資料夾加上SGID>
#ls -ld /mis <請觀察權限及擁有者,群組>
#touch /mis/test2
#ls -l /mis <請觀察權限及擁有者,群組>
Lab: sticky bit
目的:不管權限為何不可以刪除其他人的檔案
#mkdir /test
#chmod 1777 /test <將/test加上sticky bit 權限並將權限設定為777>
#touch /test/test.txt
#chmod 777 /test/test.txt
#ls -ld /test <請觀察權限及擁有者,群組>
#ls -l /test <請觀察權限及擁有者,群組>
#su - user1 -c "rm /test/test.txt" <以使用者user1刪除 /test/test.txt -->失敗>
<因 /test目錄有設定sticky bit權限,故非本人不能刪除>
Fun with Day 14 ~