長期在 Windows 上工作的用戶可能對許可權沒有什麼概念,但我想你或多或少遇到過這樣的情況,當執行某個程序的時候需要以管理員身份運行,移動、刪除、複製某些文件或者目錄的時候也提示無法移動,無法複製,無法刪除,請使用管理員身份操作等。其實這就是許可權,Windows 系統默認登錄的是一個普通用戶,它還有一個默認的管理員用戶叫做 administrator。相信 Windows 的用戶也聽說過。那麼 Linux 系統下的許可權是怎麼樣的呢?今天我們就來一起了解一下 Linux 系統下的許可權相關的內容。

1. 用戶和用戶組

要說清楚 Linux 系統中的許可權問題,需要先介紹一下 Linux 下的用戶和用戶組,我們前面的文章中已經提到過,Linux 系統一般默認有一個超級用戶(root),還有一個我們登錄系統的普通用戶,如果你忘記了可以去看看 Linux 命令行介紹 這篇文章的介紹。為了使每篇文章都足夠簡單,能夠讓新入門的人看懂,所以對於用戶的添加、刪除、修改等具體操作,我將重新寫文章介紹。

除了用戶外,Linux 系統還有一個用戶組的概念,一個用戶組中可以包含多個用戶,這是為了方便操作系統對用戶的集中管理。用戶組是用來管理用戶的,同樣,操作系統也是需要管理用戶組的,操作系統管理用戶組也涉及用戶組的添加、刪除和修改。用戶組的增加、刪除和修改實際上就是對/etc/group文件的更新。我也會單獨寫文章介紹用戶組的管理操作。

2. 文件許可權

首先我先介紹幾個和文件相關的概念,Linux 下一切皆文件,Linux 的 VFS(Virtual File System)虛擬文件系統就是用來抽象各種設備為文件的。

  • **屬主:**每個文件都有一個屬主,這個屬主是一個用戶,一般哪個用戶創建了文件,那它的屬主就是誰,但是是可以修改的。
  • **屬組:**屬組是跟這屬主的,一般哪個屬主創建了文件,那麼用戶的屬組也是它創建的文件的屬組,也是可以修改。
  • **其他組:**除了屬主和屬組外的其他系統用戶和用戶組都是其他組。

接下來,我們來看看文件的許可權。我們打開終端,輸入ls -l,如下圖:

我們拿 -rw-r--r-- 1 elliot elliot 8980 3月 5 18:08 examples.desktop 這一行來解釋,其他行都是文件,只有這一個是文件,所以我們先拿它來解釋。

文件的許可權又四部分組成:

  • 第一部分:第 1 位,有三種取值:普通文件(-)、目錄(d),鏈接(l),這個例子是 - 代表是一個普通文件。
  • 第二部分:第 2-4 位,表示屬主的許可權:可讀(r)、可寫(w)、可執行(x),如果對應的位沒有許可權用 - 表示。
  • 第三部分:第 5-7 位,表示屬組的許可權,表示方法同屬主。
  • 第四部分:第 8-10 位,表示其他組的許可權,表示方法同屬主。

好了,我們來具體描述一下上面的例子:

  • 第一列:-rw-r--r--,代表這是一個普通文件,屬主許可權是可讀可寫不可執行(rw-),數組許可權是可讀不可寫不可執行(r--),其他組許可權是可讀不可寫不可執行(r--)。
  • 第二列:1,代表該文件硬鏈接數為 1 。註:若是文件則代表該文件的硬鏈接數。若是目錄,則代表該目錄下的子目錄數。
  • 第三列:當前文件所屬的用戶名,若該用戶被刪除,則會顯示該用戶刪除前的用戶id。
  • 第四列:當前文件所屬的用戶組。
  • 第五列:若是文件則代表該文件的大小,若是目錄則代表該目錄的大小(不包括目錄下的子目錄和文件的大小)。
  • 第六列:該文件最近修改或者查看的時間。
  • 第七列:文件名稱。

最後再來看看如何修改文件的許可權吧。先補充一下,在修改許可權時會用到 u、g、o,它們分別代表屬主、數組、其他組。下面看幾個例子來學習修改文件許可權吧。

  • 使用 + 和 - 來增加和減少許可權,如下圖,安裝圖中的操作試一試吧,我只演示了 u+x 和 o-r,你可以試試其他組合,比如:u+x、o+rw、u+w 等等.
  • 使用數字來描述許可權,我們可以分別使用一個八進位數字表示屬主、屬組、其他組的許可權。比如:八進位 5 轉換成四位二進位是 0101,我們去後三位分別表示 rwx 許可權,1 代表有許可權,0 代表沒有許可權,所以八進位 5 代表的許可權是 r-x。那麼 755 代表的 許可權就是 rwxr-xr-x,我們將上圖的 1.txt 的許可權用數字的方式改一下看看,如下圖:

現在只需要安裝上面的兩個方法多加聯繫,就可以掌握修改文件的許可權了,修改目錄的許可權和修改文件一樣,只需要將文件名換成目錄名就可以了,要注意的是,如果想把整個目錄包括子目錄下的所有文件目錄都改成某個許可權,可以在 chmod 後加上參數 -R。

3. 修改文件屬主、數組

先來看圖吧,我們根據圖中的操作來解釋。

首先,我使用 ````ls -l 1.txt``` 查看了 1.txt 的信息。

  • chown root 1.txt 修改屬主為 root 的時候提示拒絕,這裡就需要用超級用戶執行了,所以我接著使用 sudo chown root 1.txt 就成功修改了文件的屬主。
  • sudo chgrp root 1.txt 修改屬組為 root。
  • sudo chown elliot:elliot 1.txt 同時修改屬主和屬組為 elliot,這裡注意:屬主和屬組之間用冒號分隔。

其實就是兩個命令,一個是修改屬主的,chown,它同時可以修改屬組;另一個命令是修改屬組的,chgrp。修改目錄的屬主和屬組和修改文件一樣,如果要修改目錄下說有文件和目錄的屬主和屬組,在命令後面加上 -R 參數就可以了。

對於初學者,知道這些差不多了,如果感興趣可以深入的研究哦,有什麼問題歡迎和我一起討論。

歡迎關注微信公眾號:Linux 漫遊之旅。有福利哦,可提供 CSDN 免費下載服務。

推薦閱讀:

相關文章