Linux的文件權限


學習這個章節,必須明白以下三個概念:

1.所有者

2.所屬組

3.其他人

明白這三個概念后,接下來就學習文件的屬性,那么文件的屬性有什么呢?如何查看文件的屬性?

在命令行下,執行 ls -l

可以得到以下的信息(僅已一條信息來分析)

-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
...

解釋:
    第一列代表文件的類型和權限
    
        第一個字符是"-":表示文件為普通文件。
        
        Linux下的文件類型有如下幾種:

            -:普通文件,包括文件文件和二進制文件
            d:目錄文件
            c:字符設備文件
            b:塊設備文件
            s:套接字文件(socket)
            l:鏈接文件
            p:管道文件(FIFO,pipe)
            或許還有其他文件類型,以后學習到再補充
            
        接下來的9個字符,3個為一組,分別表示所有者,所屬組和其他人的權限
    
        權限有三種 r(read)讀,w(write)寫,x(execute)執行
        
    第二列表示有多少文件名鏈接到此節點(i-node),即文件的硬鏈接數,以后詳細介紹
    
    第三列表示這個文件的所有者
    
    第四列表示這個文件的所屬組
    
    第五列表示這個文件的容量大小,單位是B
    
    第六列表示這個文件的創建日期或者最近修改如期
    
    第七列表示文件名
    
------------------------------------------------------------------------------------------
    
改變文件屬性和權限

需要用到的命令有

    chgrp:修改文件的所屬組

    chown:修改文件的所有者

    chmod:修改文件的權限

改變用戶所屬組chgrp命令的介紹

用以下的文件為例子

-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log        

由上述知道install.log文件所有者是root,所屬組是root,權限為rw-r--r--

若想要修改這個文件所屬組,可以這么做

假設在/etc/group下已經定義了一個組super

#chgrp     super install.log 修改所屬組

#ls -l

-rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log 文件的所屬組被改變為super

---------------------------------------------------------------------------------

改變文件的所有者chown命令

    假設在/etc/passwd已經存在用戶hello

    當要修改上述的install.log這個文件所有者,可以這么做

    #chown hello install.log 修改文件的所有者為hello

    #ls -l
    -rw-r--r--. 1 hello super 41312 Dec 10 02:48 install.log 文件的所有者被修改為hello

chown命令還能修改文件的所屬組

    比如要把文件的所有者和所屬組修改為原來的root,可以這么做

    #chown root:root install.log

    #ls -l
    -rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
    文件的所有者和所屬組都修改了

chown命令也可以只修改所屬組

#chown :super install.log

#ls -l

-rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log

大多情況下用冒號“:”分隔所有者和所屬組,也可以用小數點“.”分隔。

什么情況下需要修改文件的所有者或所屬組?

    比如,我們用cp命令復制一個文件到另一個用戶的家目錄,但是文件的屬性並沒有
修改,也就是說,另一個用戶就算得到了文件,也無法操作文件。這時候就需要修改文件的屬性

------------------------------------------------------------------------------------

修改文件的權限chmod命令

    還是用上述的文件為例子

-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log

分析:
    文件所有者對文件具有rw的權限,即讀和寫,不能夠執行

    文件所屬組的用戶對文件具有r的權限,即只有讀的權限

    其他人對文件具有r的權限,即只有讀的權限

修改文件的權限有兩種方法:

1.數字類型修改文件權限

r(4)
w(2)
x(1)

可以有這么多種表示方法
    ---     0
    --x     1
    -w-     2
    -wx     3
    r--       4
    r-x       5
    rw-       6
    rwx       7


命令使用示例
    若想把文件的權限修改為
    rwx r-x r-x
      7   5   5

    #chmod 755 install.log
    #ls -l

    可以得到如下的結果
    -rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log

這種方式不是很直觀,需要轉換,個人比較喜歡用字符類型修改文件權限

字符類型修改文件權限

命令使用如下

----------------------------------------------------------
    u    + (加入)    r
chmod    g    -(除去)    w    文件或目錄
    o    =(設置)    x
    a

----------------------------------------------------------

u(user):表示所有者

g(group):表示所屬組

o(others):表示其他人

a(all):表示上述三者

使用示例

-rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log

若要修改上述的文件權限為rw-r-xr-x,即所有者除去執行(x)權限,可以這么做

#chmod u-x install.log

若要修改上述的文件權限為rw-rwxr-x,即所屬組加上寫(w)權限,可以這么做

#chmod g+w install.log

若要修改上述的文件權限為rw-rwxrw-,即其他人有讀寫(rw)權限,可以這么做

#chmod o=rw install.log

若要修改上述的文件權限為rwxrwxrwx,可以這么做

#chmod a+x install.log

當然,也可以這么使用

#chmod u-x,g-x,o-r install.log

不知道我是否說清楚了。。


---------------------------------------------------------------------------------

目錄與文件的權限意義

權限對文件的重要性

    r(read):可讀取此文件的實際內容,比如可以用cat等命令查看文件內容
    
    w(write):可以編輯、新增或者是修改文件的內容,但是不能刪除該文件

    x(execute):該文件具有可以被系統執行的權限。

    順便說說擴展名。在LInux中是沒有擴展名的概念的,與windows不同。所以文件是否
    可以執行,是靠權限x來決定的,但是要清楚一點,可以執行,不代表可以成功執行,
    這要取決於文件的內容。

    總結:對於文件來說,rwx主要都是文件內容的的權限,而跟文件名是滅有絕對的關系


權限對目錄的重要性

r(read contents in directory)
    
    表示具有讀取目錄結構列表的權限,也就是說可以用ls查看目錄里有哪些文件

w(modify contents of directory)

    表示具有更改該目錄結構列表的權限,也就是說可以
    1.創建文件或者目錄
    2.刪除已經存在的文件或目錄(不論該文件的權限為何)
    3.對文件或目錄進行重命名
    4.轉移該目錄內的文件、目錄位置

總之,目錄的w權限就與該目錄下面的文件名變動有關

x(access directory)

    表示用戶能否進入該目錄成為工作目錄


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com