linux是多使用者,多工的作業系統,這意味著多人可以同時使用一台主機。考慮到每個使用者的個人喜好與隱私,檔案的所有者就顯得尤為重要。將使用者分為不同的組別當然是為了方便管理。因此使用者與檔案之間的關係就有三種:(1)user:表示該使用者是檔案的所有者。(2)group:表示該使用者和檔案的所有者在同一使用者組。(3)others:除了以上兩種的其他使用者。此外,linux中還有乙個特殊root賬戶,相當於windows中的管理員賬戶,對所有檔案具有所有權。
由於只是自己乙個人在自己的機器上使用,對這一部分就沒有深入了解。重點在下面的檔案許可權。
在終端下執行"ls-l"檢視當前目錄的檔案,l引數用於顯示檔案的屬性,以下是乙個例子及對應的屬性說明:
-rw-rw-r--1jerryjerry1006月2811:40hello.c
【使用者許可權】【連線數】【所有者】【使用者組】【檔案大小】【修改日期】【檔名】
注:檔案大小的單位是b
開頭的那一串"-rw-rw-r--"共有10個字元,第乙個表示檔案的型別,常見的有:[-]代表檔案,[d]代表目錄,[l]代表鏈結檔案,[b]代表裝置等。後面的九個分為三組,分別代表user,group,other這三類用的許可權,[r]代表讀許可權,[w]代表寫許可權,[x]代表執行許可權,[-]就代表沒有許可權。因此,上面這個例子代表檔案的所有者jerry及同組的使用者對該檔案可讀,可寫。其他使用者則只能讀。所有的使用者都沒有執行許可權。
如上所述,使用者對於檔案有r(read),w(write),x(execute)這三種許可權。在linux中「一切皆檔案」,因而有時候這是令人迷惑的,尤其是對目錄來說。以下對目錄的這三個許可權再做具體的說明:
r:表示使用者可以檢視該目錄下的內容,即可以使用「ls」命令
w:表示使用者可以修改該目錄下的內容,包括增加,刪除,重新命名等
x:表示使用者可以進入該目錄,即可以使用「cd」命令
而對於我們通常所說的的「檔案」來說,「r」和「w」容易明白,而「x」則令人費解,難道文字檔案也可以執行嗎?在這一點上,linux和windows有很大的區別。在windows下,可執行檔案通常都是以「.exe」結尾的。而在linux下,檔案是否可執行與字尾名沒有關係,而僅與是否具有x許可權有關。不過無論是linux還是windows,可執行的只能是二進位制檔案。因此,雖然在linux下文字檔案加上x許可權也可以執行,不過系統只認識二進位制的機器語言,因此只可能報錯而不會有任何效果。
為了驗證這一點可以做乙個簡單的實驗,用gcc編譯乙個c語言檔案,缺省會得到乙個「a.out」檔案,將其重新命名為「a.txt」,然後執行「./a.txt」,將會發現程式依然能夠執行。
linux下要更改檔案的許可權,可以用以下三個命令:
改變所有者:chownuserfilename
改變使用者組:chgrpgroupfilename
改變許可權:chmod,有以下兩種用法:
(1)數字法:
三個許可權對應的數字為r:4,w:2,x:1,三類使用者的許可權分別就是這三個數字的和,比如說上面的那個例子「-rw-rw-r--」化為數字即是:664,要給三個使用者都加上執行許可權的話,就用「chmod775hello.c」
(2)符號法:
chmodu/g/o/a+/-/=r/w/xfilename
以上「u」表示user,「g」表示group,「o」表示others,「a」表示all
「+」表示增加許可權,「-」表示去除許可權,「=」表示設定許可權為
「rwx」當然就是檔案的三個許可權,可以只寫乙個,也可以寫多個
依舊是上面的那個例子,給hello.c所有使用者加上執行許可權,那麼命令就是「chmoda+xhello.c」
ps:以上命令可以加上「-r」引數來進行遞迴變更
以上已經說明了關於檔案許可權的基本知識,那麼當我們新建乙個檔案的時候,許可權是怎樣的呢?這就涉及到檔案的預設許可權:umask。在終端下輸入umask,會得到一串數字,像在我的機器上是「0002」,後三個數字即是檔案的預設許可權,不過要注意的是,這是檔案預設不具有的許可權。亦即「002」代表others不具有w許可權。還需要注意的是對於檔案和目錄這裡仍是不同的。檔案預設不具有x許可權,即最大許可權為「-rw-rw-rw-」,而目錄訪問需要x許可權,因此預設最大許可權為「-rwxrwxrwx」。所以在我的機器上umask為「002」,分別建立乙個檔案和乙個目錄後,結果如下:
drwxrwxr-x.2jerryjerry40968月3111:30new
-rw-rw-r--.1jerryjerry68月3111:29new.txt
若要設定umask,直接在後面加上設定的數字即可,比如「umask022」
ps:umask加上「-s(大寫)」引數可以直接顯示檔案許可權,不過不區分檔案與目錄,如我的機子上就顯示「u=rwx,g=rwx,o=rx」,仍需留意檔案預設沒有x許可權。
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group內!圖...
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他使用者 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group...
linux檔案許可權
檔案的許可權由三個部分組成 u user g group o other 每個部分的許可權又分別 r 4讀 w 寫2 x 執行1 下面以 var www資料夾設定許可權,了解如何設定檔案許可權 chmod a x var www 所有人都可進入 chmod a x var www 所有人都不可進入 ...