Linux的權限管理:實現資源的分派
阿新 • • 發佈:2019-05-15
測試 擁有 -s 規則 默認 ask 子目錄 訪問者 幫助 Linux的權限管理:實現資源的分派
訪問者分類
- owner:所有者
- group:所屬組
- other:其他人
每個文件都對訪問者定義了一種權限
- 權限分類
對於文件來說
- r:讀權限
- w:寫權限
- x:執行權限
對於目錄來說 - r:可以查看目錄中的文件列表
- w:可以在目錄中創建文件
- x:可以進入該目錄
權限對應的數字表示方式 - r:4
- w:2
- x:1
修改權限
- chmod命令:
修改權限的三種方式:
- 數字格式
chmod 640 文件或目錄 :對應的權限 rw-r----- - 直接指明權限
chmod (u,g,o)=(r,w,x)修改文件的屬主或屬組
- 數字格式
- chown命令:
- 修改文件的屬主:chown username 文件或目錄
- 修改文件的屬組: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用戶也會生效)
- 使文件不能刪除、重命名或更改:chattr +i filename
- 取消特定權限:chatter -i filename
- 只允許向文件中追加內容:chattr [+|-]a filename
- 顯示文件的特定權限: 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的權限管理:實現資源的分派