現在我們知道了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 ~]#view codecd /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!
#那麼在這樣的情況底下,一般身份使用者對這個目錄/檔案的許可權為何?
在上面的例子中,雖然目錄是744的許可權設定,一般使用者應該能有r的許可權,但這樣的許可權使用者能做啥事呢?假設系統中含有乙個賬號名為knife,我們可以透過『 su - knife 』這個指令來變換身份。
[root@www tmp]#view codesu - 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 ,所以當然沒有進入的許可權啦!有沒有呼應前面的許可權說明啊!
上面的練習我們知道了只有r確實可以讓使用者讀取目錄的檔名列表,不過詳細的資訊卻還是讀不到的,同時也不能將該目錄變成工作目錄。那如果我們讓該目錄變成knife使用者的,那麼使用者在這個目錄底下是否能夠刪除檔案呢?底下的練習做看看:
[knife@www tmp]$ exit <==變回原本的 root 身份喔!view code[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
#竟然可以刪除!這樣理解了嗎?!
透過上面這個簡單的步驟,你就可以清楚的知道,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...