系統環境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux
檔案屬性
Linux檔案的基本屬性共有9個,分别對應u|g|o組别的r|w|x屬性,如下例所示:
# ll rainbow.html
-rw-r--r-- 1 Rethink Rethink 207988 Aug 11 13:35 rainbow.html
[檔案屬性] [連接配接數] [屬主] [屬組] [檔案大小] [修改日期] [檔案名]
檔案屬性的第一位表示此檔案的類型,常見的類型如下:
[d] 表示為目錄
[-] 表示為檔案
[l] 表示為link file 連結檔案
[b] 表示為裝置檔案中可供存儲的接口裝置
[c] 表示為裝置檔案中的串行接口裝置,如滑鼠、鍵盤等
接下來的屬性中,将三個劃分一組,共三組,每組均為[rwx-]參數的組合,其中[r]表示可讀(read),[w]表示可寫(write),[x]表示可執行(excute)。

以
rainbow.html
檔案為例:
- 第一組為檔案擁有者的權限(u),檔案擁有者Rethink的權限為
,即讀寫權限;rw-
- 第二組為與檔案擁有者同組的使用者權限(g),同組使用者隻有讀權限,檢視某個使用者的屬組可以使用以下方法:
# id dockerroot
uid=997(dockerroot) gid=994(dockerroot) groups=994(dockerroot)
# cat /etc/passwd | grep dockerroot
dockerroot:x:997:994:Docker User:/var/lib/docker:/sbin/nologin
- 第三組為其他非本使用者組的權限(o);
更改檔案權限
更改檔案屬組: chgrp
chgrp
改變檔案所屬使用者組很簡單,直接使用
chgrp
指令即可,
chgrp
是"change group"的縮寫,要注意,修改後的使用者組名稱必須在
/etc/group
檔案中存在,不然就會顯示錯誤。
# ll rainbow.html
-rw-rw-r-- 1 Rethink Rethink 21 Oct 1 11:47 rainbow.html
# chgrp test1 rainbow.html
'檔案屬組已被改變'
# ll rainbow.html
-rw-rw-r-- 1 Rethink test1 21 Oct 1 11:47 rainbow.html
注意:如果是遞歸更改目錄的屬組,則需要加上
-R
參數,即将子目錄下所有的檔案和目錄的屬組都更新為此使用者組。
chgrp -R rain/
更改檔案屬主: chown
chown
和上一個指令相對應,
chown
是"change owner"的縮寫。要注意,修改後的使用者必須是已在
/etc/passwd
中存在,不然就會顯示錯誤。接上一個例子:
# chown test1 rainbow.html
'檔案屬主已由Rethink變為test1'
# ll rainbow.html
-rw-rw-r-- 1 test1 test1 21 Oct 1 11:47 rainbow.html
注意:如果是遞歸更改目錄的屬主,則需要加上
-R
參數,即将子目錄下所有的檔案和目錄的屬主都更新為此使用者。
一般來說,
chgrp
指令用來修改屬組,
chown
指令用來修改屬主。但其實用
chown
一個指令就夠了,它的完整指令格式為:
chown/chgrp 參數 屬主:屬組 檔案或目錄名
用冒号連接配接新的屬組和屬主,二者之一可以為空,但是冒号不能省略,比如:
# ll rainbow.html
-rw-rw-r-- 1 test1 test1 21 Oct 1 11:47 rainbow.html
'同時修改屬組和屬主'
# chown test12:test12 rainbow.html
# ll rainbow.html
-rw-rw-r-- 1 test12 test12 21 Oct 1 11:47 rainbow.html
'隻修改屬組,注意冒号不能省略'
# chown :dockerroot rainbow.html
# ll rainbow.html
-rw-rw-r-- 1 test12 dockerroot 21 Oct 1 11:47 rainbow.html
補充:
chown
指令支援的參數有:
-c或--changes 效果類似"-v"參數,但僅回報更改的部分。
-f或--quite或--silent 不顯示錯誤資訊。
-h或--no-dereference 之對符号連接配接的檔案作修改,而不更動其他任何相關檔案。
-R或--recursive 遞歸處理,将指定目錄下的所有檔案及子目錄一并處理。
-v或--version 顯示指令執行過程。
--dereference 效果和"-h"參數相同。
--help 線上幫助。
--reference=<參考檔案或目錄> 把指定檔案或目錄的擁有者與所屬群組全部設成和參考檔案或目 錄的擁有者與所屬群組相同。
--version 顯示版本資訊。
更改檔案屬性: chmod
chmod
使用
chmod
指令用來改變檔案的屬性,設定方法支援使用數字或者是符号。
-
使用數字類型改變檔案權限
檔案的可讀、可寫和可執行權限可以用數字表示,即:
r:4
w:2
x:1
将同屬組的3個檔案屬性代表的數字相加,如當檔案屬性為[-rwxrw-r--],則可以表示為:
u(owner)=r+w+x=4+2+1=7
g(group)=r+w=4+2=6
o(other)=r=4
當設定的屬性更改時,該檔案屬性對應的數字就是764,指令格式為:
chmod [-R] 764 filename
-
使用符号類型改變檔案權限
下圖中,a 表示all ,即u|g|o三者的并集,我們可以通過運算符号來修改檔案屬性。
例如,我們要把LINUX檔案權限
檔案的權限屬性設定為rainbow.html
,應該這樣做:-rwxr-xr-x
chmod u=rwx,go=rx rainbow.html
如果想增加rainbow.html檔案的寫入權限,去除原有的執行權限,應該這樣做:
chmod a+w,a-x rainbow.html
【To be continue...】