1. 程式人生 > >Linux的權限管理:實現資源的分派

Linux的權限管理:實現資源的分派

測試 擁有 -s 規則 默認 ask 子目錄 訪問者 幫助

Linux的權限管理:實現資源的分派

訪問者分類

  • owner:所有者
  • group:所屬組
  • other:其他人

    每個文件都對訪問者定義了一種權限

  • 權限分類

    對於文件來說

    • r:讀權限
    • w:寫權限
    • x:執行權限
      對於目錄來說
    • r:可以查看目錄中的文件列表
    • w:可以在目錄中創建文件
    • x:可以進入該目錄
      權限對應的數字表示方式
    • r:4
    • w:2
    • x:1

修改權限

  • chmod命令:

    修改權限的三種方式:

    1. 數字格式
      chmod 640 文件或目錄 :對應的權限 rw-r-----
    2. 直接指明權限
      chmod (u,g,o)=(r,w,x)

      修改文件的屬主或屬組

  • chown命令:
    1. 修改文件的屬主:chown username 文件或目錄
    2. 修改文件的屬組:chown username:groupname 文件或目錄

      -R選項:對目錄使用-R選項的時候,目錄中的所有文件也會被修改屬組或屬主

  • chgrp命令:

    修改文件或目錄的屬組:chgrp [-R] groupname 文件或目錄

    文件或目錄創建時的默認權限

  • umask:用戶創建文件或目錄時的反掩碼
    • root用戶:umask 為022
    • 普通用戶:umask 為002

      文件:權限=666-umask
      目錄:權限=777-umask

      特殊權限

  • SUID:執行者臨時擁有屬主權限,進程發起後,屬主不在是進程的發起者,而是文件的所有者(作用在二進制可執行文件才有效)

    設置:chmod u[+|-]s 文件

  • SGID:
    • 對於文件而言:讓執行者臨時擁有文件所屬組的權限
    • 對於目錄而言:此目錄有寫權限的用戶,在該目錄中創建文件時,文件的屬組為目錄的屬組,而不是該用戶的屬組

      設置:chmod g[+|-]s 文件或目錄

  • Sticky:對於一個多人可寫的目錄而言,設置了該權限會導致,每個用戶只能刪除自己的文件

    設置:chmod o[+|-]t 目錄

  • 三種特殊權限對應的數字:
    • SUID:4
    • SGID:2
    • Sticky:1

      註意:以上的所有權限,都只是針對於普通用戶才會生效,對於root用戶而言無效

      設置文件的特定權限:(對root用戶也會生效)

      1. 使文件不能刪除、重命名或更改:chattr +i filename
  1. 取消特定權限:chatter -i filename
  2. 只允許向文件中追加內容:chattr [+|-]a filename
  3. 顯示文件的特定權限: lasttr filename

訪問控制列表ACL:

上述的權限只能是針對某些用戶設定,要想針對某個用戶設置特定的權限,就要用到ACL

  • setfacl命令的用法:
  • 選項:
  • -m, --modify-acl 更改文件的訪問控制列表
  • -M, --modify-file=file 從文件讀取訪問控制列表條目進行更改
  • -x, --remove=acl 根據文件中訪問控制列表移除條目
    setfacl -x u:tank test #清除tank用戶,對test文件acl規則
  • -X, --remove-file=file 從文件讀取訪問控制列表條目並刪除
  • -b, --remove-all 刪除所有擴展訪問控制列表條目
    setfacl -b test #清除所有acl
  • -k, --remove-default 移除默認訪問控制列表
    --set=acl 設定替換當前的文件訪問控制列表
    --set-file=file 從文件中讀取訪問控制列表條目設定
    --mask 重新計算有效權限掩碼
  • -n, --no-mask 不重新計算有效權限掩碼
  • -d, --default 應用到默認訪問控制列表的操作
  • -R, --recursive 遞歸操作子目錄
  • -L, --logical 依照系統邏輯,跟隨符號鏈接
  • -P, --physical 依照自然邏輯,不跟隨符號鏈接
    --restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
    --test 測試模式,並不真正修改訪問控制列表屬性
  • -v, --version 顯示版本並退出
  • -h, --help 顯示本幫助信息
  • 備份和恢復ACL
    主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
    getfacl -R /tmp/dir1 > acl.txt
    setfacl -R -b /tmp/dir1
    setfacl -R --set-file=acl.txt /tmp/dir1
    setfacl --restore acl.txt
    getfacl -R /tmp/dir1

Linux的權限管理:實現資源的分派