转鸟哥的~~
OK!那麼現在我們知道如何建立或者是改變一個目錄或檔案的屬性了,不過, 你知道當你建立一個新的檔案或目錄 時,他的預設權限會是什麼嗎?呵呵!那就與 umask 這個玩意兒有關了!那麼 umask 是在搞什麼呢?基本上, umask 就是指定 『目前使用者在建立檔案或目錄時候的權限預設值 』, 那麼如何得知或設定 umask 呢?他的指定條件以底下的方式來指定:
[root@www ~]# umask 0022 <==與一般權限有關的是後面三個數字! [root@www ~]# umask -S u=rwx,g=rx,o=rx |
查閱的方式有兩種,一種可以直接輸入 umask ,就可以看到數字型態的權限設定分數, 一種則是加入 -S (Symbolic) 這個選項,就會以符號類型的方式來顯示出權限了! 奇怪的是,怎麼 umask 會有四組數字啊?不是只有三組嗎?是沒錯啦。 第一組是特殊權限用的,我們先不要理他,所以先看後面三組即可。
在預設權限的屬性上,目錄與檔案是不一樣的。從第六章我們知道 x 權限對於目錄是非常重要的! 但是一般檔案的建立則不應該有執行的權限,因為一般檔案通常是用在於資料的記錄嘛!當然不需要執行的權限了。 因此,預設的情況如下:
- 若使用者建立為『檔案』則預設『沒有可執行( x )權限』,亦即只有 rw 這兩個項目,也就是最大為 666 分,預設權限如下:
-rw-rw-rw-
- 若使用者建立為『目錄』,則由於 x 與是否可以進入此目錄有關,因此預設為所有權限均開放,亦即為 777 分,預設權限如下:
drwxrwxrwx
要注意的是,umask 的分數指的是『該預設值需要減掉的權限 !』因為 r、w、x 分別是 4、2、1 分,所以囉!也就是說,當要拿掉能寫的權限,就是輸入 2 分,而如果要拿掉能讀的權限,也就是 4 分,那麼要拿掉讀與寫的權限,也就是 6 分,而要拿掉執行與寫入的權限,也就是 3 分,這樣瞭解嗎?請問你, 5 分是什麼?呵呵! 就是讀與執行的權限啦!
如果以上面的例子來說明的話,因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那麼當使用者:
- 建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
- 建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
[root@www ~]# umask 0022 [root@www ~]# touch test1 [root@www ~]# mkdir test2 [root@www ~]# ll -rw-r--r-- 1 root root 0 Sep 27 00:25 test1 drwxr-xr-x 2 root root 4096 Sep 27 00:25 test2 |
呵呵!瞧見了吧!確定新建檔案的權限是沒有錯的。
- umask的利用與重要性:專題製作
想像一個狀況,如果你跟你的同學在同一部主機裡面工作時,因為你們兩個正在進行同一個專題, 老師也幫你們兩個的帳號建立好了相同群組的狀態,並且將 /home/class/ 目錄做為你們兩個人的專題目錄。 想像一下,有沒有可能你所製作的檔案你的同學無法編輯?果真如此的話,那就傷腦筋了!
這個問題很常發生啊!舉上面的案例來看就好了,你看一下 test1 的權限是幾分? 644 呢!意思是『如果 umask 訂定為 022 ,那新建的資料只有使用者自己具有 w 的權限, 同群組的人只有 r 這個可讀的權限而已,並無法修改喔! 』這樣要怎麼共同製作專題啊!您說是吧!
所以,當我們需要新建檔案給同群組的使用者共同編輯時,那麼 umask 的群組就不能拿掉 2 這個 w 的權限! 所以囉, umask 就得要是 002 之類的才可以!這樣新建的檔案才能夠是 -rw-rw-r-- 的權限模樣喔! 那麼如何設定 umask 呢?簡單的很,直接在 umask 後面輸入 002 就好了!
[root@www ~]# umask 002 [root@www ~]# touch test3 [root@www ~]# mkdir test4 [root@www ~]# ll -rw-rw-r-- 1 root root 0 Sep 27 00:36 test3 drwxrwxr-x 2 root root 4096 Sep 27 00:36 test4 |
所以說,這個 umask 對於新建檔案與目錄的預設權限是很有關係的!這個概念可以用在任何伺服器上面, 尤其是未來在你架設檔案伺服器 (file server) ,舉例來說, SAMBA Server 或者是 FTP server 時, 都是很重要的觀念!這牽涉到你的使用者是否能夠將檔案進一步利用的問題喔!不要等閒視之!
例題:
假設你的 umask 為 003 ,請問該 umask 情況下,建立的檔案與目錄權限為?
答:
umask 為 003 ,所以拿掉的權限為 --------wx,因此:
檔案: (-rw-rw-rw-) - (--------wx) = -rw-rw-r-- |
Tips: 關於 umask 與權限的計算方式中,教科書喜歡使用二進位的方式來進行 AND 與 NOT 的計算, 不過,鳥哥還是比較喜歡使用符號方式來計算~聯想上面比較容易一點~ 但是,有的書籍或者是 BBS 上面的朋友,喜歡使用檔案預設屬性 666 與目錄預設屬性 777 來與 umask 進行相減的計算~這是不好的喔!以上面例題來看, 如果使用預設屬性相加減,則檔案變成:666-003=663,亦即是 -rw-rw--wx ,這可是完全不對的喔! 想想看,原本檔案就已經去除 x 的預設屬性了,怎麼可能突然間冒出來了? 所以,這個地方得要特別小心喔! | ![]() |
在預設的情況中, root 的 umask 會拿掉比較多的屬性,root 的 umask 預設是 022 , 這是基於安全的考量啦~至於一般身份使用者,通常他們的 umask 為 002 ,亦即保留同群組的寫入權力! 其實,關於預設 umask 的設定可以參考 /etc/bashrc 這個檔案的內容,不過,不建議修改該檔案, 你可以參考第十一章 bash shell 提到的環境參數設定檔 (~/.bashrc) 的說明!
鸟哥地址:http://linux.vbird.org/linux_basic/0220filemanager.php#fileperm