1. 程式人生 > >Linux目錄與文件的權限

Linux目錄與文件的權限

linu 包含 其他 結構 寫入 gin 位置 write 目錄結構

零、Linux中的權限為什麽重要?

  權限直接關系數據安全!

一、用戶基礎概念:

  1. 所有者(owner):擁有這個文件的用戶。一般擁有目錄或文件的所有權限。
  2. 用戶組(group):幾個用戶組成一個用戶組,一般來說組內用戶同時具有某些權限。
  3. 其他人(others):相對於owner和group的其他人。一般比前兩者少某些權限。

二、目錄與文件的權限的意義:

  1. 文件是實際包含數據的,一般文本文件、數據庫文件、二進制可執行文件等,因此權限對於文件來說,意義如下:
    1. r(read):可讀取此文件的實際內容,例如讀取文本文件hello.txt裏的hello,world!
    2. w(write):可以編輯、新增或是修改文件的內容(註:不包含刪除該文件本身的權限
    3. x(eXecute):該文件具有被系統執行的權限(註:Linux下,文件能否被執行,不像windows下看文件擴展名,而是由文件是否具有x權限來決定的
  2. 目錄主要的內容是記錄文件名列表。權限對於目錄來說,意義如下:
    1. r(read contents in directory):表示具有讀取目錄結構列表的權限,當具有一個目錄的r權限時,就可以使用ls將其打印出來
    2. w(modify contents of directory):這個可寫入權限對於目錄來說很強大,它代表者你可以:
      1.   新建新的文件與目錄
      2.   刪除已經存在的文件與目錄(且不論該文件的權限如何)
      3.   將已存在的文件或目錄重命名
      4.   轉移該目錄內的文件、目錄位置。
      5.  總之、目錄的w權限與該目錄下的文件名變動有直接關系。
    3. x(access directory):目錄x代表用戶是否能進入該目錄成為工作目錄,例如我具有/data的x權限,那麽我可以cd /data,反之則不行。

例如:查看/data下的test.txt文件的詳細信息可以看到:

[[email protected] /]# ls -l /data/test.txt
-rw-r--r--. 1 oldboy users 296 Apr 29 11:15 /data/test.txt

  打印的結果中:

  1. 第一個字符 [-] :表示此文件為普通文件
      • 若是[d]則是目錄
      • 若是[-]則是文件
      • 若是[l]則是連接文件(linkfile)
      • 若是[b]則表示設備文件裏面可供儲存的接口設備
      • 若是[c]則表示設備文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取設備)

  2、後面的[rw-r--r--]字符:表示此文件的權限信息,三個一組。

  • 第一組[rw-]:表示所有者的權限為r、w,可讀可寫。
  • 第二組[r--]:表示同用戶組的權限為r,只能讀。
  • 第三組[r--]:表示其他非本用戶組的權限為r,只能讀。

三、Linux存放用戶身份和用戶組記錄的文件。

/etc/passwd                     #默認情況下,所有系統上的賬號與一般身份用戶以及root的信息都記錄在這個文件裏
/etc/shadow                     #記錄個人的密碼
/etc/group                      #記錄所有的用戶組名稱
#這三個文件是Linux裏賬號、密碼和用戶組信息的集中地。不可隨意刪除。

四、更改文件用戶組、所有者、權限的命令。(註:以下操作都在root下進行)

  1. 改變文件用戶組chgrp(change group)
    chgrp users  /root/install.log                            #要改變的組名必須在/etc/group下存在
                                      #將install.log文件用戶組改為users
  2. 改變文件所有者chown(change owner)
    chown xiaoming /data/test.txt                             #目標用戶必須在/etc/passwd下存在
                                      #將test.txt文件的所有者為xiaoming
  3. 改變文件權限chmon
    1. 方法一,Linux中每種權限對應著一個分數,對應表如下
      r(read)                    ==    4              
      w(write)                   ==    2                 
      x(executable)              ==    1

更改文件的權限就把需要的權限分數相加後放在對應的owner、group、others位置上。如下

chmod  640   /data/test.txt                                         #將/test.txt權限更改為-rw-r-----
                                     #6==4+2 對應rw-;4對應r--;0對應---。只有owner可讀寫,group可讀,others無任何權限)

     2.方法二,前面說過user(也就是owner)、group、others三種身份,在Linux中用u,g,o代表這三種身份的權限。如下: 

        u                 +(加入某個權限)                    r
        g                 -(去除某個權限)                   w
        o                 =(設置某個權限)                   x
        a(all)

      實踐:例如要設置一個文件的權限為-rwxr-xr-x,也就是user具有可讀、可寫和可執行權限,group與others(g/o)具有可讀與可執行的權限。代碼如下:

[[email protected] /]# chmod u=rwx,go=rx /data/test.txt
[[email protected] /]# ls -l /data/test.txt                        #查看權限
-rwxr-xr-x. 1 oldboy users 296 Apr 29 11:15 /data/test.txt            

參考:1、鳥哥的Linux私房菜

   2、https://linux.cn/

Linux目錄與文件的權限