首頁 > 軟體

Linux ugo 許可權基本概念和操作

2020-06-16 16:46:58

Linux 系統中檔案的 ugo 許可權是 Linux 進行許可權管理的基本方式。本文將介紹 ugo 許可權的基本概念。

說明:本文的演示環境為 Ubuntu 16.04。

檔案的所有者和組

Linux 檔案的 ugo 許可權把對檔案的存取者劃分為三個類別:檔案的所有者、組和其他人。所謂的 ugo 就是指 user(也稱為 owner)、group 和 other 三個單詞的首字母組合。

檔案的所有者
檔案的所有者一般是建立該檔案的使用者,對該檔案具有完全的許可權。在一台允許多個使用者存取的 Linux 主機上,可以通過檔案的所有者來區分一個檔案屬於某個使用者。當然,一個使用者也無權檢視或更改其它使用者的檔案。

檔案所屬的組
假如有幾個使用者合作開發同一個專案,如果每個使用者只能檢視和修改自己建立的檔案就太不方便了,也就談不上什麼合作了。所以需要一個機制允許一個使用者檢視和修改其它使用者的檔案,此時就用到組的概念的。我們可以建立一個組,然後把需要合作的使用者都新增都這個組中。在設定檔案的存取許可權時,允許這個組中的使用者對該檔案進行讀取和修改。

其他人
如果我想把一個檔案共用給系統中的所有使用者該怎麼辦?通過組的方式顯然是不合適的,因為需要把系統中的所有使用者都新增到一個組中。並且系統中新增了新使用者該怎麼辦,每新增一個新使用者就把他新增到這個組中嗎?這個問題可以通過其他人的概念解決。在設定檔案的存取許可權時,允許其他人戶對該檔案進行讀取和修改。

檔案屬性中的許可權資訊

使用 ll 命令可以檢視檔案的屬性資訊:

  • 第一組指明檔案的型別和 ugo 許可權資訊。
  • 第二組是對檔案的參照計數。
  • 第三組是檔案的所有者。
  • 第四組是檔案所屬的組。

其它的資訊我們暫時忽略。

檔案型別
第一組的第一個字元描述檔案的型別,常見的型別有如下幾種:

  • d 表示目錄
  • - 表示普通檔案
  • l 表示連結檔案
  • b 表示塊裝置檔案
  • c 表示字元裝置檔案
  • s 表示 socket 檔案

檔案的 ugo 許可權資訊
第一組資訊一個 10 個字元,除去第一個表示檔案型別的字元,其它 9 個字元表示檔案的 ugo 許可權資訊:

這 9 個字元以三個為一組,都是 rwx 或 - 的組合。其中,r 代表可讀(read)、 w 代表可寫(write)、 x 代表可執行(execute)。 這三個許可權的位置不會改變,如果沒有對應的許可權,就會以 -(減號)代替。
以上圖所示,第一組為檔案所有者的許可權,第二組為檔案所屬組的許可權,第三組為其他人的許可權。其表示的具體含義為:檔案所有者具有對檔案的讀寫許可權,檔案所屬組的使用者具有對檔案讀寫的許可權,而其他人只有讀取檔案的許可權。

下面讓我們來詳細的解釋一下讀寫執行的許可權。

  • r (read):可以讀取檔案的實際內容,比如讀取文字檔案內的文字等。
  • w (write):可以編輯、增加、刪除檔案的內容(但不含刪除該檔案)。
  • x (execute):該檔案具有可以被系統執行的許可權。

可以看出,對於檔案來說,rwx 主要針對的是檔案的內容。

對目錄而言,目錄中儲存的主要是目錄下檔名稱的列表,這與普通檔案是有些不同的:
r (read contents in directory)
表示具有讀取目錄下檔名稱的許可權,也就是說你可以通過 ls 命令把目錄下的檔案列表查詢出來。
比如我們使用使用者 nick 建立一個目錄 testdir,並在該目錄下建立兩個檔案,此時 testdir 的許可權為:

其他人具有 r 許可權,所以可以通過 ls 命令檢視該目錄下的檔案,這裡我們通過 tester 使用者檢視:

然後我們修改該目錄的許可權:

現在其他人已經沒有這個目錄上的 r 許可權了,再讓使用者 tester 執行 ls 命令試試:

