search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Linux文件許可權總結

Linux文件許可權總結:Linux系統的一個核心思想是把所有的一切看成文件,而文件許可權和文件是緊密聯繫的。

如何查看文件許可權

我們可以通過ls –l 或者ll 兩個命令查看當前目錄下各個文件的許可權以及更多的內容,截圖如下(ps:目錄也是一種文件)

圖中各個條目是什麼意思

第一個條目是由十個字元組成的,第一個字元代表這個文件的類型,圖中的d表示目錄,-表示常規文件,還有c表示字元設備,b(block)表示塊設備,

l表示鏈接文件:該鏈接為軟連接,有ln –s 創建,硬鏈接則是和鏈接文件一模一樣的內容,只不過第二個條目會比原來+1,下文會講具體是什麼意思。

P表示命名管道:由mkfifo系統調用生成,因為fifo又叫做有名管道,所以用p來表示這個文件的類型,然而pipe系統調用雖然也是用來創建管道的,但是他創建的是無名管道,不會生成一個文件來標識該管道,而mkfifo所創建的管道則需要一個文件來表示,這也是為什麼叫他有名管道的原因,既然是用來做標識的,那麼他的大小為零就理所當然了。

s 表示套接字 /dev/log(UNIX domain)

該條目的后9個字元表示該文件的執行許可權。RWX分別表示可讀可寫可執行,若要改為不可讀就用-代替R,也可以用一組3位的二進位數來表示這些,比如111表示RWX,或者用十進位的7來表示。頭三位是文件擁有用戶的許可權,文件擁有用戶在後面的條目指出,中間三個表示那些和文件擁有用戶在同一個組的用戶的許可權,后三個表示其他用戶的許可權。我們這裡說的用戶是登陸系統時的用戶。當進程去操作文件時,系統就會檢測進程的有效用戶和有效組,若和文件的擁有用戶或擁有組相同,就具備相應的許可權。

另外還有重要的一點是文件的SUID和SGID。

首先我們知道一個進程里包含了該進程的實際用戶,有效用戶,實際組,有效組四個信息。一般情況下實際用戶等於有效用戶,實際組等於有效組。那麼什麼情況下會不一樣呢?這就是我們接下來要說的了

當一個可執行文件的SUID被設置時,某個某個進程去執行他時,這個進程的有效用戶就會變成這個文件的擁有用戶,這個時候就不一樣了。同樣的,如果文件的SGID被設置了,那麼進程在執行該文件時,有效組就會變成該文件的擁有者所在的用戶,這個時候實際組和有效組就有可能不一樣了。總之一個進程的實際用戶和實際組是不會變的。

那麼這樣做是為了什麼呢?

比如每個用戶都有修改密碼的需求,但是記錄密碼的文件是系統文件,只有root用戶才能修改,那普通用戶怎麼修改呢?當我們修改密碼時會執行一個passwd的程序,而passwd的SUID就被設置了!!!並且passwd這個程序的擁有者是root用戶,所以在進程執行該程序時,進程的有效用戶變成了root,和實際用戶就不一樣了。當該進程去修改系統文件(記錄了密碼的文件)時,系統就會檢測該進程的有效用戶是否等於該文件的擁有者用戶,若是,則具備了讀寫功能。從而一個普通用戶完成了修改密碼的動作。

第二個條目是表示這個文件的引用計數,也可以說是這個文件的硬鏈接數,因為每有一個硬鏈接,這個數目就會+1,硬鏈接由ln命令生成,其本質就是給同一個文件起了若干種數目的名字,而這個數目就是這第二個條目—引用計數,有點像c++中的引用,給一個變數取了另外一個名字,然而實際上你操作的是同一個塊內存,也就是說他們的地址是一樣的。例如圖中的『』點『』文件,其實他表示的就是當前所在目錄的這個文件,而數字2就表示該文件硬鏈接數為2,說白了就是他有兩個名字,一個改目錄名,一個「點」。

第三個條目表示該文件擁有者的用戶ID。
它是由創建該文件時,登陸系統的用戶決定的。

第四個條目表示該文件擁有者所在的組ID。
它是由創建該文件時,登陸系統的用戶所在的組決定的。

第五個條目表示該文件的大小。
後面的時間表示最後一次訪問的時間,如果touch某個文件可以改變該時間為當前時間。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