P表示命名管道:由mkfifo系統調用生成,由於fifo又叫作有名管道,因此用p來表示這個文件的類型,然而pipe系統調用雖然也是用來建立管道的,可是他建立的是無名管道,不會生成一個文件來標識該管道,而mkfifo所建立的管道則須要一個文件來表示,這也是爲何叫他有名管道的緣由,既然是用來作標識的,那麼他的大小爲零就理所固然了。c++
s 表示套接字 /dev/log(UNIX domain)dom
該條目的後9個字符表示該文件的執行權限。RWX分別表示可讀可寫可執行,若要改成不可讀就用-代替R,也能夠用一組3位的二進制數來表示這些,好比111表示RWX,或者用十進制的7來表示。頭三位是文件擁有用戶的權限,文件擁有用戶在後面的條目指出,中間三個表示那些和文件擁有用戶在同一個組的用戶的權限,後三個表示其餘用戶的權限。咱們這裏說的用戶是登錄系統時的用戶。當進程去操做文件時,系統就會檢測進程的有效用戶和有效組,若和文件的擁有用戶或擁有組相同,就具有相應的權限。進程
另外還有重要的一點是文件的SUID和SGID。ip
首先咱們知道一個進程裏包含了該進程的實際用戶,有效用戶,實際組,有效組四個信息。通常狀況下實際用戶等於有效用戶,實際組等於有效組。那麼什麼狀況下會不同呢?這就是咱們接下來要說的了內存
當一個可執行文件的SUID被設置時,某個某個進程去執行他時,這個進程的有效用戶就會變成這個文件的擁有用戶,這個時候就不同了。一樣的,若是文件的SGID被設置了,那麼進程在執行該文件時,有效組就會變成該文件的擁有者所在的用戶,這個時候實際組和有效組就有可能不同了。總之一個進程的實際用戶和實際組是不會變的。pip
那麼這樣作是爲了什麼呢?變量
好比每一個用戶都有修改密碼的需求,可是記錄密碼的文件是系統文件,只有root用戶才能修改,那普通用戶怎麼修改呢?當咱們修改密碼時會執行一個passwd的程序,而passwd的SUID就被設置了!!!而且passwd這個程序的擁有者是root用戶,因此在進程執行該程序時,進程的有效用戶變成了root,和實際用戶就不同了。當該進程去修改系統文件(記錄了密碼的文件)時,系統就會檢測該進程的有效用戶是否等於該文件的擁有者用戶,如果,則具有了讀寫功能。從而一個普通用戶完成了修改密碼的動做。權限
第二個條目是表示這個文件的引用計數,也能夠說是這個文件的硬連接數,由於每有一個硬連接,這個數目就會+1,硬連接由ln命令生成,其本質就是給同一個文件起了若干種數目的名字,而這個數目就是這第二個條目―引用計數,有點像c++中的引用,給一個變量取了另一個名字,然而實際上你操做的是同一個塊內存,也就是說他們的地址是同樣的。例如圖中的‘’點‘’文件,其實他表示的就是當前所在目錄的這個文件,而數字2就表示該文件硬連接數爲2,說白了就是他有兩個名字,一個改目錄名,一個「點」。引用
第三個條目表示該文件擁有者的用戶ID。
它是由建立該文件時,登錄系統的用戶決定的。 第四個條目表示該文件擁有者所在的組ID。
它是由建立該文件時,登錄系統的用戶所在的組決定的。 第五個條目表示該文件的大小。
後面的時間表示最後一次訪問的時間,若是touch某個文件能夠改變該時間爲當前時間。二進制