Linux中每個文件都有相當多的屬性和權限,需要明確文件擁有者(owner)、羣組(group)、非羣組外的其他人(other)的概念。
Linux系統當中,默認情況下,所有的系統上的賬號與一般身份使用者,還有root的相關信息,都是記錄在/etc/passwd這個文件內。個人的密碼則是記錄在/etc/shadow這個文件下。此外,Linux所有的組名都紀錄在/etc/group內!這三個文件可以說是Linux系統裏面賬號、密碼、羣組信息的集中地。
Linux文件屬性
通過執行[ls –al]命令,列出所有文件詳細的權限與屬性(包括隱藏文件,就是文件名第一個字符爲『.』的文件)。
第一個字符代表文件類型[目錄、文件、連接文件等]。
接下來的字符中,以三個爲一組,均爲『rwx』的三個參數的組合。其中[r]代表可讀(read)、[w]代表可寫(write)、[x]代表可執行(execute)。這三個權限的位置不會改變,如果沒有權限,就會出現減號[-]。
2、連接點: 每個文件都會將他的權限與屬性記錄到文件系統的i-node中,不過,我們使用的目彔樹卻是使用文件名來記錄,因此每個文件名就會連結到一個i-node!這個屬性記錄得就是有多少不同的文件名連結到相同的一個i-node號碼。
3、擁有者: 文件或目錄的擁有者賬號;
4、羣組: 文件的所屬羣組;
5、文件容量:默認爲bytes;
6、修改日期:文件的創建日期或者是最近的修改日期;
7、文件名: 如果檔文件名前多一個『.』,則代表這個文件爲『隱藏文件』。
改變文件的權限和屬性可以通過chgrp(改變羣組)、chown(改變擁有者)、chmod(改變讀寫執行的權限)三個基本命令來實現。
改變權限的方式
1、數字類型改變文件權限
Linux文件的基本權限有九個,分別是owner/group/others三種身份各有自己read/write/execute權限,權限字符爲:『-rwxrwxrwx』,這九個權限是三個三個一組的!可以使用數字來代表各個權限:
r:4
w:2
x:1
每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限爲: [-rwxrwx---] 分數則是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以當把文件改爲具備上述權限時,可以通過chmod執行『chmod 770 filename』。
2、符號類型改變文件權限
user、group 、others三種身份可以由u、g、o來代表三種身份的權限!此外,a則代表all亦即全部的身份;讀寫權限仍用r、w、x來表示。
假如需要『-rwxr-xr--』這樣的權限,可以使用『chmod u=rwx,g=rx,o=r filename』來設定。此外,如果不知道原先的文件屬性,而只想要增加.bashrc這個檔案的每個人均可寫入的權限,可以使用:『chmod a+w .bashrc』。
文件與目錄的權限意義
1、文件權限的意義
文件是實際含有數據的地方,包括一般文本文件、數據庫內容文件、二進制可執行文件(binary program)等等。權限對文件來說意義如下:
• r (read):可讀取此一文件的實際內容,如讀取文本文件的文字內容等;
• w (Write):可以編輯、新增或者是修改該文件的內容(但不含刪除該文件);
• x (eXecute):該文件具有可以被系統執行的權限。
對於文件來說,rwx主要都是針對『文件的內容』而言,與文件名的存在與否沒有關係!
2、目錄權限的意義
r (read contents in directory):
表示具有讀取目錄結構列表的權限,所以當你具有讀取(r)一個目彔的權限時,表示你可以查詢該目錄下的文件名數據。 所以你就可以利用ls這個指令將該目錄的內容列表顯示出來!
w (modify contents of directory):
這個可寫入的權限對目彔來說,表示你具有移動該目錄結構列表的權限,也就是底下這些權限:
o 建立新的文件或目錄;
o 刪除已經存在的文件或目錄(不論該文件的權限爲何!)
o 將已存在的文件或目錄進行更名;
o 搬移該目錄內的文件、目錄位置。
總之,目錄的w權限就是與該目錄底下的文件名移動有關就對了!
x (access directory):
目錄不可以被執行,目錄的x代表的是用戶能否進入該目錄成爲工作目錄的用途!所謂的工作目錄(work directory)就是你目前所在的目錄!舉例來說,當你登入Linux時,你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)!
-----摘錄整理自鳥哥的私房菜