簡介
在 linux 的學習過程中,文件權(quán)限是一個很重要的概念,畢竟 Linux 中的各種操作都離不開權(quán)限的支持。
這篇博客算是對 Linux 文件權(quán)限學習的一個簡單總結(jié)。
用戶與用戶組
Linux 的文件權(quán)限是和 用戶與用戶組 密切相關(guān)的一個概念,對于一個文件來說,用戶可以分為三類:
-
文件的 擁有者 – user
-
文件的擁有者所在 用戶組 的其他成員 – group
-
除 擁有者 和 用戶組 成員以外的其他用戶 – others
文件權(quán)限是相對于這三類用戶而言的,不同身份的用戶可以具有不同的權(quán)限。
文件屬性
使用命令 ls -l 可以得到文件的詳細信息,比如:
drwxr-xr-x 5 root root 4096 Sep 7 19:52 dotemacs drwxr-xr-x 6 root root 4096 Sep 3 22:34 dotfiles drwxr-xr-x 9 root root 4096 Sep 11 10:19 emacs-kit
我們可以把每一條信息分為 8 個部分,比如上面第一條信息可以分為:
文件類型 | 權(quán)限信息 | 連結(jié)數(shù) | 擁有者 | 用戶組 | 文件容量 | 修改日期 | 文件名 |
---|---|---|---|---|---|---|---|
d | rwxr-xr-x | 5 | root | root | 4096 | Sep ?7 19:52 | dotemacs |
這里主要了解 文件類型 和 權(quán)限信息, 對其他部分有興趣的可以自行 Google.
文件類型
Linux 中文件可以分為 5 個類型, ls -l 輸出的每條信息中的 第一個字符 就用于表示文件類型。
各個文件類型及其字符表示為:
表示字符 | 文件類型 |
---|---|
d | 目錄 |
– | 文件 |
l | 符號鏈接等 |
b | 可供儲存的接口設備 |
c | 串行端口設備,如鍵盤、鼠標等 |
權(quán)限信息
通過 用戶與用戶組 概念可以了解到權(quán)限是相對于三類用戶而言的,因此 ls -l 顯示的權(quán)限信息也分為三組。
每個文件的 權(quán)限信息 由 9 個字符組成,分為三組,分別對應 擁有者, 用戶組, 其他人 擁有的權(quán)限。
對于權(quán)限信息 rwxr-xr-x 來說, 擁有者 的權(quán)限為 rwx, 用戶組 和 其他人 的權(quán)限為 r-x.
每組權(quán)限分為: 讀權(quán)限, 寫權(quán)限 和 執(zhí)行權(quán)限, 分別由字符 r, w, x 表示。如果不具有相應的權(quán)限,就使用字符 – 表示。
因此,權(quán)限信息 rwxr-xr-x 可以理解為: 擁有者 具有 讀, 寫 和 執(zhí)行 權(quán)限,而 用戶組 和 其他人 就只有 讀 和 執(zhí)行 的權(quán)限。
修改文件擁有者和所屬用戶組
命令 chown 和 chgrp 可以用于修改文件擁有者和所屬用戶組,使用方式也很簡單:
# 修改文件擁有者 $ chown [-R] 賬號名稱 文件或目錄 $ chown [-R] 賬號名稱:組名 文件或目錄 # 修改文件所屬用戶組 $ chgrp [-R] 用戶組名稱 文件或目錄
參數(shù) -R 進行遞歸的持續(xù)變更,即連同次目錄下的所有文件都變更。
修改文件權(quán)限
命令 chmod 用于修改文件的權(quán)限,并提供了兩種修改文件權(quán)限的方式。
數(shù)字類型改變文件權(quán)限
我們可以用數(shù)字來代表各個權(quán)限,各個權(quán)限對應的數(shù)字為:
r:4 w:2 x:1
每種身份各自的三個權(quán)限分數(shù)是需要累加的,例如當權(quán)限為 rwxrwx— 時,對應的分數(shù)為:
user = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others = --- = 0+0+0 = 0
得到的文件權(quán)限數(shù)字也就為 770, 修改權(quán)限時就可以使用這個數(shù)字完成:
$ chmod [-R] 770 文件或目錄
很明顯,這樣修改文件權(quán)限是很麻煩的,因此 chmod 提供了另一種更好用的方式來修改文件權(quán)限。
符號類型改變文件權(quán)限
符號類型改變文件權(quán)限需要遵循一定的語法規(guī)則,分別需要了解的有 身份表示符, 操作表示符 和 權(quán)限表示符.
身份表示符:
表示符 | 代表的身份 |
---|---|
u | 文件的擁有者 |
g | 文件的擁有者所在用戶組 |
o | 其他人 |
a | 所有用戶 |
操作表示符:
表示符 | 代表的操作 |
---|---|
+ | 添加權(quán)限 |
– | 去除權(quán)限 |
= | 設定權(quán)限 |
權(quán)限表示符 就是 r, w 和 x.
從表示符的組成大概也可以猜到怎樣修改文件權(quán)限了,比如說下面的這條指令讓擁有者具有所有權(quán)限,而為用戶組和其他人添加執(zhí)行權(quán)限:
chmod u=rwx,go+x .vimrc
需要注意的是: u=rwx,go+x 之間沒有空格。
權(quán)限的作用
同一個權(quán)限對于 文件 和 目錄 來說,含義是不一樣的,這里來了解一下。
權(quán)限 | 文件 | 目錄 |
---|---|---|
r | 可以讀取文件內(nèi)容 | 可以讀取目錄結(jié)構(gòu)列表 |
w | 可以編輯修改文件內(nèi)容 | 可以改動目錄結(jié)構(gòu)列表 |
x | 可以被系統(tǒng)執(zhí)行 | 用戶可以進入目錄 (cd) |
這里需要注意的一個權(quán)限是: 可以改動目錄結(jié)構(gòu)列表, 這意味著可以:
-
建立新的文件與目錄
-
刪除已經(jīng)存在的文件與目錄
-
將已存在的文件或目錄進行更名
-
搬移該目錄內(nèi)的文件、目錄位置
所以 w 這個權(quán)限還是慎重使用好了。
更多Linux文章,請訪問Linux教程欄目進行學習!