現在其他人已經沒有許可權檢視目錄下的檔名了。

w (modify contents of directory)
具有 w 許可權表明你可以在該目錄下執行如下的操作:

  • 建立新的檔案和目錄
  • 刪除已經存在的檔案與目錄(不論該檔案的許可權為何!)
  • 重新命名已存在的檔案或目錄
  • 移動該目錄內檔案、目錄的位置。

x (access directory)
目錄雖然不能被執行,但是卻具有可以執行的許可權。目錄的 x 許可權表示使用者是否可以進入該目標並成為當前的工作目錄。注意,如果使用者對目錄沒有 x 許可權,則無法檢視該目錄下的檔案的內容(注意與 r 許可權的區別)。比如我們移除 testdir 目錄上的 x 許可權:

此時雖然其他人具有讀 testfile1 檔案的許可權,但我們用 tester 使用者讀取其內容時:

提示沒有許可權,原因就是我們移除了 testdir 目錄的 x 許可權。所以,如果要允許目錄被其他人瀏覽時,至少要給予 r 和 x 的許可權

檔案的所有者
第三組資訊顯示檔案的所有者,圖片中顯示的檔案所有者為 nick。檔案的所有者一般是建立該檔案的使用者,對該檔案具有完全的許可權。

檔案所屬的組
第四組資訊顯示檔案所屬的組。當我們通過 adduser 命令建立使用者時一般會建立一個同名的組,該使用者就屬於與他同名的組(比如筆者機器上的使用者 nick 就屬於 nick 組)。當我們建立檔案和目錄時,其預設所屬的組就是所有者所在的組。

儲存使用者和組的檔案

使用者和組的資訊分別記錄在 /etc/passwd、/etc/group 檔案中。可以直接以讀取文字檔案的方式檢視其內容:

這兩個檔案的內容是任何人都有權檢視的,比如 /etc/passwd 檔案的內容如下所示:

該圖只顯示了部分使用者的資訊,其中的每一行代表一個使用者。/etc/group 檔案的結構與 /etc/passwd 檔案的結構類似。

基本操作

在新建檔案時會根據建立者的身份和其它的一些設定為檔案生成預設的許可權。比如我們全面看到的檔案 testfile:

接下來我們介紹如何通過下面的命令修改檔案許可權相關的資訊:

  • chown :改變檔案所有者
  • chgrp :改變檔案所屬的組
  • chmod :改變檔案的許可權

改變檔案所有者
通過 chown 命令可以改變檔案的所有者:

$ sudo chown tester testfile

改變檔案所屬的組
通過 chgrp 命令可以改變檔案所屬的組:

改變檔案的許可權
通過 chmod 命令可以改變檔案的許可權。對於檔案的 rwx 許可權,有兩種表示方法,數位表示法和字元表示法。
以數位表示許可權的方式如下:
r: 4
w: 2
x: 1
如果是 rwx 許可權就是 4 + 2 + 1 = 7 ,r-x 就是 4 + 1 = 5 ,--- 則為 0。所以 rw-rw-r-- 就可以用 664 來表示。如果我們想把檔案的許可權修改為 rwxrwxrwx,可以使用下面的命令:

$ chmod 777 testfile

以字元表示許可權的方式如下:
用字元 u, g, o 分別代表檔案所有者(user)、檔案所屬的組(group)和其他人(other),這就是 ugo 許可權叫法的由來。只不過還有一個 a 可以表示全部的身份(all)。具體更改許可權的語法如下:
chmod [u g o a] [+ - =] [rwx] 檔案/目錄
比如我們可以通過下面的命令把 testfile 的許可權設回 rw-rw-r--:

$ chmod ug=rw,o=r testfile

如果想去掉組的 w 許可權並給其他人新增 x 許可權可以執行下面的命令:

$ chmod g-w,o+x testfile

我們還可通過 a 為全部身份設定許可權,比如 rwx:

$ chmod a=rwx testfile

總結

ugo 許可權是學習和使用 Linux 系統的基礎,本文只介紹了其中最基本的概念和操作,希望可以幫助大家了解 Linux 的許可權及其簡單的操作。

 

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

 

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-09/153983.htm

 


IT145.com E-mail:sddin#qq.com