1. 程式人生 > >深入理解Linux的許可權

深入理解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)囉!

簡單的說,就是你可以指定你自己的檔案可以讓誰檢視,誰可以修改,誰可以刪除,要不然,你的祕密豈不都被大家知道了