深入理解Linux的許可權
引言
當我們使用ls -al 檢視檔案內容的時候,會出現: 可以看到,最後面藍色的字型是我們訪問目錄下的檔名字,那前面的那些毫無疑問就是該檔案的一些資訊。我們可以看懂一些,比如建立的時間,剩餘的部分是什麼? 最前面的一串字母:例drwxr-xr-x.表示的許可權,那表示的又是誰的許可權?所有人嗎?還是僅僅root使用者的?
首先,最前面的字元d表示檔案型別;
- 當為[ d ]則是目錄
- 當為[ - ]則是檔案
- 若是[ l ]則表示為連結檔(link file);
- 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
- 若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。
緊接著的九個字元表示的都是許可權
使用者和使用者組
Linux作業系統是多工(Multi-tasks)多使用者(Multi-users)分時作業系統,linux作業系統的使用者就是讓我們登入到linux的許可權
1. 所有者
- 由於Linux是多使用者、多工的作業系統,因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設定檔案的許可權,讓其成為個人的“私密檔案”,即個人所有者。
- 通俗的說,一般情況下,誰建立了檔案,誰就是該檔案的所有者
- ls ‐al命令可以看到檔案的所有者
2.所有組
- 在Linux中,每個賬戶支援多個使用者組
- 當某個使用者建立了一個檔案後,這個檔案的所在組就是該使用者所在的組
3.其他組
- 除開檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組
我們在上面的圖中可以看到,許可權所涉及的字元有三個:r w x
- r : 讀
- w :寫
- x : 執行
許可權對檔案的作用:
- r:可獲取檔案的資料
- w:可修改檔案的資料
- x:可將此檔案執行為程序
許可權對目錄的作用:
- r:可使用ls命令獲取其下的所有檔案列表
- w:可修改此目錄下的檔案列表;即建立或刪除檔案,包括子目錄
- x:可cd至此目錄中;且可使用ls -l來獲取所有檔案的詳細屬性資訊
前面rwx一共有三組,代表了分別代表了所屬使用者、所屬組、其他組三者對檔案的許可權
許可權組合 | 二進位制數 | 十進位制數 |
---|---|---|
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
例如:
rwxr-xr-x 755 所有者擁有讀寫執行的許可權,所屬組擁有讀、執行的許可權,其他組擁有讀、執行的許可權
rw------- 600 所有者擁有讀、寫的許可權
r--r---w- 442 所有者擁有讀的許可權,所屬組擁有讀的許可權,其他組擁有寫的許可權
如何修改檔案的許可權
Linux中有幾個常用於使用者組、所有者和其他組的許可權的修改的命令:
- chgrp 改變檔案所屬組
- chown 改變檔案所有者
- chmod 改變檔案的許可權
改變檔案所屬組 chgrp
- chgrp實際上就是change gruop的縮寫
- 要被改變的群組名必須要在/etc/gruop檔案中才行,否則會出錯。 這樣就把test檔案的所屬組改為了lhz
改變檔案所有者 chown
- chown 實際上就是 change owner 的縮寫
- 改變的使用者必須是系統上已經存在的使用者,也就是在/etc/passwd 這個檔案中有紀錄的使用者名稱稱才能改變。
這樣就把test.c的所有者改變為了lhz
改變檔案許可權 chmod
數字型別改變許可權
在Linux中,改變檔案的許可權要用chmod命令。 命令格式:chmod xyz 檔案或目錄 上邊將Makefile的許可權從775改為664。 符號型別改變許可權
- u 所有者
- g 所屬組
- o 其他
- a 全部
格式:
上述將test檔案的所屬組的可讀許可權刪除
上述將所有者,所屬組,其他組都加上了可讀許可權。
許可權的作用
許可權對檔案的作用
- r (read):可讀取此一檔案的實際內容,如讀取文字檔案的文字內容等;
- w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案);
- x (execute):該檔案具有可以被系統執行的許可權
那個可讀 r 代表讀取檔案內容是還好了解,那麼可執行(x)呢?這裡你就必須要小心啦! 因為在Windows底下一個檔案是否具有執行的能力是藉由『 副檔名 』來判斷的, 例如:.exe, .bat, .com 等等,但是在Linux底下,我們的檔案是否能被執行,則是藉由是否具有『x』這個許可權來決定的!跟檔名是沒有絕對的關係的!
至於最後一個w這個許可權呢?當你對一個檔案具有w許可權時,你可以具有寫入/編輯/新增/修改檔案的內容的許可權, 但並不具備有刪除該檔案本身的許可權!對於檔案的rwx來說, 主要都是針對『檔案的內容』而言,與檔案檔名的存在與否沒有關係喔!
許可權對目錄的作用
- r (read contents in directory):
表示具有讀取目錄結構列表的許可權,所以當你具有讀取®一個目錄的許可權時,表示你可以查詢該目錄下的檔名資料。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來!
- w (modify contents of directory):
這個可寫入的許可權對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構列表的許可權,也就是底下這些許可權:
- 建立新的檔案與目錄;
- 刪除已經存在的檔案與目錄(不論該檔案的許可權為何!)
- 將已存在的檔案或目錄進行更名;
- 搬移該目錄內的檔案、目錄位置。
總之,目錄的w許可權就與該目錄底下的檔名異動有關就對了啦!
- x (access directory):
咦!目錄的執行許可權有啥用途啊?目錄只是記錄檔名而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)囉!
簡單的說,就是你可以指定你自己的檔案可以讓誰檢視,誰可以修改,誰可以刪除,要不然,你的祕密豈不都被大家知道了