Unix系統(tǒng)文件使用chmod的一些例子
Unix系統(tǒng)文件的屬性和管理員可以使用命令chmod來設(shè)置或改變文件的權(quán)限。chmod有幾種不同的使用方法,可以直接使用八進制的權(quán)限表示方式設(shè)置屬性,或者使用屬性字母來設(shè)置或更改文件的屬性,不同的使用方法要求不同的 chmod參數(shù),下面是使用chmod的一些例子:
- chmod 750 a.out :改變a.out的權(quán)限為750;
- chmod a+x a.out :對所有用戶增加a.out的執(zhí)行權(quán)限,
- a(All)表示所有用戶;
- chmod u=rwx a.out :設(shè)置屬主的權(quán)限為讀、寫和執(zhí)行
- u(user)表示屬主用戶;
- chmod g+rw a.out :增加同組用戶的讀寫權(quán)限,
- g(group)表示同組用戶;
- chmod o-w a.out :減少其他用戶的寫權(quán)限,
- o(others)表示其他用戶;
- chmod go= a.out :清除同組和其他用戶的所有權(quán)限;
- chmod o=u-w a.out :設(shè)置其他用戶的權(quán)限為減去寫權(quán)限的屬主權(quán)限;
權(quán)限755是最常見的文件權(quán)限設(shè)置,這種屬性的文件允許其他用戶可以訪問這個文件,但不可以更改,如果不打算讓其他用戶訪問文件,文件的存取權(quán)限可以設(shè)置為700。文件在創(chuàng)建的時候,Unix系統(tǒng)使用掩碼來決定文件的權(quán)限,掩碼的二進制對應(yīng)位為1的,文件屬性的對應(yīng)位就設(shè)置為0,例如當掩碼的八進制表示為022時(二進制為000010010),創(chuàng)建的文件權(quán)限就為755(111101101)。
文件掩碼使用umask命令來設(shè)置,例如使用 “umask 027 ” 設(shè)置掩碼為027,則創(chuàng)建的文件權(quán)限為750,其他用戶將對這個文件沒有任何權(quán)限??梢栽趩淤Y源文件或者在登錄類別中設(shè)置中設(shè)置用戶的掩碼。
目錄需要設(shè)置執(zhí)行位,以允許用戶能使用cd命令進入這個目錄中。
當一個文件的權(quán)限設(shè)置完畢之后,在一個進程試圖訪問這個文件時,Unix系統(tǒng)就比較這個進程的屬主和屬組與文件的屬主和屬組,判斷這個進程是否具備訪問權(quán)限。由于每個進程的屬主和屬組標識是由啟動這個進程的用戶決定的,因此一個用戶啟動的進程就具備其本身對文件的訪問權(quán)限。
除了讀、寫和執(zhí)行權(quán)限以外,對于可執(zhí)行的程序還有另外兩個非常重要的屬性:設(shè)置屬主身份(setuid, Set User ID)權(quán)限和設(shè)置組身份(setgid, Set Group ID)權(quán)限,這兩個屬性允許某個程序可以更改自己的進程標識為程序文件屬主或組,因而就可以具備該程序文件屬主或?qū)俳M的訪問權(quán)限,而不再僅僅是啟動進程的用戶的訪問權(quán)限,這樣就能完成特定的任務(wù)。
很多Unix系統(tǒng)程序,例如su,就是通過這個特性來完成從執(zhí)行進程時的普通用戶身份到root用戶身份的轉(zhuǎn)化的,因此這兩個屬性對于Unix系統(tǒng)安全至關(guān)重要。不是必要的Unix系統(tǒng)程序,不能具備這些屬性。
【編輯推薦】