4.1、基本權限
檔案的權限是針對檔案的屬主、屬組以及其他使用者對該檔案的操作限制。通常檔案的基本權限有r(可讀)、w(可寫)、x(可執行),這三個權限對于檔案與目錄又有着不同的含義。
檔案:
r:可讀, 可以使用類似 cat 等指令檢視檔案内容;
w:可寫, 可以編輯此檔案但并不具備删除檔案本身的權限
x: 可執行, eXacutable, 可以指令提示符下當作指令送出給核心運作。
目錄: (若對目錄有寫和執行權限,那麼使用者可以删除目錄中的檔案,無論是否有權限)
r: 可以對此目錄執行ls以列出内部的所有檔案;
w: 可以在此目錄建立檔案;
x: 可以使用cd切換進此目錄,也可以使用ls -l檢視内部檔案的詳細資訊
4.2、建立檔案的預設權限 umask
在建立一個檔案或目錄是,通常會有一個基本權限,此權限由unmsk(遮罩碼)所确定,建立檔案基本權限為:666-umask,檔案預設不能用賦予執行權限,若果算的的結果中有執行權限,其權限應該加1;建立目錄的預設權限為777-umask。
4.3、權限管理指令 chown/chgrp/chmod
chown [option]... [OWNER][:[GROUP]] FILE... 改變檔案屬主或屬組
-R: 遞歸 --reference=要參照的檔案 要修改權限的檔案
chgrp [OPTION]... GROUP FILE... 改變檔案屬組
chmod [OPTION]... MODE[,MODE]... FILE... 改變檔案所屬權限
4.4、檔案通路控制清單 FACL
ACL(Access Control List)通路控制清單,主要的目的是在提供傳統的owner,group,others 的 read,write,execute 權限之外的細部權限配置。ACL 可以針對單一使用者,檔案或目錄來進行r,w,x 的權限規範,對于需要特殊權限的使用狀況非常有幫助。
使用者 (user):可以針對使用者來配置權限;
群組 (group):針對群組為對象來配置其權限;
預設屬性(mask):還可以針對在該目錄下在建立新檔案/目錄時,規範新資料的預設權限;
setfacl
-m: 設定額外的通路控制權限 u:使用者名:權限 檔案 [g:組名:權限 檔案]
-x: 取消額外的通路控制權限 u:使用者名 檔案 [g:組名 檔案]
getfacl: 擷取某一檔案或目錄 ACL 規範
chacl: 改變某一檔案或目錄 ACL 規範
4.5、檔案的隐藏屬性 chattr/lsattr
chattr :設定隐藏屬性
+ : 增加某一個特殊參數, 其它原本存在參數則不動。
- : 移除某一個特殊參數, 其它原本存在參數則不動。
= : 設定一定, 且僅有後面接的參數
a : 當設定 a 之後,這個檔案将隻能增加資料,而不能删除,隻有root才能設定
i : 讓檔案不能被删除、改名、設定連結也無法寫入或新增資料
lsattr :檢視隐藏屬性
-a : 将隐藏檔案的屬性也顯示出來;
-R : 連同子目錄的資料也一并列出來
4.6、 特殊權限位 SUID/SGID
程序的安全上下文:
前提:程序有屬主和屬組;檔案有屬主和屬組;
(1) 任何一個可執行程式檔案能不能啟動為程序: 取決發起者對程式檔案是否擁有執行權限;
(2) 啟動為程序之後, 其程序的屬主為發起者; 程序的屬組為發起者所屬的組;
(3) 程序通路檔案時的權限, 取決于程序的發起者:
(a) 程序的發起者, 同檔案的屬主: 則應用檔案屬主權限;
(b) 程序的發起者, 屬于檔案的屬組; 則應用檔案屬組權限;
(c) 應用檔案“ 其它” 權限;
SUID: SUID 權限僅對二進制程式有效,執行者需要對該程式具有可執行權限,本權限僅有執行該程式的過程中有效,執行者将具有該程式所有者(owner)的權限。
chmod u+s FILE chmod u-s FILE
SGID 設定于檔案:執行者對該程式來說,需要有可執行的權限,執行者執行的過程中将獲得該程式使用者組的支援。
chmod g+s FILE
chmod g-s FILE
SGID 設定于目錄:使用者對此目錄有r與x的權限時,該使用者能進入此目錄,使用者在此目錄下的有效使用者組将變成該目錄的使用者組;使用者建立的新檔案的使用者組與此目錄使用者組相同。
chmod g+s dir
chmod g-s dir
(Sticky)SBIT 隻對目錄有效:目錄加上此權限時,使用者在此目錄中建立的檔案或目錄僅有自己
或 root 能删除。
chmod o+t DIR
chmod o-t DIR
s: 屬主擁有 x 權限
S:屬主沒有 x 權限
s: group 擁有 x 權限
S:group 沒有 x 權限
t: other 擁有 x 權限
T:other 沒有 x 權限
4.7、 sudo 指令的使用
作用:
1、 限制指定使用者在指定主機主機上運作指定的管理指令;
2、 詳細記錄使用者基于 sudo 執行的指令的相關日志資訊;
3、 “ 檢票系統” :使用者第一次執行 sudo 會要求輸入密碼,使用者會獲得一個有固定存活時的“ 入場券”;預設為 5 分鐘;
使用 sudo 的過程:
1、 定義 sudo 授權, /etc/sudoers(配置檔案/etc/sudoers)
配置檔案專用編輯指令: visudo
文法格式: WHO HOST=(WHOM) COMMAND
%WHO HOST=(WHOM) COMMAND(組授權)
别名格式: 别名本身必須使得全大寫字母
User_Alias NAME = User_List
Runas_Alias NAME = Runas_List
Host_Alias NAME = Host_List
Cmnd_Alias NAME = Cmnd_List
授權示例: gentoo ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel
2、 sudo 指令的使用
-l: 檢視目前使用者可執行的 sudo 指令
-u 使用者名 指令:以指定使用者的身份運作後面的“ 指令” ;
-k: 清除“ 入場券” ;
-b 指令: 在背景運作指定的指令
-e 檔案路徑: 不是執行指令, 而修改指定的檔案;
-p 提示語: 可以更改詢問密碼的提示語
%u 變量來替換為使用者名,%h 替換為主機名;
4.8、pam認證子產品
在過去,我們想要對一個使用者進行認證 (authentication),得要要求使用者輸入賬号密碼, 然後透過自行撰寫的程式來判斷該賬号密碼是否正确。也因為如此,我們常常得使用不同的機制來判斷賬号密碼, 是以一台主機上面擁有多個各别的認證系統,也造成賬号密碼可能不同步的驗證問題!為了解決這個問題是以有了 PAM (Pluggable Authentication Modules, 嵌入式子產品) 的機制!
/lib/security/*: PAM 子產品檔案的實際放置目錄;
/etc/security/*: 其他 PAM 環境的配置檔案;
/usr/share/doc/pam-*/: 詳細的 PAM 說明檔案;
/etc/pam.d/*: 每個程式個别的 PAM 配置檔案;
配置檔案文法格式:
type control module-path module-arguments
type: 檢查功能類别
auth: 賬号的認證和授權
account: 與賬号管理相關的非認證功能
password: 使用者修改密碼時密碼檢查規則
session: 使用者擷取到服務之前或使用服務完成之後要進行的一些附加性操作
control: 用于控制認證成功或失敗時要要采取的行為
簡單機制:
required: 此關不過, 仍需檢測同一個棧中的其它子產品, 最後傳回 failure,
認證失敗, 擁有參考其它子產品意見基礎之上的一票否決權;
requisite: 一票否決, 此關不過, 立即傳回 failure;
sufficient: 一票通過, 此關一過, 立即傳回 OK;
optional: 可選子產品
include: 包含進來指定的其它配置檔案中同名棧中的規則, 并進行檢測;
複雜機制: [status1=action1,status2=action2,....]
status: 傳回狀态,
action: ok, done, die, ignore, bad, reset
module-path: 子產品路徑
/lib64/security: 此目錄下的子產品引用時可使用相對路徑;
module-arguments: 子產品參數
<a href="https://s4.51cto.com/wyfs02/M02/8E/DA/wKioL1jNKwfSX020AADNXLdtW6M768.png-wh_500x0-wm_3-wmp_4-s_2614752565.png" target="_blank"></a>
常見的子產品:
pam_unix.so, pam_shells.so, pam_deny.so, pam_permit.so,
pam_securetty.so,pam_listfile.so, pam_cracklib.so, pam_limits.so
本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/1908527,如需轉載請自行聯系原作者