真實經歷:一個Linux小白被權限繞暈,大牛告訴他777,結果太意外

引言

如果你遇到了修復web服務器的文件權限問題,在網上搜索後,有大牛告訴你需要遞歸地chmod 777 你的web目錄!

在這樣做之前,你很有必要了解chmod -R 777 到底做了什麼,以及為什麼你永遠不應該將權限設置為777。

本文解釋基本的Linux權限模型以及與權限對應的數字的含義。


真實經歷:一個Linux小白被權限繞暈,大牛告訴他777,結果太意外


文件權限

在Linux中,對文件的訪問由操作系統使用文件權限、屬性和所有權進行控制。

通過了解Linux文件系統權限模型,你可以將對文件和目錄的訪問限制為僅由授權用戶和進程訪問,從而使系統更加安全。

每個文件由特定用戶和組擁有,併為三種不同類別的用戶分配權限訪問權限:

  • 文件所有者。
  • 群組成員。
  • 其他人(其他所有人)。

有三種文件權限類型適用於每個用戶類,並允許指定允許哪些用戶讀取文件、寫入文件或執行文件。

相同的權限屬性適用於含義不同的文件和目錄:

讀權限

  • 該文件是可讀的。例如,設置讀取權限後,用戶可以在文本編輯器中打開文件。
  • 可以查看目錄的內容。用戶可以使用ls命令列出目錄中的文件。

寫權限

  • 可以更改或修改該文件。
  • 可以更改目錄的內容。用戶可以創建新文件、刪除現有文件、移動文件、重命名文件等。

執行權限

  • 可以執行該文件。
  • 可以使用cd命令進入該目錄


可以使用 ls 命令查看文件權限。下面是一個例子:

<code>ls -l example.txt/<code>

輸出內容如下:

<code>-rw-r--r-- 12 coder coder 2.0K Apr  1 17:51 example.txt/<code>

詳細權限參數含義:

真實經歷:一個Linux小白被權限繞暈,大牛告訴他777,結果太意外

第一個字符顯示文件類型。它可以是常規文件(-)、目錄(D)、符號鏈接(L)或任何其他特殊類型的文件。

接下來的9個字符表示文件權限,三個三元組,每個三個字符。第一個三元組顯示所有者權限,第二個三元組顯示組權限,最後一個三元組顯示所有其他權限。


真實經歷:一個Linux小白被權限繞暈,大牛告訴他777,結果太意外


權限數字

文件權限可以用數字或符號格式表示。在本文中,我們將重點介紹數字格式。

權限可以由三位或四位數字組成,範圍從0到7。當使用3位數字時,第一位代表文件所有者的權限,第二位代表文件組的權限,最後一位代表所有其他用戶的權限。

寫入、讀取和執行權限具有以下數字值:

  • r (讀) = 4
  • w (寫) = 2
  • x (可執行) = 1
  • 無權限 = 0

特定用戶類的權限數字是該類的權限值之和。

權限的每個數字可以是4、2、1 和 0 的和:

  • 0(0+0+0)-沒有權限。
  • 1(0+0+1)-僅執行權限。
  • 2(0+2+0)-僅寫入權限。
  • 3(0+2+1)-寫入和執行權限。
  • 4(4+0+0)-只讀權限。
  • 5(4+0+1)-讀取和執行權限。
  • 6(4+2+0)-讀寫權限。
  • 7(4+2+1)-讀取、寫入和執行權限。

例如,如果權限設置為750,則表示文件所有者有讀、寫、執行權限,文件組有讀、執行權限,其他用戶沒有權限:

  • 屬主:rwx=4+2+1=7。
  • 屬組:r-x=4+0+1=5。
  • 其他:---=0+0+0=0

當權限使用4位數字時,第一個數字的含義如下:

  • setuid = 4
  • setgid = 2
  • sticky = 1
  • no changes = 0

接下來的三位數的含義與使用三位數時相同。

如果第一位數字為0,則可以省略,模式可以用3位數字表示,例如0755與755相同。

要以數字(八進制)表示法查看文件的權限,請使用stat命令:

<code>stat -c "%a" filename/<code> 

輸出數字如:644。


永遠不要 chmod 777

對文件或目錄設置777權限意味著它將對所有用戶都是可讀、可寫和可執行的,並且可能會帶來巨大的安全風險。

例如,如果你以遞歸方式將 /var/www 目錄下所有文件和子目錄的權限更改為777,則系統上的任何用戶都可以創建、刪除或修改該目錄中的文件。

如果你的Web服務器遇到權限問題,請將文件的所有權更改為運行應用程序的用戶,並將文件的權限設置為644,將目錄的權限設置為755,而不是遞歸地將權限設置為777


可以使用chown命令更改文件所有權,使用chmod命令更改權限。

假設您的服務器上有一個PHP應用程序以用戶“www”身份運行。

要設置要運行的正確權限,請執行以下操作:

<code>chown -R www: /var/www
find /var/www -type d -exec chmod 755 {} \\;
find /var/www -type f -exec chmod 644 {} \\;/<code>

只有root用戶、文件所有者或具有sudo權限的用戶才能更改文件的權限。

使用chmod時要格外小心,特別是在遞歸更改權限的時候。


寫在最後

如果你管理的是Linux系統,瞭解Linux權限是如何工作的非常重要。

永遠不要設置777(rwx rwx rwx)權限、文件和目錄權限。

777意味著任何人都可以對這些文件做任何事情。


分享到:


相關文章: