9、RedHat7系列——文件權限(二)

一、文件的隱藏屬性

隱藏權限,即被隱藏起來的權限,默認情況下不能直接被用戶發覺。

1、chattr命令

chattr命令用於設置文件的隱藏權限,格式為“chattr [參數] 文件”。

如果想要把某個隱藏功能添加到文件上,則需要在命令後面追加“+參數”,如果想要把某個隱藏功能移出文件,則需要追加“-參數”。

參數

作用

i

無法對文件進行修改;若對目錄設置了該參數,則僅能修改其中的子文件內容而不能新建或刪除文件

a

僅允許補充(追加)內容,無法覆蓋/刪除內容(Append Only)

S

文件內容在變更後立即同步到硬盤(sync)

s

徹底從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區域)

A

不再修改這個文件或目錄的最後訪問時間(atime)

b

不再修改文件或目錄的存取時間

D

檢查壓縮文件中的錯誤

d

使用dump命令備份時忽略本文件/目錄

c

默認將文件或目錄進行壓縮

u

當刪除該文件後依然保留其在硬盤中的數據,方便日後恢復

t

讓文件系統支持尾部合併(tail-merging)

X

可以直接訪問壓縮文件中的內容

示例:

創建一個abc.txt文件後刪除,此時可以刪除成功,再次創建abc.txt文件併為其設置不允許刪除與覆蓋權限後再次刪除提示操作失敗。

9、RedHat7系列——文件權限(二)

2、lsattr命令

lsattr命令用於顯示文件的隱藏權限,格式為“lsattr [參數] 文件”。

文件的隱藏權限必須使用lsattr命令來查看。

使用lsattr查看文件隱藏權限

9、RedHat7系列——文件權限(二)

二、文件訪問控制列表

一般權限、特殊權限、隱藏權限其實有一個共性—權限是針對某一類用戶設置的。如果希望對某個指定的用戶進行單獨的權限控制,就需要用到文件的訪問控制列表(ACL)。

基於普通文件或目錄設置ACL其實就是針對指定的用戶或用戶組設置文件或目錄的操作權限。

如果針對某個目錄設置了ACL,則目錄中的文件會繼承其ACL;若針對文件設置了ACL,則文件不再繼承其所在目錄的ACL。

示例:

切換普通用戶登錄後嘗試進入root家目錄中,在沒有針對普通用戶對root家目錄設置ACL之前提示如下:

9、RedHat7系列——文件權限(二)

1、setfacl命令

setfacl命令用於管理文件的ACL規則,格式為“setfacl [參數] 文件名稱”。

文件的ACL提供的是在所有者、所屬組、其他人的讀/寫/執行權限之外的特殊權限控制,使用setfacl命令可以針對單一用戶或用戶組、單一文件或目錄來進行讀/寫/執行權限的控制。其中,針對目錄文件需要使用-R遞歸參數;針對普通文件則使用-m參數;如果想要刪除某個文件的ACL,則可以使用-b參數。

示例:設置hello用戶在root目錄上的權限:

9、RedHat7系列——文件權限(二)

可以看出文件的權限最後一個點變成了加號,這意味著文件已經設置了ACL。

9、RedHat7系列——文件權限(二)

2、getfacl命令

getfacl命令用於顯示文件上設置的ACL信息,格式為“getfacl 文件名稱”。

示例:使用getfacl命令顯示在root管理員家目錄上設置的所有ACL信息

9、RedHat7系列——文件權限(二)

三、su命令與sudo命令

su命令可以解決切換用戶身份的需求,使得當前用戶在不退出登錄的情況下,順暢地切換到其他用戶,比如從root管理員切換至普通用戶;

另外,當從root管理員切換到普通用戶時是不需要密碼驗證的,而從普通用戶切換成root管理員就需要進行密碼驗證;

使用sudo命令把特定命令的執行權限賦予給指定用戶。

sudo命令用於給普通用戶提供額外的權限來完成原本root管理員才能完成的任務。

格式為“sudo [參數] 命令名稱”。

sudo服務中的可用參數以及作用:

參數

作用

-h

列出幫助信息

-l

列出當前用戶可執行的命令

-u用戶名或UID值

以指定的用戶身份執行命令

-k

清空密碼的有效時間,下次執行sudo時需要再次進行密碼驗證

-b

在後臺執行指定的命令

-p

更改詢問密碼的提示語

sudo命令具有如下功能:

  1. 限制用戶執行指定的命令;

  2. 記錄用戶執行的每一條命令;

  3. 配置文件(/etc/sudoers)提供集中的用戶管理、權限與主機等參數;

  4. 驗證密碼的後5分鐘內(默認值)無須再讓用戶再次驗證密碼;

如果擔心直接修改配置文件會出現問題,則可以使用sudo命令提供的visudo命令來配置用戶權限。這條命令在配置用戶權限時將禁止多個用戶同時修改sudoers配置文件,

還可以對配置文件內的參數進行語法檢查,並在發現參數錯誤時進行報錯。

只有root管理員才可以使用visudo命令編輯sudo服務的配置文件。

9、RedHat7系列——文件權限(二)

在sudo命令的配置文件中,按照下面的格式填寫上相應的信息

9、RedHat7系列——文件權限(二)

誰可以使用 允許使用的主機=(以誰的身份) 可執行命令的列表

切換至指定的普通用戶身份,此時就可以用sudo -l命令查看到所有可執行的命令

9、RedHat7系列——文件權限(二)

作為一名普通用戶是肯定不能看到root管理員的家目錄(/root)中的文件信息的,但是,只需要在想執行的命令前面加上sudo命令就可以了

9、RedHat7系列——文件權限(二)

如果需要讓某個用戶只能使用root管理員的身份執行指定的命令,切記一定要給出該命令的絕對路徑,否則系統會識別不出來。

使用whereis命令找出命令所對應的保存路徑

9、RedHat7系列——文件權限(二)

用戶權限參數修改成對應的路徑

9、RedHat7系列——文件權限(二)

保存退出,再次切換到指定的普通用戶,然後嘗試正常查看某個文件的內容,此時系統提示沒有權限。這時再使用sudo命令就可以順利地查看文件內容

9、RedHat7系列——文件權限(二)

添加NOPASSWD參數,使得用戶執行sudo命令時不再需要密碼驗證,當切換到普通用戶後再執行命令時,就不用再頻繁地驗證密碼

9、RedHat7系列——文件權限(二)


分享到:


相關文章: