最近閱讀《鳥哥的linux私房菜》,確實是一本好書,使自己在檔案屬性和許可權方面有了較深的理解,總結如下。
(註:本篇博文的圖片來自於《鳥哥的linux私房菜》一書)
一、提綱
本篇博文主要包含以下幾個部分:
1. 使用者和使用者組的概念;
2. 檔案屬性;
3. 目錄與一般檔案的區別;
4. ls命令的使用詳解;
二、使用者和使用者組
linux的系統是“多使用者、多任務環境”的,也就是說“linux系統允許多個使用者同時使用系統,並且可以同時執行不同的任務”。所以為了確保各個使用者的檔案安全, linux系統具有非常嚴格的檔案許可權管理機制。
主要體現在兩個方面:
1. 對檔案操作的許可權:
三種: 讀、寫、執行。
2. 檔案的訪問方式:
三種: owner/group/other。
讀、寫、執行的操作許可權比較容易理解,主要是檔案的訪問方式。它們的含義如下:
擁有者 owner
也就是檔案的所有者,通常是建立檔案的使用者。在linux系統中,每個檔案都有一個所有者。每一個使用者都會被分配唯一的uid。
使用者組
一個使用者組包含若干使用者。值得注意的是:一個使用者也可以屬於多個使用者組,也可以不屬於任何使用者組。每一個使用者組都會被分配唯一的gid。
其他人
對於一個檔案來說,如果某使用者既不是owner,也和owner不在同一個使用者組,那麼該使用者對於檔案來說就是其他人。
另外:在linux系統中,
①各個使用者帳號的資訊都儲存在/etc/passwd檔案中;
②密碼儲存在/etc/shadow檔案中;
③使用者組資訊儲存在/etc/group檔案中。
三、 檔案屬性
在命令列裡執行命令"ls -al ",我們會看到一個詳細的列表,列表的每一行的形式為:
其中各個部分的含義如:
把從左至右依次編號,各個欄位的含義如下:
1. 檔案的屬性,一共有10個屬性,具體含義見:
第一個屬性,表示這個檔案的類型,常見的有:檔案、目錄或串連檔案等。
" d ": 表示是一個 目錄(directory);
" - ": 表示一個 檔案;
" l ": 表示一個串連檔案(link file);
後九個屬性中,每三個位一組,"r"表示可讀(read)、"w"表示可寫(write)、"x"表示可執行(excute)。
第一組為“擁有者owner的許可權”;
第二組為“同使用者組的許可權”;
第三組為“其他人的許可權”;
綜合這兩點:上面圖中的的10個屬性含義為:是一個檔案,這個檔案的“擁有者”可讀、可寫、可執行, “同使用者組的人”也是可讀、可寫、可執行,但是“其他人”沒有任何許可權。
2. 第二列表示連結佔用的節點,這個主要是和link node有關,初學linux的可以先不用研究。
3. 第三列表示檔案的“擁有者”,即owner。
4. 第四列表示擁有者的“使用者組”。
5. 第五列表示這個檔案的大小。
6. 第六列表示檔案的最後“修改時間”(即modification time, 簡稱mtime),對於新建立的檔案就是指其建立的時間。
補充:linux系統“檔案時間”主要包括三個內容:
修改時間(modification time, 簡稱mtime):當前檔案“內容資料”更改時,這個屬性被更新。使用ls命令顯示的時間就是“修改時間mtime ”。
狀態時間(status time, 簡稱ctime):當檔案狀態(status)改變時,這個屬性被更新。例如:更新檔案的許可權和屬性時。
訪問時間(access time, 簡稱atime):當讀取檔案內容時,這個屬性被更新。
注意:如果只是變更檔的內容,“狀態時間ctime ”會改變,但是“修改時間mtime”是不會改變,因為檔案的內容資料並沒有變化。
7. 第七列就是檔案的檔案名稱。注意:在linux系統中,如果一個檔案名稱以"."開頭,那麼這個檔案就是隱藏檔案,這點與windows不同。
四、 目錄與一般檔案的區別
在linux中,目錄也屬於檔案。針對目錄檔案,r/w/x 的含義與一般檔案略有不同。
r (read contents in directory):擁有這個許可權,就能夠讀取目錄結構,也就是可以使用ls命令將目錄內容列出來。
w (modify contents of directory):擁有這個許可權,可以更改目錄結構。常見的操作為:
--- 建立新的檔案和目錄;
--- 刪除檔案和目錄;
--- 重新命名檔案和目錄;
--- 移動檔案和目錄;
x (access directory):決定這能否進入目錄。如果使用的賬戶對某個目錄沒有x許可權,那麼使用cd命令的時候,就無法進入目錄。
在《鳥哥的linux私房菜》書中,提供了很好的例子,如下:
五、 ls命令的使用詳解
ls就是list的縮寫,用於顯示檔案和目錄。這個命令時用的非常多的一條命令,類似於windows中的dir(現在不少linux版本中也提供了dir命令),其中dir是directory的縮寫。
常用的參數有
view plaincopy to clipboardprint?
命令格式:
ls [-aAdfFhilnrRSt] 目錄名稱
-a :全部的檔案,連同隱藏檔案( 開頭為 . 的檔案) 一起列出來;
-A :全部的檔案,連同隱藏檔案,但不包括 . 與 .. 這兩個目錄;
-d :僅列出目錄本身,而不是列出目錄內的檔案資料;
-f :直接列出結果,而不進行排序 (ls 預設會以檔案名稱排序!);
-F :根據檔案、目錄等資訊,給予附加資料結構,例如:
*:代表可執行檔; /:代表目錄;
-l :長資料串列出,包含檔案的屬性與許可權等等資料;
-n :列出 UID 與 GID 而非使用者與群組的名稱;
-R :連同子目錄內容一起列出來,等於該目錄下的所有檔案都會顯示出來;
-S :按照檔案容量大小排序,而不是用檔案名稱排序;
-t :按照時間排序,而不是用檔案名稱。
命令格式:
ls [-aAdfFhilnrRSt] 目錄名稱
-a :全部的檔案,連同隱藏檔案( 開頭為 . 的檔案) 一起列出來;
-A :全部的檔案,連同隱藏檔案,但不包括 . 與 .. 這兩個目錄;
-d :僅列出目錄本身,而不是列出目錄內的檔案資料;
-f :直接列出結果,而不進行排序 (ls 預設會以檔案名稱排序!);
-F :根據檔案、目錄等資訊,給予附加資料結構,例如:
*:代表可執行檔; /:代表目錄;
-l :長資料串列出,包含檔案的屬性與許可權等等資料;
-n :列出 UID 與 GID 而非使用者與群組的名稱;
-R :連同子目錄內容一起列出來,等於該目錄下的所有檔案都會顯示出來;
-S :按照檔案容量大小排序,而不是用檔案名稱排序;
-t :按照時間排序,而不是用檔案名稱。
鳥哥對於ls命令使用的例子為:
另外:在很多linux版本中,由於"ls -l"非常常用,所以常常可以簡寫為"ll"(兩個字幕L的小寫形式)。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/daheiantian/archive/2010/10/29/5974962.aspx