Linux 文件權限如何工作?
已發表: 2022-01-29如果您已經使用 Linux 一段時間(甚至是 OS X),您可能會遇到“權限”錯誤。 但它們到底是什麼,為什麼它們是必要的或有用的? 讓我們來看看內部。
用戶權限
在過去,計算機是非常昂貴的大型機器。 為了充分利用它們,連接了多個計算機終端,使許多用戶可以同時開展業務。 數據處理和存儲在機器上完成,而終端本身只不過是查看和輸入數據的一種手段。 如果你仔細想想,這幾乎就是我們在“雲”上訪問數據的方式; 看看亞馬遜的雲 MP3 系統、Gmail 和 Dropbox,您會注意到雖然可以在本地進行更改,但所有內容都是遠程存儲的。
(圖片:Zenith Z-19 “啞”終端;圖片來源:ajmexico)
為此,個人用戶需要擁有帳戶。 他們需要有一部分存儲區域分配給他們,並且需要允許他們運行命令和程序。 每個人都獲得了特定的“用戶權限”,這決定了他們可以做什麼和不能做什麼,他們在系統上可以訪問和不可以訪問的位置,以及他們可以修改和不能修改哪些文件。 每個用戶也被分配到不同的組中,這些組授予或限制進一步的訪問權限。
文件訪問
在這個古怪的多用戶世界中,我們已經設置了用戶可以做什麼的界限。 但是他們訪問的內容呢? 好吧,每個文件都有一組權限和一個所有者。 所有者指定,通常在創建文件時綁定,聲明它屬於哪個用戶,並且只有該用戶可以更改其訪問權限。
在 Linux 世界中,權限分為三類:讀、寫和執行。 “讀”訪問允許一個人查看文件的內容,“寫”訪問允許一個人修改文件的內容,而“執行”允許一個人運行一組指令,如腳本或程序。 這些類別中的每一個都應用於不同的類別:用戶、組和世界。 “用戶”表示所有者,“組”表示與所有者在同一組中的任何用戶,“世界”表示任何人和每個人。
也可以使用這些權限限製文件夾。 例如,您可以允許組中的其他人查看您的主文件夾中的目錄和文件,但不允許組外的任何人查看。 您可能希望將“寫入”權限限制為只有您自己,除非您正在處理某種共享項目。 您還可以創建一個共享目錄,允許任何人查看和修改該文件夾中的文件。
在 Ubuntu 中更改權限
圖形用戶界面
要更改您在 Ubuntu 中擁有的文件的權限,只需右鍵單擊該文件並轉到“屬性”。
您可以更改所有者、組或其他人是否可以讀寫、只讀或不執行任何操作。 您還可以選中一個框以允許執行文件,這將為所有者、組和其他人同時啟用它。
命令行
您也可以通過命令行執行此操作。 轉到其中包含文件的目錄並鍵入以下命令以查看列表中的所有文件:
ls -al
在每個文件和目錄旁邊,您會看到一個特殊部分,其中概述了它所擁有的權限。 它看起來像這樣:
-rwxrw-r–
r代表“讀取”, w代表“寫入”, x代表“執行”。 目錄將以“d”而不是“-”開頭。 您還會注意到有 10 個空格具有價值。 第一組可以忽略,然後有3組3組。第一組是給主人的,第二組是給組的,最後一組是給世界的。
要更改文件或目錄的權限,讓我們看一下 chmod 命令的基本形式。

chmod [class][operator][permission] 文件
chmod [ugoa][+ or –] [rwx] 文件
起初這可能看起來很複雜,但相信我,這很容易。 首先,讓我們看一下類:
- u:這是給主人的。
- g:這是給小組的。
- o:這是給所有其他人的。
- 答:這將更改上述所有內容的權限。
接下來是運營商:
- +:加號將添加後面的權限。
- -:減號將刪除後面的權限。
還在我這兒? 最後一部分與我們檢查文件權限時相同:
- r:允許讀訪問。
- w:允許寫訪問。
- x:允許執行。
現在,讓我們把它放在一起。 假設我們有一個名為“todo.txt”的文件,它具有以下權限:
-rw-rw-r–
即所有者和組可以讀寫,而世界只能讀取。 我們想將權限更改為:
-rwxr——
即所有者擁有完全權限,群組可以讀取。 我們可以通過 3 個步驟來完成。 首先,我們將為用戶添加執行權限。
chmod u+x todo.txt
然後,我們將刪除該組的寫入權限。
chmod gw todo.txt
最後,我們將刪除所有其他用戶的讀取權限。
chmod 或 todo.txt
我們也可以將它們組合成一個命令,如下所示:
chmod u+x,gw,或 todo.txt
您可以看到每個部分都用逗號分隔,並且沒有空格。
以下是一些有用的權限:
- -rwxr-xr-x : Owner 擁有完全權限,group 和其他用戶可以讀取文件內容並執行。
- -rwxr–r– :所有者擁有完全權限,組和其他用戶只能讀取文件(如果您不介意其他人查看您的文件,則很有用。
- -rwx—— : Owner 有完全權限,其他人沒有(對個人腳本有用)。
- -rw-rw----:所有者和組可以讀寫(用於與組成員協作)。
- -rw-r–r– :所有者可以讀寫,組和其他用戶只能讀取文件(用於在共享網絡上存儲個人文件)。
- -rw——- :所有者可以讀寫,其他人沒有(用於存儲個人文件)。
您還可以使用 chmod 做一些其他的事情——比如 setuid 和 setgid——但是它們有點深入,而且大多數用戶實際上並不需要使用它們。
根或超級用戶和系統文件
如今,我們並不總是運行具有多個用戶的系統。 為什麼我們還要擔心權限?
好吧,Unix 及其衍生產品——Linux、OS X 等等——也區分了用戶運行的東西、管理員運行的或具有管理員權限的東西以及系統本身運行的東西。 因此,系統不可或缺的東西需要管理員權限才能更改或訪問。 這樣,您就不會意外地搞砸任何事情。
在 Ubuntu 中,要更改系統文件,您可以使用“sudo”或“gksudo”來獲得等效的管理員權限。 在其他發行版中,您切換到“root”或“超級用戶”,在您註銷之前有效地執行相同的操作。
請注意,在這兩種情況下,更改文件權限可能會導致程序無法運行,無意中將文件所有權更改為 root 用戶(而不是所有者),並降低系統安全性(通過授予更多權限)。 因此,建議您不要更改文件(尤其是系統文件)的權限,除非有必要或您知道自己在做什麼。
文件權限已到位,以在用戶之間提供基本的安全系統。 了解它們的工作原理可以幫助您在多用戶環境中設置基本共享,保護“公共”文件,並在系統文件所有權出現問題時為您提供線索。
認為你可以更容易地解釋事情嗎? 有更正嗎? 想追憶往昔? 休息一下,把你的想法寫在評論裡。