對Unix文件的屬性知識深入講解
由于FreeBSD是一個多用戶系統(tǒng),不同的用戶對不同的Unix文件就應該有不同的處理權力,通常創(chuàng)建Unix文件的用戶就擁有這個文件,成為這個文件的屬主。同樣,文件也有自己的屬組,這是一個文件的兩個重要屬性。
由于文件的屬主和組涉及到對文件的訪問控制,因此只有root能更改文件的這兩個屬性,更改Unix文件屬主的命令為chown,更改Unix文件屬組的命令為chgrp。
由于不可能為每個用戶都單獨提供完全獨立的Unix文件系統(tǒng),多用戶操作系統(tǒng)必須提供一種安全的訪問控制機制,使得用戶既能和其他用戶共享某些文件,又能保證各個用戶的Unix文件不會被非法存取或破壞。
Unix分別針對屬主、同組用戶和其他用戶共三種不同的用戶,分別設置了存取控制權限,這個權限分別為:讀、寫和執(zhí)行,使用英文字母r(Read)、w(Write)和x(eXecute)來表示。由于對屬主、組和其他用戶均有這三種權限設置,因此每個Unix文件共有九個權限參數(shù)。使用 “ls -l” 命令就能看到Unix文件的權限設置:
- $ ls -l
- drwx------ 4 user wheel 512 Nov 25 17:23 Mail
- -rw-rw-r-- 1 user wheel 149 Dec 4 14:18 Makefile
- -rwxr-xr-x 1 user wheel 3212 Dec 4 12:36 a.out
- drwxr-xr-x 1 user wheel 512 Dec 14 17:03 bin
- -rw-r--r-- 1 user wheel 143 Dec 4 12:36 hello.c
- drwxr-xr-x 2 user wheel 1024 Oct 16 1997 public_html
- drwxrwxrwx 2 user wheel 512 Jan 3 14:07 tmp
從上面的例子中,可以看到Unix文件的權限設置在列出的數(shù)據(jù)的***列中顯示,例如文件a.out的屬性是-rwxr-xr-x,共顯示了十個字母的位置。其中***個位置是用于標識Unix文件的種類,而非權限設置,其余九個位置分別表示三組的三種權限設置。
第二個到第四個位置表示屬主的權限分別設置為讀、寫和執(zhí)行,第五個到第七個位置設置同組用戶的權限,第八個到第十個位置設置其他用戶的權限。當指定位置上沒有顯示對應的權限,而是 “-” ,則表示不允許對應的權限。
因此a.out的權限設置為,對于屬主user的權限為讀寫和執(zhí)行,對于同組用戶為讀和執(zhí)行權限,對于其他用戶也是讀和執(zhí)行權限。對于目錄來講,擁有讀權限意味著用戶可以列出這個目錄下的Unix文件內容,寫權限使用戶可以在這個目錄下增、刪文件和更改文件名,執(zhí)行權限保證用戶可以使用cd進入這個目錄。
ls輸出結果的***個位置表示類別,例如 “d” 表示目錄, “c” 表示該Unix文件為字符設備文件, “b” 表示為塊設備文件, “l” 表示為一個符號連接。
Unix系統(tǒng)內部使用數(shù)值來表示這些屬性,每一個屬性與Unix文件屬性中的一個二進制位相對應,如果該存取權限設置了,對應的二進制位就是1,如果該存取權限沒有設置,對應的二進制位是0。這樣a.out的權限屬性rwxr-xr-x 用二進制來表示就是111101101,Unix下常使用八進制的形式表示,這樣這個權限是755。
【編輯推薦】