天天看點

LINUX檔案權限

系統環境: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)。

LINUX檔案權限

rainbow.html

檔案為例:

  1. 第一組為檔案擁有者的權限(u),檔案擁有者Rethink的權限為

    rw-

    ,即讀寫權限;
  2. 第二組為與檔案擁有者同組的使用者權限(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
           
  1. 第三組為其他非本使用者組的權限(o);

更改檔案權限

更改檔案屬組:

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

是"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

指令用來改變檔案的屬性,設定方法支援使用數字或者是符号。

  1. 使用數字類型改變檔案權限

    檔案的可讀、可寫和可執行權限可以用數字表示,即:

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
           
  1. 使用符号類型改變檔案權限

    下圖中,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...】

繼續閱讀