Linux 目錄許可權與檔案許可權

2021-09-25 06:10:22 字數 3648 閱讀 8156

現在我們知道了linux系統內檔案的三種身份(擁有者、群組與其他人),知道每種身份都有三種許可權(rwx),已知道能夠使用chown, chgrp, chmod去修改這些許可權與屬性,當然,利用ls -l去檢視檔案也沒問題。那麼,這些檔案許可權對於一般檔案與目錄檔案有何不同呢?

1)許可權對檔案的重要性

檔案是實際含有資料的地方,包括一般文字檔案、資料庫內容檔案、二進位制可執行檔案(binary program)等等。 因此,許可權對於檔案來說,他的意義是這樣的:

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

2)許可權對目錄的重要性

檔案是存放實際資料的地方,那麼目錄主要是儲存什麼呢?目錄主要的內容在於記錄檔名列表,所以檔名與目錄有強烈的關連! 那麼在針對目錄時,r, w, x 對目錄是什麼意義呢?

表示具有讀取目錄結構列表的許可權,所以當你具有讀取(r)乙個目錄的許可權時,表示你可以查詢該目錄下的檔名資料。所以你就可以利用ls這個指令將該目錄的內容列表顯示出來!

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

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

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

假設某個使用者對某一目錄具有r的許可權,乍看之下好像就具有可以進入此目錄的許可權,其實那是錯的。能不能進入某乙個目錄,只與該目錄的x許可權有關!此外, 工作目錄對於指令的執行是非常重要的,如果你在某目錄下不具有x的許可權, 那麼你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,即使你具有該目錄的r的許可權。

要注意:要開放目錄給任何人瀏覽時,應該至少也要給予r及x的許可權,但w許可權不可隨便給! 為什麼w不能隨便給,我們來看下乙個例子:

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

-rwx------ 1 root  root  4365 sep 19 23:20  the_root.data

請問knife對此檔案的許可權為何?可否刪除此檔案?

答: 如上所示,由於knife對此檔案來說是『others』的身份,因此這個檔案他無法讀、無法編輯也無法執行, 也就是說,他無法變動這個檔案的內容就是了。

但是由於這個檔案在他的家目錄下,他在此目錄下具有rwx的完整許可權,因此對於the_root.data這個『檔名』來說,他是能夠『刪除』的! 結論就是,knife這個使用者能夠刪除the_root.data這個檔案!

還是看不太懂?我們再來乙個例子吧:

用root的身份在所有人都可以工作的/tmp目錄中建立乙個名為testing的目錄, 該目錄的許可權為744且目錄擁有者為root。另外,在testing目錄下在建立乙個空的檔案, 檔名亦為testing。建立目錄可用mkdir(make directory),建立空檔案可用touch來處理。所以過程如下所示:

[root@www ~]#

cd /tmp <==切換工作目錄到/tmp

[root@www tmp]#

mkdir testing <==建立新目錄

[root@www tmp]#

chmod 744 testing <==變更許可權

[root@www tmp]#

touch testing/testing <==建立空的檔案

[root@www tmp]#

chmod 600 testing/testing <==變更許可權

[root@www tmp]#

ls -ald testing testing/testing

drwxr--r-- 2 root root 4096 sep 19 16:01testing

-rw------- 1 root root 0 sep 19 16:01 testing/testing

#仔細看一下,目錄的許可權是744,且所屬群組與使用者均是root!

#那麼在這樣的情況底下,一般身份使用者對這個目錄/檔案的許可權為何?

view code

在上面的例子中,雖然目錄是744的許可權設定,一般使用者應該能有r的許可權,但這樣的許可權使用者能做啥事呢?假設系統中含有乙個賬號名為knife,我們可以透過『 su - knife 』這個指令來變換身份。

[root@www tmp]#

su - knife <==切換身份!

[knife@www ~]$ cd /tmp <==看一下,身份變了喔!提示字元也變成 $了!

[knife @www tmp]$ ls -l testing/

?--------- ? ? ? ? ?testing

#因為具有 r 的許可權可以查詢檔案名。不過許可權不足(沒有x),所以會有一堆問號。

[knife @www tmp]$ cd testing/

-bash: cd: testing/: permission denied

#因為不具有 x ,所以當然沒有進入的許可權啦!有沒有呼應前面的許可權說明啊!

view code

上面的練習我們知道了只有r確實可以讓使用者讀取目錄的檔名列表,不過詳細的資訊卻還是讀不到的,同時也不能將該目錄變成工作目錄。那如果我們讓該目錄變成knife使用者的,那麼使用者在這個目錄底下是否能夠刪除檔案呢?底下的練習做看看:

[knife@www tmp]$ exit               <==變回原本的 root 身份喔!

[root@www tmp]#

chown knife testing <==修改許可權,讓knife擁有此目錄

[root@www tmp]#

su - knife <==再次變成knife來操作

[knife @www ~]$ cd /tmp/testing <==可以進入目錄了呢!

[knife @www testing]$ ls -l

-rw------- 1 root root 0 sep 19 16:01 testing <==檔案不是knife的!

[knife @www testing]$ rm testing <==嘗試刪除這個檔案看看!

rm: remove write-protected regular empty file `testing'?y

#竟然可以刪除!這樣理解了嗎?!

view code

透過上面這個簡單的步驟,你就可以清楚的知道,x在目錄當中是與『能否進入該目錄』有關,至於那個w則具有相當重要的許可權,因為他可以讓使用者刪除、更新、新建檔案或目錄,是個很重要的引數!

linux 使用者許可權 檔案許可權與目錄許可權

1 使用者及使用者組的概念 1.檔案所有者 2.使用者組 3.使用者 以root登入linux之後,執行ls al,會看到有關檔案屬性的資訊 rw r r 第1個字元代表這個檔案是 目錄,檔案或鏈結檔案等 d 代表目錄,代表檔案,l 則是連線檔案。接下來的字元3個一組分別代表檔案所有者許可權 同使用...

Linux 檔案與目錄許可權

1 改變檔案所屬使用者組 chgrp users install.log 將install.log使用者組改為users,但users必須存在於 etc group中才可以。2 改變檔案所有者 chown bin install.log 將install.log所有者改為bin,但bin必須存在於 ...

Linux檔案與目錄許可權

1.檔案與目錄許可權 drwxr xr x.2 xws xws 4096 dec 21 2016 desktop 分別表示 d 目錄檔案 rwx 所有者為讀寫執行許可權 r x 所屬組為讀執行許可權 r x其他為讀和執行許可權 2 鏈結數 xws 所有者 xws 所屬組 4096 目錄大小 單位為b...