天天看點

linux 檔案和目錄權限的意義

基礎性的東西,記下來加深記憶

權限對檔案的重要性

檔案是實際含有資料的地方,包括一般文本檔案、資料庫内容檔案、二進制可執行檔案(binary program)等等。是以,權限對于檔案來說,他的意義是這樣的:

r (read):可讀取此一檔案的實際内容,如讀取文本檔案的文字内容等;

w (write):可以編輯、新增或者是修改該檔案的内容(但不含删除該檔案);

x (execute):該檔案具有可以被系統執行的權限。

那個可讀(r)代表讀取檔案内容是還好了解,那麼可執行(x)呢?這裡你就必須要小心啦!因為在Windows底下一個檔案是否具有執行的能力是藉由『 擴充名 』來判斷的,例如:.exe, .bat, .com 等等,但是在Linux底下,我們的檔案是否能被執行,則是藉由是否具有『x』這個權限來決定的!跟檔名是沒有絕對的關系的!

至于最後一個w這個權限呢?當你對一個檔案具有w權限時,你可以具有寫入/編輯/新增/修改檔案的内容的權限,但并不具備有删除該檔案本身的權限!對于檔案的rwx來說,主要都是針對『檔案的内容』而言,與檔案檔名的存在與否沒有關系喔!因為檔案記錄的是實際的資料嘛!

權限對目錄的重要性

檔案是存放實際資料的所在,那麼目錄主要是儲存啥玩意啊?目錄主要的内容在記錄檔案名清單,檔案名與目錄有強烈的關連啦!是以如果是針對目錄時,那個 r, w, x 對目錄是什麼意義呢?

r (read contents in directory):

表示具有讀取目錄結構清單的權限,是以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的檔案名資料。是以你就可以利用 ls 這個指令将該目錄的内容清單顯示出來!

w (modify contents of directory):

這個可寫入的權限對目錄來說,是很了不起的!因為他表示你具有異動該目錄結構清單的權限,也就是底下這些權限:

建立新的檔案與目錄;

删除已經存在的檔案與目錄(不論該檔案的權限為何!)

将已存在的檔案或目錄進行更名;

搬移該目錄内的檔案、目錄位置。

總之,目錄的w權限就與該目錄底下的檔案名異動有關就對了啦!

x (access directory):

咦!目錄的執行權限有啥用途啊?目錄隻是記錄檔案名而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途!所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登入Linux時,你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)啰!

大緻的目錄權限概念是這樣,底下我們來看幾個範例,讓你了解一下啥是目錄的權限啰!

例題:有個目錄的權限如下所示:

系統有個賬号名稱為vbird,這個賬号并沒有支援root群組,請問vbird對這個目錄有何權限?是否可切換到此目錄中?答:vbird對此目錄僅具有r的權限,是以vbird可以查詢此目錄下的檔案名清單。因為vbird不具有x的權限,是以vbird并不能切換到此目錄内!(相當重要的概念!)

上面這個例題中因為vbird具有r的權限,因為是r乍看之下好像就具有可以進入此目錄的權限,其實那是錯的。能不能進入某一個目錄,隻與該目錄的x權限有關啦!此外,工作目錄對于指令的執行是非常重要的,如果你在某目錄下不具有x的權限,那麼你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,即使你具有該目錄的r的權限。

很多朋友在架設網站的時候都會卡在一些權限的設定上,他們開放目錄資料給網際網路的任何人來浏覽,卻隻開放r的權限,如上面的範例所示那樣,那樣的結果就是導緻網站伺服器軟體無法到該目錄下讀取檔案(最多隻能看到檔名),最終使用者總是無法正确的查閱到檔案的内容(顯示權限不足啊!)。要注意:要開放目錄給任何人浏覽時,應該至少也要給予r及x的權限,但w權限不可随便給!為什麼w不能随便給,我們來看下一個例子:

例題:假設有個賬号名稱為dmtsai,他的家目錄在/home/dmtsai/,dmtsai對此目錄具有[rwx]的權限。若在此目錄下有個名為the_root.data的檔案,該檔案的權限如下:

請問dmtsai對此檔案的權限為何?可否删除此檔案?答:如上所示,由于dmtsai對此檔案來說是『others』的身份,是以這個檔案他無法讀、無法編輯也無法執行,也就是說,他無法變動這個檔案的内容就是了。

但是由于這個檔案在他的家目錄下,他在此目錄下具有rwx的完整權限,是以對于the_root.data這個『檔名』來說,他是能夠『删除』的!結論就是,dmtsai這個使用者能夠删除the_root.data這個檔案!

繼續閱讀