前言
chmod 770 test.txt
上面的命令的意思是將文檔 test.txt 的權限改爲 rwxrwx---
,而 770
代表是什麼含義呢。本篇文章就來詳細介紹 Linux 下檔案的權限。
用戶角色
在介紹檔案權限之前先來介紹 Linux 中有哪幾種用戶角色。
- owner — 檔案擁有者;
- group — 羣組;
- other — 其他人,除了檔案擁有者和同一羣組的其他人。
文檔屬性
登陸之後使用 ls -al
,得到結果如下圖 7 組屬性。
第一列:代表文檔的類型和權限(本篇文章主要內容);
第二列:代表有多少檔案連結到此節點(不做具體闡述);
第三列:代表文檔擁有者;
第四列:代表文檔所屬羣組;
第五列:代表文檔大小;
第六列:代表文檔日期或者最近修改日期
第七列:代表文檔名稱
第一列中的十個屬性,可以分爲四組,如下圖:
第一組,代表這個檔案的類型:
- d: 代表目錄;
- -: 代表文檔;
- l: 代表連結;
- b: 裝置文件裏面的可供儲存的接口謳備(可隨機存取裝置);
- c: 裝置文件裏面的串行端口謳備,例如鍵盤、鼠標(一次悵讀取裝置)。
第二,三,四組,分別表示檔案擁有者,通羣組和其他人對此文檔的權限:
- r — 讀權限
- w — 寫權限
- x — 可執行權限
所以,上圖中 .Trash 的文件類型是路徑;它的擁有者對它有讀寫和執行的權限;它的所屬羣組裏的用戶對它沒有讀寫和執行的權限;其他人對它沒有讀寫和執行的權限。
權限對目錄和文檔的意義
權限對目錄的意義
r — 表示對此目錄具有讀取目錄結構列表的權限,可以查詢該目錄下的文件名,可以使用
ls
命令列出該目錄的內容列表。w — 具有異勱該目彔結構列表的權限,也就是底下這些權限:
- 建立新的檔案和目錄
- 刪除已存在的檔案和目錄
- 重命名已存在的檔案和目錄
- 移動目錄內的檔案和目錄
x — 表示能否進入該目錄,如果沒有此權限將不能進入此目錄。
權限對文檔的意義
- r — 可以讀取該文檔的內容;
- w — 可以修改該文檔的內容,但不能刪除該文檔;
- x — 該檔案具有可以被系統執行的權限。
改變檔案屬性和權限
改變所屬羣組(chgrp)
使用命令chgrp
可以改變檔案擁有者。命令具體用法如下:
chrgp groupname dirname/filename
groupname:將要改爲的羣組名稱;
dirname/filename: 檔案路徑和名稱。
改變檔案擁有者(chown)
使用命令chown
可以改變檔案擁有者。命令具體用法如下:
chown username dirname/filename
username: 將要改爲的擁有者的用戶名;
dirname/filename: 檔案路徑和名稱。
修改檔案權限
使用命令chmod
修改檔案權限。修改檔案的權限有多種方式。命令格式如下:
chmod mod dirname/filename
mod:想要變更爲的權限;
dirname/filename: 檔案路徑和名稱。
數字類型方式
檔案的基本權限有九個,分別是 owner/group/other 的 read/write/execute 權限。可以用數字代表各個權限。各個權限對應的數字如下:
- r (read) — 4;
- w (write) — 2;
- x (execute) — 1。
每種角色(owner/group/other)都有自己的三個權限數,把這三個權限數累加就代表此角色的權限。例如;-rwxr-xr–,把它轉成數字表示爲:
owner = 4 + 2 + 1 = 7;
group = 4 + 0 + 1= 5;
other = 4 + 0 + 0 = 4;
所以,如果我們想讓上圖中 .Trash 的同羣組的用戶對其有讀的權限,即drwxr-----
,我們就可以使用如下命令:
chmod 740 .Trash
符號類型方式
我們使用u/g/o
分別代表,文檔擁有者/羣組/其他人,a 代表所有角色。使用r/w/x
分別代表,讀/寫/執行。使用+/-/=
分別代表,加入/減去/設定。同樣的如果我們想讓上圖中 .Trash 的同羣組的用戶對其有讀的權限,即drwxr-----
,我們就可以使用如下命令:
chmod u=rwx,g=r .Trash
但是,如果我們不知文檔原有的權限是什麼,只想給同羣組的添加讀權限,其他不變,我們就不方便使用=
了。可以使用+
,如下:
chmod g+r .Trash
如果只想去掉擁有者的寫權限,可以使用-
,如下:
chmod u-w .Trash
注意:chgrp,chown,chmod
都需要 root 身份才能執行